USB-клавиатура и setxkbmap
В моем ~/.xinitrc я сбрасываю сопоставления клавиш, запустив команду setxkbmap:
setxkbmap -option ctrl: nocaps, завершить:ctrl_alt_bksp
Но если я подключил USB-клавиатуру после запуска X11, клавиша CapsLock на USB-клавиатуре не сопоставляется с функцией "CTRL", но если я перезапущу приведенную выше команду, она сработает.
Проблема в том, как я могу сделать это автоматически? Если я пытаюсь разобрать сообщения ядра в /var/log/messages, это совсем не круто.
Ценю любой из ваших ответов;-P
2 ответа
Посмотрите hal / dbus / udev или ваш аналог и запустите ваш скрипт при добавлении устройства. Взгляните на https://askubuntu.com/questions/27948/usb-device-changes-using-udev-and-d-bus и http://packages.python.org/pyudev/api/index.html.
Пример приложения с использованием pyudev
$ python watch_the_mouse.py
remove "Logitech USB Optical Mouse"
remove "Logitech USB Optical Mouse"
remove Device(u'/sys/devices/pci0000:00/0000:00:06.1/usb2/2-2/2-2.1/2-2.1:1.0/0003:046D:C05A.002F/hidraw/hidraw0')
remove Device(u'/sys/devices/pci0000:00/0000:00:06.1/usb2/2-2/2-2.1/2-2.1:1.0/input/input53')
remove Device(u'/sys/devices/pci0000:00/0000:00:06.1/usb2/2-2/2-2.1/2-2.1:1.0/0003:046D:C05A.002F')
remove Device(u'/sys/devices/pci0000:00/0000:00:06.1/usb2/2-2/2-2.1/2-2.1:1.0')
remove Device(u'/sys/devices/pci0000:00/0000:00:06.1/usb2/2-2/2-2.1')
add Device(u'/sys/devices/pci0000:00/0000:00:06.1/usb2/2-2/2-2.1')
add Device(u'/sys/devices/pci0000:00/0000:00:06.1/usb2/2-2/2-2.1/2-2.1:1.0')
add Device(u'/sys/devices/pci0000:00/0000:00:06.1/usb2/2-2/2-2.1/2-2.1:1.0/input/input54')
add Device(u'/sys/devices/pci0000:00/0000:00:06.1/usb2/2-2/2-2.1/2-2.1:1.0/0003:046D:C05A.0030')
add Device(u'/sys/devices/pci0000:00/0000:00:06.1/usb2/2-2/2-2.1/2-2.1:1.0/0003:046D:C05A.0030/hidraw/hidraw0')
add "Logitech USB Optical Mouse"
add "Logitech USB Optical Mouse"
Если у вас есть root-доступ, вы можете поместить файл конфигурации xorg (например, 60-keyboard-override.conf) в /etc/X11/xorg.conf.d/
который содержит
Section "InputClass"
Identifier "evdev keyboard catchall"
MatchIsKeyboard "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
Option "XkbOptions" "ctrl:nocaps,terminate:ctrl_alt_bksp"
EndSection
Чтобы проверить это, запустите setxkbmap -query
чтобы увидеть, установлены ли параметры:
rules: evdev
model: pc104
layout: us
options: ctrl:nocaps,terminate:ctrl_alt_bksp