首页 > 解决方案 > 在 Linux 上获取输入插入符号周围的文本

问题描述

动机:我正在尝试编写将击键发送到当前焦点窗口的脚本。现在我使用xdotool,它可以让我发送原始击键。但是,我希望确切的击键成为焦点窗口中输入插入符号周围当前文本的函数。

问题:是否有一种通用的方式来读取文本输入插入符号的状态——包括它的当前位置以及它周围的文本?直观地说,我想要当前“文本框”的内容以及光标在该文本框中的位置。也许这在一般情况下是不可能的,但是有没有一种适用于 emacs 和 firefox 的方法呢?我正在运行 Ubuntu Linux

进一步的动机:由于 RSI 的不良情况,我通过语音而不是打字来控制我的计算机。这通过设置通过说出不同短语来触发的语音激活脚本来工作。在听写英文散文时,自动将句子开头的单词大写会很有帮助。这种自动大写可以通过读取输入插入符号之前的字符来完成,检查它们是否包含句点,如果是,则将我通过语音口述的下一个短语的开头大写。

非常感谢!如果有人可以在这里帮助我,那将大大增加我的日常可访问性。

标签: linuxubuntux11voice-recognition

解决方案


由于X11没有标准的widget工具包,只有一堆自主开发的任意工具包,所以没有通用的方法来实现。

就 X11 和在其级别上运行的工具(如 xdotool)而言,只有InputOutput各种窗口(即可见窗口,接收事件并且可以绘制)或Input不可见且仅接收事件的窗口。可以说,没有进一步完善的“小部件”。你得到一个像素网格,你可以画到它。

可访问性接口是工具包的负担(或者如果你不使用工具包——那么你就是个坏蛋——你,开发者),要实现:https ://www.freedesktop.org/wiki/Accessibility/

绝对通用的方法是截取当前聚焦窗口的屏幕截图,采用基于计算机视觉/机器学习的解决方案来识别插入符号,然后 OCR 周围的文本行。老实说,恕我直言,这样做可能比希望正确实现可访问性接口更可靠。


推荐阅读