获取 Xorg 下插入符号(输入文本光标)的 X/Y 位置?

Get X/Y position of caret (input text cursor) under Xorg?

提问人:nkkollaw 提问时间:11/17/2018 最后编辑:nkkollaw 更新时间:11/24/2018 访问量:1068

问:

我想在用户键入的位置上方显示一个弹出框,在 X 上运行的任何 Linux 应用程序(GTK、Qt、Electron 等)中。

我想出了创建弹出框的方法,现在我试图弄清楚如何获取输入文本光标相对于屏幕的坐标(打字时会闪烁什么,不确定它是否被称为“插入符号”?

我知道我可以得到关于鼠标在哪里的信息:xdotool

xdotool getmouselocation

我需要同样的东西,但对于文本光标,在当前聚焦的窗口中。

我不知道如何实现这一目标。如果有人能为我指出正确的方向,我会很高兴。

Linux GTK xorg xdotool

评论

0赞 Jussi Kukkonen 11/17/2018
X 不知道文本输入插入符号在哪里。我认为您的想法是不可实现的(没有应用程序或工具包的合作)。
0赞 Jaffa 11/26/2018
我同意@jku,X 对此没有任何特别之处,只是您单击了某处(如果甚至需要单击)并且它已被应用程序处理。它根本不知道你是否在输入文本!另外,我认为它被称为光标
0赞 nkkollaw 11/27/2018
右。有人告诉我一种方法是使用 GTK 模块。
0赞 kettle 3/22/2021
听起来很有趣。该计划是干什么用的?只是出于好奇,它像开源语法还是什么?
0赞 nkkollaw 3/29/2021
我不知道 Grammarly @linux_kettle是什么,但我试图实现一个带有重音字母的工具提示,例如 macOS 或移动操作系统,它可以通过按住键并在单击时插入重音字母来激活。

答:

0赞 nkkollaw 11/19/2018 #1

因此,在做了一些研究之后,我能够找到一种方法来实现这一点:

  • 用于粘贴一些随机字符串xdotool
  • 使用 OCR 查找随机字符串的坐标
  • 用于删除随机字符串xdotool

问题是这种方法非常慢(最多 10 秒,具体取决于屏幕上的文本量)。

我还尝试比较屏幕截图(插入文本之前/之后),它要快得多,但精度要低得多。