我为我的默认笔记本电脑键盘和添加的其他键盘提供了一个自定义键盘布局,设置/etc/X11/xorg.conf.d/00-keyboard.conf
如下:
Section "InputClass"
Identifier "system-keyboard"
MatchIsKeyboard "on"
Option "XkbLayout" "dxkb"
Option "XkbVariant" "main"
EndSection
但最近我制作了一个 Lily58 键盘,我想制作一个键盘映射的变体,使其自动应用于 Lily58,但不适用于其他键盘,如下所示:
Section "InputClass"
Identifier "Lily58"
MatchIsKeyboard "on"
Option "XkbLayout" "dxkb"
Option "XkbVariant" "lily58"
EndSection
问题在于如何找出 Lily58 的标识符。我找到的所有资源都只提到了标识符system-keyboard
,但没有提到特定键盘的标识符,并且使用Lily58
上述方法似乎无法识别键盘。我如何找出键盘的正确标识符?
标识符毫无意义。您可以将其设置为
Identifier "Custom layout for my Lily58"
,它会执行相同的操作(即不执行任何操作)。使用各种关键字指定模型特定的限制,如在xorg.conf(5)手册页(以及libinput(4)手册页最末尾的注释)
Match*
中所述。Xorg 本身在其 10-quirks.conf 中附带了一些此类配置。Linux 上的 Xorg 从 udev 获取其设备信息;我不知道是否有一种简单的方法来获取给定 X 输入设备的所有“匹配”字段,但 USB ID 是一个简单的方法 - 运行
lsusb
并获取设备的 VVVV:PPPP 编号并将其放入 MatchUSBID 中。似乎 Xorg 每当检测到设备时就会将属性转储到 xorg.log 中,但我不知道如何激活这种日志记录。
获取匹配字段的较难的方法是:
用于
sudo libinput list-devices
查找键盘的 /dev/input/event* 路径。运行
udevadm info /dev/input/eventXX
并查看第一行以获取其 sysfs 路径。(它以 开头/devices
– 将其编辑为/sys/devices
。Udevadm 就是这样的。)从 sysfs 路径的末尾修剪
/event*
,以获取父input*
设备,并udevadm info
在其上运行。例如,我的 Logitech USB 接收器是/sys/devices/pci…/…/input/input16
。寻找以下属性:
NAME=
ID_VENDOR=
PRODUCT=
Xorg 实际上还会查找名为、等的 udev 属性,
XkbRules
并将XkbLayout
它们直接导入到输入设备设置中,因此也可以编写 udev 规则: