桌面级自动完成

桌面级自动完成

我经常在几个应用程序中输入相同的单词:

  • 编辑器(emacs、vi)
  • 网页浏览器
  • 贝壳

如果上述所有应用程序都能自动完成我上周输入的单词,那就太好了。

他们每个人都有提高打字速度的方法。但是桌面级别的方法是最好的。

例如:“持续集成”。我想要一种快速输入这个词的方法,而无需更改接收输入的程序。

已经存在类似的事情了吗?

答案1

您的请求的解决方案是输入法。

您所描述的内容对于大多数 CJK 语言用户来说都是很熟悉的。让我们回顾一下输入法在当前 Linux 系统中的工作方式。

输入法系统

以下是常见输入法系统的简单架构:

注:我截图自X 输入法协议. 一些箭头与下面的讨论无关。

从历史上看,XIM(X 输入法协议)是唯一的协议。它过于复杂,缺少一些所需的功能。因此,它基本上被废弃了,尽管 GTK、Qt 等流行工具包仍然提供兼容性。

一个现代的输入法系统包含几个部分:

  1. 客户端库支持

    • 通常作为工具包加载的模块实现(例如对于 GTK,请参阅/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules/
  2. 输入法服务器
  3. X 服务器

这些部分如何组合在一起?

用户键入一个键。X 服务器从 evdev 接口接收硬件事件,编写 XEvent 并发送给键盘焦点下的应用程序。应用程序工具包 (GTK、Qt) 输入法模块截取该事件并将信息传递给输入法服务器。输入法服务器判断用户可能需要什么并将一些文本传回 IM 模块。

现在我们来谈谈IM服务器的架构。IM
服务器通常由两部分组成:

  1. IM 框架可处理平台特定的复杂问题,并为 IM 引擎和工具包 IM 模块提供良好的接口。它提供 IM 模块、服务器和引擎使用的 IPC 机制。
  2. 各种 IM 引擎都负责将用户输入的按键转换为所需文本。IM 引擎可以是 IM 服务器加载的共享库,也可以是与 IM 服务器通信的独立进程。
  3. 辅助输入法配置程序提供了友好的用户界面,用于定制IM服务器和引擎行为。

总而言之,即时通讯的作用是将您输入的内容转换为其他内容,并可选择提供预测。

一个例子

我们ibus-pinyin在这里用来输入一些汉字。

汉语拼音的拼音是han yu pin yin。刚开始的时候,你需要输入所有这些字母才能得到四个汉字。但经过几次之后,你只需要输入四个首字h y p y就可以得到一个汉字。

在这种ibus-pinyin情况下,han yu pin yin缩写为h y p y
更先进的 IM 引擎利用统计学习技术来提供更好的预测。没有什么可以阻止您编写英语输入法引擎来提高打字速度。

还有一个好处,除了一些普通的旧 X 程序外,所有工具包都支持输入法。所以这是一个相当通用的解决方案。


感谢 Anders FU Kiær。功能 / Typing-Booster | Fedora 项目 Wiki应该是答案

答案2

看看我的脚本,文字建议

实际操作:

图片

安装:

安装以下软件包:

  • xdotool
  • xclip
  • suckless-tools(为了dmenu

然后分配 2 个键盘快捷键:

  • 一个到'python3 /path/to/TextSuggest.py --noselect
  • 另一个python3 /path/to/TextSuggest.py

第一个将仅提供所有单词的可搜索列表。当您选择了一些文本并希望获得建议/完成时,请使用第二个。

被接受的建议将作为历史记录存储在文件中(然后首先被建议)~/.textsuggest_history.txt

您可以在 定义自定义单词和扩展/别名~/.Custom_Words.txt

答案3

看一眼自动键。它可能符合您的需求。其网站上的 C/P:

AutoKey 是一款适用于 Linux 和 X11 的桌面自动化实用程序。它允许您管理脚本和短语的集合,并为它们分配缩写和热键。这允许您在所使用的任何程序中根据需要执行脚本或插入文本。

相关内容