我有一台 Linux 机器,我经常在带有内置触控板的标准无线 Logitech 键盘和带有内置迷你键盘的“空中鼠标”之间切换。键盘采用瑞典布局,空中鼠标采用美国布局,我不希望每次切换时都更改 X 中的全局布局。
我进行了广泛搜索并发现了几个类似的讨论,都涉及setxkbmap -device <device> -layout <layout>
解决方案,但无论我如何尝试,该命令总是会改变两个设备的布局。
我认为这可能与以下事实有关:出于某种原因,这两个设备在 中都被列为“指针” xinput -list
。这里,设备 9 是 Logitech 键盘,设备 11 是空中鼠标的键盘部分。
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Logitech Unifying Device. Wireless PID:4032 id=9 [slave pointer (2)]
⎜ ↳ Usb Compliant device Usb Compliant device id=10 [slave pointer (2)]
⎜ ↳ Usb Compliant device Usb Compliant device id=11 [slave pointer (2)]
⎜ ↳ MCE IR Keyboard/Mouse (nuvoton-cir) id=13 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]
↳ Nuvoton w836x7hg Infrared Remote Transceiver id=12 [slave keyboard (3)]
也许不允许设置指针设备的布局,因此我尝试默认设置主布局?我不知道。
我确实尝试使用 将我的设备重新连接到主键盘,xinput reattach 11 3
但这只会给我这个错误消息:
X Error of failed request: XI_BadDevice (invalid Device parameter)
Major opcode of failed request: 131 (XInputExtension)
Minor opcode of failed request: 43 ()
Device id in failed request: 0x17
Serial number of failed request: 18
Current serial number in output stream: 19
此刻我已经没有任何主意了,感觉我已经用尽了所有的互联网资源,所以有人有什么想法吗?
答案1
我的 Logitech g600 鼠标也遇到了同样的问题。
我必须让 xorg 将鼠标视为[从属键盘]。下面是我解决这个问题的方法:
$ cat /etc/X11/xorg.conf.d/10-evdev.conf
Section "InputClass"
Identifier "g600 hack"
Driver "evdev"
MatchUSBID "046d:c24a" # from lsusb
MatchIsKeyboard "true"
Option "IgnoreRelativeAxes" "true"
Option "IgnoreAbsoluteAxes" "true"