linux - 在 Linux 上获取输入插入符号周围的文本
问题描述
动机:我正在尝试编写将击键发送到当前焦点窗口的脚本。现在我使用xdotool
,它可以让我发送原始击键。但是,我希望确切的击键成为焦点窗口中输入插入符号周围当前文本的函数。
问题:是否有一种通用的方式来读取文本输入插入符号的状态——包括它的当前位置以及它周围的文本?直观地说,我想要当前“文本框”的内容以及光标在该文本框中的位置。也许这在一般情况下是不可能的,但是有没有一种适用于 emacs 和 firefox 的方法呢?我正在运行 Ubuntu Linux
进一步的动机:由于 RSI 的不良情况,我通过语音而不是打字来控制我的计算机。这通过设置通过说出不同短语来触发的语音激活脚本来工作。在听写英文散文时,自动将句子开头的单词大写会很有帮助。这种自动大写可以通过读取输入插入符号之前的字符来完成,检查它们是否包含句点,如果是,则将我通过语音口述的下一个短语的开头大写。
非常感谢!如果有人可以在这里帮助我,那将大大增加我的日常可访问性。
解决方案
由于X11没有标准的widget工具包,只有一堆自主开发的任意工具包,所以没有通用的方法来实现。
就 X11 和在其级别上运行的工具(如 xdotool)而言,只有InputOutput
各种窗口(即可见窗口,接收事件并且可以绘制)或Input
不可见且仅接收事件的窗口。可以说,没有进一步完善的“小部件”。你得到一个像素网格,你可以画到它。
可访问性接口是工具包的负担(或者如果你不使用工具包——那么你就是个坏蛋——你,开发者),要实现:https ://www.freedesktop.org/wiki/Accessibility/
绝对通用的方法是截取当前聚焦窗口的屏幕截图,采用基于计算机视觉/机器学习的解决方案来识别插入符号,然后 OCR 周围的文本行。老实说,恕我直言,这样做可能比希望正确实现可访问性接口更可靠。
推荐阅读
- mysql - 如果值不在另一个表中,则在一个表中插入该值
- node.js - Mongoose 中的实用模式设计,用于主页中的文章/主题列表以及每个完整的详细文章/主题
- r - 根据条件组合和复制行
- python - Numpy:为什么我不能将一个矩阵分配给另一个矩阵的索引部分?
- javascript - 为什么函数返回不是函数
- printing - 如何使用 OpenLayers 在一定程度上应用比例?
- javascript - 我无法在 Javascript 中的函数之外访问我的数组元素
- python - 如何根据一个变量包含的内容使其他变量为真?
- javascript - redux 加载资源失败:服务器响应状态为 400 (Bad Request)
- html - Angular 6 的日期选择器