在 python 中为 ubuntu 定义键盘布局/输入法?

在 python 中为 ubuntu 定义键盘布局/输入法?

我有点绝望,对在 Linux(这里是 ubuntu 10.04)中定义键盘布局的可能性有点失望。似乎没有任何简单的图形方式来定义键盘映射(除了键盘布局编辑器,但说实话,我看不懂安装说明。安装 antlr?cairo?pango?gobject?生成语法??wtf??)。

我使用的是德式布局的苹果铝制键盘,但无论我做什么,(<>) 和 (^°) 键总是互换的(我确实设法将 f1...f12 键的默认行为从多媒体改回“普通”、以应用程序为中心...您所要做的就是添加行echo 2 > /sys/module/hid_apple/parameters/fnmode.../etc/rc.local这太明显了,我很惭愧我不得不在网上搜索这个!)。

更让我苦恼的是,我发现中文输入法 (IME) 太糟糕了(我尝试过的众多输入法中没有一个能比得上 Windows 版谷歌拼音),而且 ibus 和 scime 都不能让我满意地运行。

我发现 Linux 键盘处理很麻烦。我知道这肯定是计算机科学中最难的问题之一,因为无论是在 Windows 上还是在浏览器 JavaScript 上,这个问题都变得如此复杂。作为一名语言学家,我很清楚正确的文本处理会带来固有的复杂性,但是查看如何配置 xkb 的描述使得建造星际飞船看起来轻而易举。

我的想法如下:

  1. 在系统中找到记录击键的地方;
  2. 使用守护进程(用 python 实现;我听说你必须听 IOCTL 或类似的东西)读出这些代码(可以是扫描码或字符码);
  3. 当出现某些代码组合时,切换它们以执行您想要的操作;
  4. 应用程序现在可以看到 X,而以前可以看到 U,反之亦然;
  5. 利润!

因此,问题是:

  • 在 ubuntu / linux 系统中是否有地方可以读取键盘代码?
  • 有没有办法阻止处理此类键盘操作直到拦截守护进程处理完它们?
  • 我真的能弄乱这样的代码吗?
  • 这样的拦截器是否适用于广泛的用例?例如在命令行中、在 gtk 应用程序中、在 wine 中、在 firefox 中等等?
  • 另一种选择实际上是 grok keyboardlayouteditor,所以如果有人可以发布有关可读的、完整的安装说明或指出可安装的软件包,那就太好了。或者任何类型的可用软件。

答案1

您可以使用 xev 读取键码,也可以使用 xmodmap 映射键码。

例如,如果您想将键码 191 映射到 F13,您可以将以下内容添加到 .Xmodmap 文件:

键码 191 = F13

运行 xmodmap ~/.Xmodmap,现在这个键码为 191 的按钮应该映射到 F13 或您将其映射到的任何位置。

相关内容