Проблемы с назначением разных макетов нескольким устройствам одновременного ввода в Linux

343
Nervous Nerve

У меня есть 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 

На данный момент у меня нет идей, и я чувствую, что исчерпал все интернет-ресурсы, так что есть идеи, кто-нибудь?

0

1 ответ на вопрос

0
Govelius

I had the same problem with my Logitech g600 mouse.

I had to make xorg see the mouse as a [slave keyboard]. here is how I solved it:

$ 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"