桌面级别的自动完成

gue*_*tli 12 usability desktop-environments

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

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

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

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

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

已经有这样的东西了吗?

sgx*_*gx1 7

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

您所描述的内容是大多数 CJK 语言用户所熟悉的。让我们回顾一下输入法在当前 Linux 系统中是如何工作的。

输入法系统

下面是一个通用输入法系统的简单架构:

注意:我从The X Input Method Protocol截取了这张图片。一些箭头与以下讨论无关。

历史上,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服务器和引擎行为提供了友好的用户界面。

总而言之,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。特点/打字助推器| Fedora Project Wiki应该是答案


小智 5

看看我的脚本TextSuggest

行动中:

伊姆古尔

安装:

安装以下软件包:

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

然后指定 2 个键盘快捷键:

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

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

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

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