问题描述
动机:我正在尝试编写将击键发送到当前焦点窗口的脚本。现在,我使用xdotool
,它可以发送原始的击键。但是,我希望准确的击键是焦点窗口中输入插入符号周围当前文本的函数。
问题:是否存在读取文本输入插入符状态的通用方法-它的当前位置以及周围的文本?直观地,我想要当前“文本框”的内容以及该文本框中光标的位置。也许这在一般情况下是不可能的,但是有没有办法对emacs和firefox起作用呢?我正在运行Ubuntu Linux
进一步的动机:由于RSI的问题,我通过语音而不是打字来控制计算机。这可以通过设置语音激活脚本来实现,该脚本可以通过说出不同的短语来触发。口述英语散文时,在句子开头自动将单词大写会很有帮助。这种自动的大写可以通过读取紧接输入插入符号之前的字符,检查它们是否包含句点以及是否将句号(如果有的话)大写来实现。
非常感谢!如果有人可以在这里帮助我,那将大大提高我的日常访问能力。
解决方法
由于没有用于X11的 standard 小部件工具包,但是只有大量的独立开发的任意工具包,因此没有通用的方法来实现。
就X11和在其级别上运行的工具(如xdotool)而言,只有InputOutput
种类的窗口(即可见的窗口,可以接收事件并且可以吸引到)或仅{ {1}}是不可见的,仅接收事件。可以说,没有进一步完善的“小部件”。您将获得一个可以绘制到的像素网格。
可访问性界面是工具包的负担(或者,如果您不使用工具包–那么您就是坏蛋–您,开发人员),则需要实施https://www.freedesktop.org/wiki/Accessibility/
绝对通用的方法是截取当前聚焦窗口的屏幕快照,采用基于计算机视觉/机器学习的解决方案来识别插入符号,然后对其周围的文字行进行OCR。老实说,恕我直言,这样做 可能比希望正确实现可访问性接口可靠得多。