答案1
长话短说:在 Linux 上,您应该使用这些evdev
规则。正如 XKB 指南中所述,您链接:
在 Linux 系统上,埃夫德夫规则是最常用的,在其他系统上根据使用规则。
这种差异很大程度上是历史性的。 evdev
是现代 Linux 内核输入子系统,在首次编写 XKB 时并不存在。如果你查看源代码x键盘配置,您会发现evdev
和base
规则都是从(大部分)相同的模板生成的。不过,请将系统 XKB 数据库中生成的文件与 进行比较diff
。您将看到许多条目,其中base
规则加载inet
特定键盘型号的符号,而规则则evdev
取消了大多数特定于型号的条目并加载更通用的集:
/usr/share/X11/xkb/rules/base:
[...]
! model = symbols
a4techKB21 = +inet(media_nav_common)
asus_laptop = +inet(media_common)
acer_tm_800 = +inet(acer_laptop)
benqx730 = +inet(benqx)
btc9116u = +inet(btc9019u)
chromebook = +inet(chromebook)
dellsk8125 = +inet(dell)
// and about 50 more lines
// generated from xkeyboard-config/rules/base.m_s.part
/usr/share/X11/xkb/rules/evdev
[...]
! model = symbols
$evdevkbds = +inet(evdev)+inet(%m)
chromebook = +inet(evdev)+inet(chromebook)
applealu_jis = +inet(evdev)+macintosh_vndr/jp(alujiskeys)
* = +inet(evdev)
// ...that's all.
// generated from xkeyboard-config/rules/evdev.m_s.part
不,实际上,这是规则中的整个模型到符号部分evdev
,而该base
版本有 60 多行长。该evdev.m_s.part
文件是该规则部分的源模板;它是模型到符号的映射(!model = symbol
该部分开头的行;因此m_s
在文件名中)。规则的唯一其他特定于 evdev 的部分来自该evdev.m_k.part
文件,它是模型到键码的映射(!model = keycodes
规则的部分),并且其中的差异是相似的。
欲了解更多详情,请参阅键码和符号这些规则引用的文件(尤其/usr/share/X11/xkb/keycodes/evdev
是 和/usr/share/X11/xkb/symbols/inet
)。您可能感兴趣XKB 规则格式的这篇文章。