如何为 Linux 创建自定义键盘布局?

Has*_*san 3 x11 xmodmap xkb keyboard-layout

理想情况下,我正在寻找一个 GUI 工具,也许是一个 Web 应用程序,但是关于为键盘布局创建文本定义的良好文档也会很棒。这里的正常程序是什么?

这个问题中,提问者已经决定使用“setxkbmap”。这是推荐的方式吗?我可以将布局添加到例如 git repo 中,以便我可以在需要时随着时间的推移对其进行更改吗?

Gil*_*il' 7

您可以使用XKeyCaps编辑键盘映射。从好的方面来说,XKeyCaps 是一个 GUI 并且非常成熟。XKeyCaps 的一个缺点是它只是旧式 X 窗口键盘映射界面xmodmap 的前端,而不是现代界面XKB 的前端

如果需要,使用 xmodmap 完全没问题,但它不如 XKB 强大。xmodmap 缺乏的 XKB 功能包括:

  • 更好地处理修饰符。X11 有许多与修饰符相关的怪癖,包括 CapsLock 和 NumLock 被视为修饰符这一事实。我用 XKB 做的但不适用于 xmodmap 的事情的一个例子是我 make Alt+ CapsLockbe Lock(这就是 X11 拼写 Caps Lock 的方式),而不是CapsLock它本身。另一件事xmodmap的不能做的,是有不同的套改性剂影响不同的密钥,例如有ShiftAltGr影响打印字符,但CtrlAlt影响功能键。
  • XKB 由可组合的模块组成。Xmodmap 是单片的。这是伟大的谁想要结合预定义的设置人(“给我一个匈牙利键盘的Ctrl和CapsLock键互换,Alt+WindowsMenu,并为Sun 5键盘的键码”),但你不会在意,因为你制作自己的布局。
  • 如果您热插拔键盘,XKB 系统默认值会重新应用。这也是一个 XKB 限制,因为重新应用系统默认值,而不是您的用户设置。
  • XKB 对非字母语言或多脚本输入有更好的支持。我无法提供详细信息,因为这不是我熟悉的主题。
  • 有一些工具可以在布局之间快速切换(例如具有特定于窗口的布局)或指示仅适用于 XKB 的当前键盘布局。
  • 我不确定 Wayland 是否支持 xmodmap。

网络上有一些 XKB GUI 编辑器,但我能找到的都是那些很快被放弃并且不像 XKeyCaps 那样容易安装的项目。例如,我找不到带有 Ubuntu 软件包的软件包。

如果您决定手动编写键映射,xmodmap 的优点是非常简单。你可以阅读手册页,也许看一个例子,你会很快理解除了修饰符的微妙之处之外的一切。如果您不知道如何使用 xmodmap 来实现,那可能是不可能的。XKB 的优势再次在于它更强大。XKB 的缺点是它很复杂,而且文档也很差。如果你想走这条路,一些建议阅读:

无论您选择哪种方式,键映射源都是文本文件或文本文件的集合,它们与版本控制配合得很好。