动机:我正在尝试编写脚本,将击键发送到当前关注的窗口。现在我使用xdotool
,它允许我发送原始击键。然而,我希望准确的击键是聚焦窗口中输入插入符号周围当前文本的函数。
问题:有没有一种通用的方法来读取文本输入插入符号的状态——包括它的当前位置以及它周围的文本?直觉上,我想要的内容是当前的"文本框";以及光标在该文本框内的位置。也许这在一般情况下是不可能的,但有没有一种方法可以对emacs和firefox有效?我正在运行Ubuntu Linux
进一步的动机:由于严重的RSI,我通过语音而不是打字来控制电脑。这是通过设置由说出不同短语触发的声控脚本来实现的。在听写英语散文时,在句子开头自动将单词大写会很有帮助。这种自动大写可以通过读取输入插入符号之前的字符来实现,检查它们是否包含句点,如果包含句点,则将我通过语音口述的下一个短语的开头大写。
非常感谢!如果有人能在这里帮助我,这将大大提高我的日常访问能力。
由于X11没有标准小部件工具包,只有大量独立开发的任意工具包,因此没有通用的方法来实现这一点。
就X11和在其级别上运行的工具(如xdotool(而言,只有InputOutput
类型的窗口(即可见窗口,接收事件并可以绘制到(或仅Input
类型的窗口是不可见的,仅接收事件。没有进一步细化的";小部件";可以这么说。你得到了一个像素网格,你可以把它画出来。
可访问性接口是工具包的负担(或者,如果你不使用工具包,那么你就是个坏蛋——你,开发人员(,要实现:https://www.freedesktop.org/wiki/Accessibility/
绝对通用的方法是对当前关注的窗口进行截图,使用基于计算机视觉/机器学习的解决方案来识别插入符号,然后对其周围的文本行进行OCR。老实说,IMHO以的方式进行操作可能比希望正确实现可访问性接口要可靠得多。