键盘映射在 Linux 中是如何工作的?

Ale*_*x B 18 linux keyboard

我一直无法理解 Linux 中键盘映射和相关内容的组合方式。

当事情打破,这让我热血沸腾,如果我有通过无休止的过时的邮件列表和论坛帖子进行筛选找到THAT一个命令或inputrc文件行修复我的问题。

有一些经典问题,例如退格在 vim 中不起作用,或者Ctrl在 bash 中使用 + 箭头,直到您切换终端类型。或者我最近遇到的一个问题,在新的 Debian 安装@密钥中实际打印", 并"打印@(错误的键盘布局?)

仅查看文件和工具并没有太大帮助。输入法?xmodmap?设置xkbmap?控制台设置?我从哪里开始真正了解它是如何工作的,这样我就不必求助于尝试某人的可疑命令来解决我的键盘问题?

cle*_*lee 15

这比它应该的要复杂得多,但这是我的尝试。

在最基本的层面上,内核知道如何识别键盘设备并理解控制台键盘映射的概念。这是配置键盘的最简单方法,只需考虑一个变量,但这些设置仅影响 Linux 文本控制台上的键盘输入。

一旦你进入 Xorg,事情就会变得有点复杂,但它确实有某种意义。Xorg 有几个特定的​​概念,理解这些概念非常重要。

  • Xorg 直接与键盘设备对话,绕过内核并忽略控制台上指定的键盘映射。
  • Xorg 允许您在 xorg.conf 文件中为您的键盘设置一些特定选项,尽管当前的 Linux 发行版尽力在没有任何 xorg.conf 文件的情况下运行。根据您的 Xorg 版本,您可能需要在InputClass部分(对于较新版本的 Xorg)或InputDevice部分(对于较旧版本)内指定 XkbLayout 。
  • 当按下一个键时,Xorg 中有几个特定的​​解释层。
    1. 在最基本的层面上,每个按键事件都由一个数字键码表示。
    2. XkbModel 结合 XkbLayout 用于将给定的键码与实际的键事件相关联。例如,在我的键盘上,键码 50 生成Shift_L.
    3. 您可以选择为一个键盘指定多个 XkbLayout,然后使用XkbOptions(通常存储在 中的完整列表/usr/share/X11/xkb/rules)来配置如何切换布局。(例如,如果您想自学 Dvorak,或者您想在英语和俄语键盘布局之间交替,这将很有用)。
    4. 每个键码都可以以多种方式解释,具体取决于所持有的修饰符。xmodmap可让您根据所持有的修饰符查看将发送哪些键事件。