Hatred's Log Place

DON'T PANIC!

May 22, 2018 - 2 minute read - linux thinkpad

ThinkPad T530: делаем из кнопки Launch1 - SysRq

Он же Print Screen. От которого в неудобном месте мы уже избавились.

До сих пор я не придумал, для чего бы её ещё использовать.

В логах загрузки ядра ищем устройство “ThinkPad Extra Buttons”:

May 18 01:25:08 gaz-laptop kernel: input: ThinkPad Extra Buttons as /devices/platform/thinkpad_acpi/input/input5

И аналогично Print Screen находим скан-код:

sudo evtest /dev/input/event5

Если при запуске evtest у нас выводится неправильное имя, просто перебираем разные устройства.

Выхлоп от нажатия:

Event: time 1527088323.696723, type 4 (EV_MSC), code 4 (MSC_SCAN), value 17
Event: time 1527088323.696723, type 1 (EV_KEY), code 148 (KEY_PROG1), value 1
Event: time 1527088323.696723, -------------- SYN_REPORT ------------

Value - 17.

К сожалению, сделать маппинг через setkeycodes тут не получится, только через HWDB. Открываем на редактирование /lib/udev/hwdb.d/60-keyboard.hwdb, ищем там строку “ThinkPad Extra Buttons”, относящуюся к Lenovo (есть ещё для IBM), копируем строчку идентификации, после чего создаём файл /etc/udev/hwdb.d/70-keyboard.hwdb, который перекроет нужные нам настройки, содержимое с большой долей вероятности будет таким:

# thinkpad_acpi driver
evdev:name:ThinkPad Extra Buttons:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*
 KEYBOARD_KEY_17=sysrq                                  # Override Launch1 to SysRq

Здесь 17 точно соответствует тому номеру, который мы получили от evtest. А имя, это маленькими буквами имя клавиши без префикса KEY_ из /usr/include/linux/input-event-codes.h.

После чего выполняем:

sudo systemd-hwdb update
sudo udevadm trigger /dev/input/event5

Проверяем применимость настроек:

sudo udevadm info /dev/input/event5

Я наблюдаю:

...
E: KEYBOARD_KEY_17=sysrq
...

Значит всё пучком!

Теперь ещё наклейку найти, которая закроет клавишу PrtSc надписью Menu :wink:

Бонусом, мой итоговый файлик /etc/udev/hwdb.d/70-keyboard.hwdb:

# thinkpad_acpi driver
evdev:name:ThinkPad Extra Buttons:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*
 KEYBOARD_KEY_17=sysrq                                  # Override Launch1 (prog1) to SysRq (sysrq)

# T530 default SysRq (PrnScr) button to Menu (Compose)
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*T530*:pvr*
  KEYBOARD_KEY_b7=compose