获取 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 位置?的主要内容,如果未能解决你的问题,请参考以下文章