Удваивается нажатие клавиши Fn
Уважаемые коллеги,
Являюсь обладателем ноута HP 6735s, поставил на него Gentoo, иксы и проч. В процессе установки иксов познал HAL. И взалкал я заставить работать клавиши Fn на клавиатуре ноута - регулировку яркости, громкости и проч. Познал ACPI, понял, что HP эти клавиши не генерируют события ACPI и их надо ловить через actkbd - здесь же, на форуме, есть статьи по этому вопросу.
Но вот какое дело и чего я никак не могу понять - клавиша Fn+F1 генерирует "код нажатия + кода отпускания" и его по showkey видно:
клавиша 138 нажата
клавиша 138 отпущена
зато клавиша Fn+F2 генерирует уже:
клавиша 29 нажата
клавиша 25 нажата
клавиша 25 отпущена
клавиша 29 отпущена
а клавиши Fn+F9 и Fn+F10 не генерируют вообще ничего.
Ещё интереснее, что showkey показываетдля клавиши Fn+F11:
клавиша 114 нажата
клавиша 114 отпущена
клавиша 114 нажата
клавиша 114 отпущена
При этом lshal -m при нажатии Fn+F1 выдаёт одно событие "Button pressed = имя кнопки", при нажатии Fn+F2 - не выдаёт вообще ничего, при нажатии Fn+F9 и Fn+F10 тоже нет ничего, а при нажати Fn+F11 он выдаёт два события "Button pressed = volume-down"
Т.е. где-то внутри есть некий слой, который... в одном случае пропускает скан-код, в другом - вместо него вставляет другой скан-код (не удаляя старого), в третьем - вообще не пропускает скан-кода. Моих знаний не хватает понять, где структурно хотя бы искать этот слой - я пробовал искать в определениях HAL, но там кнопке (и команда lshal это показывает) Fn+F11 приписано значение "volumedown", а lshal -m - показывает "volume-down", т.е. эти все определения откуда-то не оттуда.
До собственно X дело ещё не дошло. Xev показывает другие численные коды, но те же самые конфигурации кодов, что и просто консоль.
Я буду очень признателен всем, кто объяснит хотя бы не "что делать", а "как оно устроено", из каких компонентов состоит и как передаётся сигнал со слоя на слой. Я просто не понимаю, куда рыть. Известные Гуглю руководства либо десятилетней давности, либо вообще не о том, либо не подтверждаются ноутом. При этом уже понятно, что у ASUS и HP разная раскладка этих событий - у ASUS они заводятся на ACPI, а у HP - нет.
- Для комментирования войдите или зарегистрируйтесь
dmesg покажи.
dmesg покажи.
[ 0.000000] Initializing
А если загрузиться с
А если загрузиться с acpi=off, то что происходит? У меня такая же проблема была, пока биос не обновил. В общем было ACPI: BIOS _OSI(Linux) quered ignored и не работало, что под linux, что под windows. Обновил BIOS все равно пишет
ACPI: BIOS _OSI(Linux) quered ignored, но при этом работают все клавиши.
Ща. Пересоберу ядро с
Ща. Пересоберу ядро с командной строкой и сообщу!
ядро-то зачем пересобирать?
ядро-то зачем пересобирать?
Ну да. Это я повёлся на бегло
Ну да. Это я повёлся на бегло понятую строку из хелпа. При точном прочтении оказалось, что незачем :) Тяжёлое детство, английский как иностранный...
В общем, при acpi=off изменения следующие. Клавиша Fn+F1 перестаёт работать вообще - showkey её не видит, lshal -m ничего не выдаёт при её нажатии.
Fn+F2 - выдаёт то же самое, т.е. два вложенных кода по showkey и ничего по lshal -m
Fn+F3 не работает совсем - ни showkey, ни lsmod -m, раньше работала
При нажатии Fn+F4 кодов не выдаётся, зато моргает экран. Раньше не моргал, выдавались коды.
Клавиша Fn+F5 раньше выдавала коды, теперь нет, зато Fn+F6 выдаёт код coffie
Cтали работать Fn+F7 (уменьшение яркости) и Fn+F8 (увеличение яркости) - они перестали выдавать коды, вместо этого стала меняться яркость экрана.
Не выдают кодов ни в showkey, ни в lshal -m Fn+F9,Fn+F10,Fn+F11,Fn+F12. Раньше Fn+F9,Fn+F10 тоже не выдавали, а Fn+F11,Fn+F12 - удваивали.
В общем, я внутренне уже готов к перепрошивке биоса... :(