在桌面级别自动完成


11

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

  • 编辑器(emacs,vi)
  • 网页浏览器
  • 炮弹

可以自动完成我在上周输入的所有上述应用程序中输入的单词。

他们每个人都有提高打字速度的方法。但是在台式机级别上最好的是。

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

已经有这样的东西了吗?


Soetihng喜欢Synapse(lifehacker.com/5704221/…)吗?
塞勒姆2014年

我认为它们的含义类似于LibreOffice的自动完成功能。它会保存您键入的单词(满足可定制的长度要求)。当您输入已保存单词的前几个字母时,它会提示您输入其余单词,您可以点击Tab键输入该单词,或者继续输入以拒绝它。
安迪·卡斯蒂利亚2014年

Answers:


7

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

您所描述的是大多数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服务器和引擎行为。

总而言之,IM所做的就是将您键入的内容转换为其他内容,并有选择地提供预测。

一个例子

我们ibus-pinyin在这里使用一些中文字符。

汉语拼音的罗马化为han yu pin yin。首先,您需要输入所有这些字母以获得四个汉字。但是过了几次,您只需要键入四个初始字符h y p y即可获得中文字符。

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

另外,所有工具箱都支持输入法,但一些普通的旧X程序除外。因此,这是一个非常通用的解决方案。


感谢Anders FUKiær。功能/打字助推器| Fedora Project Wiki应该是答案


1
最常用的IM框架是ibus。如果我有时间,我将致力于编写IM引擎来做到这一点。如果您有概念验证代码,任何人都可以尝试并留下链接。
sgx1 2014年



您的答案是最好的。我给您赏金:-)
guettli 2014年

3

看一下我的脚本TextSuggest

实际上:

伊姆古尔

安装:

安装以下软件包:

  • xdotool
  • xclip
  • suckless-tools(用于dmenu

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

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

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

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

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


0

看一下Autokey。它可能适合您的需求。来自他们站点的C / P:

AutoKey是用于Linux和X11的桌面自动化实用程序。它使您可以管理脚本和短语的集合,并为其分配缩写和热键。这使您可以在使用的任何程序中执行脚本或按需插入文本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.