键映射与 OSI 模型具有类似的流程,尽管定义不那么明确。我目前正在以比我想要的更高的级别重新映射。显然,第 1 层对应于物理键盘,第 7 层对应于应用程序,但我不确定还有多少其他层或它们的排列位置。
如果这是一台带有专用可编程物理键盘的台式机,我就可以了,但可惜,这是一台笔记本电脑,我需要在使用内置键盘时维护重新映射。
FWIW,我正在交换以下键对:[Tilde/Esc]、[Caps/LCtrl]、[Back{space,slash}]。我也使用 Dvorak,但它是在操作系统中以标准方式配置的。
目前,我正在修改 /usr/share/X11/xkb/keycodes/evdev 以在 X 中进行更改(并为控制台创建自定义布局文件,但这与此处无关)。我不确定它在“层堆栈”中的位置。
问题:我的键盘映射无法转换为使用 Web VNC 客户端的 Proxmox 控制台会话。(布局也不适用,但这是预期的。)问题显然是 VNC 客户端将键盘挂接到尚未应用 evdev 重新映射的较低层。
在 Windows 中,我使用一个名为 KeyTweak 的实用程序来生成注册表的扫描码映射,这似乎基本上是“第 3 层”。我玩过的游戏显然将键盘挂在“第 2 层”,但这几乎不成问题,因为大多数游戏中的输入很少。
总之,我不确定 evdev 在我想象的 OSI 键盘模型中的位置,但如何在较低层重新映射?我不需要出于任何原因换出重新映射,因此这种更改基本上可以是永久性的。如果我能在 BIOS 中做到这一点,我会的。