我经常在几个应用程序中输入相同的单词:
- 编辑器(emacs、vi)
- 网页浏览器
- 贝壳
如果上述所有应用程序都能自动完成我上周输入的单词,那就太好了。
他们每个人都有提高打字速度的方法。但是桌面级别的方法是最好的。
例如:“持续集成”。我想要一种快速输入这个词的方法,而无需更改接收输入的程序。
已经存在类似的事情了吗?
答案1
您的请求的解决方案是输入法。
您所描述的内容对于大多数 CJK 语言用户来说都是很熟悉的。让我们回顾一下输入法在当前 Linux 系统中的工作方式。
输入法系统
以下是常见输入法系统的简单架构:
注:我截图自X 输入法协议. 一些箭头与下面的讨论无关。
从历史上看,XIM(X 输入法协议)是唯一的协议。它过于复杂,缺少一些所需的功能。因此,它基本上被废弃了,尽管 GTK、Qt 等流行工具包仍然提供兼容性。
一个现代的输入法系统包含几个部分:
客户端库支持
- 通常作为工具包加载的模块实现(例如对于 GTK,请参阅
/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules/
)
- 通常作为工具包加载的模块实现(例如对于 GTK,请参阅
- 输入法服务器
- X 服务器
这些部分如何组合在一起?
用户键入一个键。X 服务器从 evdev 接口接收硬件事件,编写 XEvent 并发送给键盘焦点下的应用程序。应用程序工具包 (GTK、Qt) 输入法模块截取该事件并将信息传递给输入法服务器。输入法服务器判断用户可能需要什么并将一些文本传回 IM 模块。
现在我们来谈谈IM服务器的架构。IM
服务器通常由两部分组成:
- IM 框架可处理平台特定的复杂问题,并为 IM 引擎和工具包 IM 模块提供良好的接口。它提供 IM 模块、服务器和引擎使用的 IPC 机制。
- 各种 IM 引擎都负责将用户输入的按键转换为所需文本。IM 引擎可以是 IM 服务器加载的共享库,也可以是与 IM 服务器通信的独立进程。
- 辅助输入法配置程序提供了友好的用户界面,用于定制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 的桌面自动化实用程序。它允许您管理脚本和短语的集合,并为它们分配缩写和热键。这允许您在所使用的任何程序中根据需要执行脚本或插入文本。