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

Posted

技术标签:

【中文标题】获取 Xorg 下插入符号(输入文本光标)的 X/Y 位置?【英文标题】:Get X/Y position of caret (input text cursor) under Xorg? 【发布时间】:2019-04-20 03:56:54 【问题描述】:

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

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

我知道我可以通过xdotool 获得有关鼠标位置的信息:

xdotool getmouselocation

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

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

【问题讨论】:

X 不知道文本输入插入符号在哪里。我不认为你的想法是可以实现的(没有应用程序或工具包的合作)。 我同意@jku,X 对此一无所知,只是您单击了某处(如果甚至需要单击)并且它已由应用程序处理。它根本不知道您是否在输入文本!另外,我认为它被称为游标 对。有人告诉我一种方法是使用 GTK 模块。 听起来很有趣。程序是干什么用的?只是出于好奇,它是像一个语法上的开源还是什么? 我不知道语法是什么@linux_kettle,但我试图实现一个带有重音字母的工具提示,如 macOS 或移动操作系统,它可以通过按住一个键并插入重音字母来激活点击。 【参考方案1】:

所以,在做了一些研究之后,我找到了一种实现方法:

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

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

我也尝试过比较屏幕截图(插入文本之前/之后),速度更快,但精确度要低很多。

【讨论】:

以上是关于获取 Xorg 下插入符号(输入文本光标)的 X/Y 位置?的主要内容,如果未能解决你的问题,请参考以下文章

反应本机文本输入,按下时更改光标位置

获取输入元素的光标或文本位置(以像素为单位)

获取输入元素的光标或文本位置(以像素为单位)

获取文本输入字段中的光标位置(以字符为单位)

获取文本输入字段中的光标位置(以字符为单位)

JS-onclick函数将文本字符符号插入到光标处的文本输入字段或文本区域