Ноут Lenovo Yoga 710-11isk. Клавиша fn+F6 используется для переключения состояния тачпада. В быту не самая полезная клавиша, но есть одно НО.
Ноут раскладывается на 360 градусов и может использоваться как планшет с сенсорным экраном. В таком режиме клавиатура и тачпад должны быть отключены, т.к. будут выполнять роль днища и могут быть задеты. Без каких либо драйверов, «из коробки» в линуксе отключается клава, когда я раскрываю крышку ноута на 360*, но продолжает работать тачпад.
Есть arch-wiki старшего брата это модели - Yoga 900. Где для решения этой проблемы предлагают добавить hwdb правило. Правило это у меня не работает. И с написанием этого правила мне и нужна ваша помощь.
1. Не уверен, что правильно составляю селектор.
В вики hwdb-маппинга для разных селекторов необходимо знать: bus_id, vendor_id, product_id, version_id, input device name. Из всего этого у меня есть только bus_id и dev_name:
# xinput list-props 17
Device 'AT Translated Set 2 keyboard':
Device Enabled (143): 1
Coordinate Transformation Matrix (145): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Send Events Modes Available (265): 1, 0
libinput Send Events Mode Enabled (266): 0, 0
libinput Send Events Mode Enabled Default (267): 0, 0
Device Node (268): "/dev/input/event4"
Device Product ID (269): 1, 1
# udevadm info -r /dev/input/event4
P: /devices/platform/i8042/serio0/input/input4/event4
N: input/event4
E: DEVNAME=/dev/input/event4
E: DEVPATH=/devices/platform/i8042/serio0/input/input4/event4
E: ID_BUS=i8042
E: ID_INPUT=1
E: ID_INPUT_KEY=1
E: ID_INPUT_KEYBOARD=1
E: LIBINPUT_ATTR_KEYBOARD_INTEGRATION=internal
E: LIBINPUT_DEVICE_GROUP=11/1/1/ab83:isa0060/serio0
E: MAJOR=13
E: MINOR=68
E: SUBSYSTEM=input
E: TAGS=:power-switch:
E: USEC_INITIALIZED=4129888
Где взять остальные идентификаторы клавиатуры?
2. Не знаю какой скан-код я должен использовать.
На нажатие этой fn+F6 клавиши не реагируют:
# libinput debug-events
# showkey -s
# evtest /dev/input/event4
# dmesg
Не имея опыта написания hwdb правил я не знаю, должны ли они ваще реагировать до того, как я подключу эту клавишу. И поскольку сканкод этими утилитами я получить не смог - я использовал сканкод из вики Yoga 900.
Из всего, что у меня есть я слепил вот такое правило с 3 селекторами, которые по очереди проверял:
#evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:pvrLenovoYOGA900*
#evdev:input:bi8042
evdev:name:/dev/input/event4
KEYBOARD_KEY_bf=f21
после сохранения правила выполнял systemd-hwdb update и udevadm trigger от рута, но результата не получал, перезагружался и все равно не было эффекта.
Как все таки составить это правило? Нормально ли, что я не могу получить сканкод этой клавиши? Помимо fn+F6 я так же могу получить сканкод для fn+F7, которая используется для отключения радио-модулей(wifi, bt), но она точно работает, т.к. радио модули включаются/отключаются по ее нажатию, чего не скажешь о тачпаде.