Давно не пользовался нетбуком MSI Wind U100 (видеокарта intel 945GSE), накатил на него генту. Т.к. это может быть важно, у меня systemd. Конфиг ядра. dmesg (с кучей багов с видеокартой). Ещё systemd-logind где-то писал ошибку kernel does not support evdev-revocation
, но я уже не могу найти её ни в каком логе.
Суть заключается в том, что я обнаружил, что при нажатии кнопочек яркости она меняется на две ступени сразу. sudo showkey
из-под иксов (там KDE 4) действительно показывал двойные нажатия клавиш. Потыкался по /dev/input/event* и оказалось, что события идут из event4 (Video Bus) и из event5 (AT Translated Set 2 keyboard). Проблема знакомая — на моём другом ноуте та же фигня. Поэтому первым делом я решил применить решение с другого ноута — сказать иксам игнорировать Video Bus:
/etc/udev/rules.d/90-intel-quirks.rules:
ACTION=="add", KERNEL=="event*", ENV{ID_PATH}=="acpi-LNXVIDEO:00", ENV{ID_INPUT.tags}="intel-video-bus"
/etc/X11/xorg.conf.d/90-intel-quirks.conf:
Section "InputClass"
Identifier "Ignore Intel brightness keys"
MatchTag "intel-video-bus"
Option "Ignore" "on"
EndSection
После перезагрузки или перезапуска иксов (не имеет значения) результат оказался неожиданным. Из /dev/input/event5 события клавиш яркости больше не сыпались! При этом event5 — это клавиатура, обычные клавиши работали и сыпались из файла. А event4 игнорировался моим конфигом, поэтому яркость вообще не регулировалась. Номера evdev'ов не менялись, это я проверяю каждый раз. Если убрать /etc/X11/xorg.conf.d/90-intel-quirks.conf, то события снова начинают сыпаться и из /dev/input/event4, и из /dev/input/event5. Это мне показалось очень и очень странным.
Но ещё более странным оказалось то, что как только я переключаюсь на виртуальный терминал, события клавиш яркости из event5 сразу же перестают сыпаться!
Из этого я делаю вывод: если Xorg не игнорирует Video Bus, то он что-то делает, что в иксах кнопочки яркости начинают сыпаться и из event5. Это какая-то магия, и я прошу кого-нибудь объяснить, как же это работает.
Вдобавок стоит сказать, что в hwdb для моего ноута настроены следующие маппинги клавиш:
KEYBOARD_KEY_f7=brightnessdown # Fn+F4
KEYBOARD_KEY_f8=brightnessup # Fn+F5
Если их убрать из hwdb, то события из event5 продолжают сыпяться по тому же правилу, но т.к. коды клавиш другие, яркость переключается по одной ступеньке. Это можно считать workaround'ом моей проблемы, но мой вопрос в том, как же работает вышеописанная магия?