Проблемы с клавишей калькулятора на ноутбуке HP

У меня есть новый ноутбук HP Omen 15, 2020 года выпуска. У меня есть Calculatorключ, и я не могу получить его для запуска калькулятора в Ubuntu 20.04.

Когда я нажимаю Calculatorклавишу, ничего не происходит. Я также не могу назначить ярлык для этой клавиши в соответствующей программе конфигурации из среды рабочего стола. Я пробовал KDE с оболочкой Plasma и Gnome (полагаю, она запускается, если я выбираю сеанс «Ubuntu» на экране входа в диспетчер дисплея). Эти программы предлагают «Нажмите нужную клавишу», но не видят Calculatorнажатия клавиш.

Я пробовал отлаживать ситуацию с помощью утилит и .

Если я бегу и нажимаю Calculator, я вижу безумно много сообщений о нажатии и отпускании клавиши:

      ...
KeyRelease event, serial 42, synthetic NO, window 0x3e00001,
root 0x29e, subw 0x0, time 52918, (151,-96), root:(151,806),
state 0x14, keycode 148 (keysym 0x1008ff1d, XF86Calculator), same_screen YES,
XLookupString gives 0 bytes: 
XFilterEvent returns: False

KeyPress event, serial 42, synthetic NO, window 0x3e00001,
root 0x29e, subw 0x0, time 52918, (151,-96), root:(151,806),
state 0x14, keycode 148 (keysym 0x1008ff1d, XF86Calculator), same_screen YES,
XLookupString gives 0 bytes: 
XmbLookupString gives 0 bytes: 
XFilterEvent returns: False

KeyRelease event, serial 42, synthetic NO, window 0x3e00001,
root 0x29e, subw 0x0, time 52958, (151,-96), root:(151,806),
state 0x14, keycode 148 (keysym 0x1008ff1d, XF86Calculator), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False

KeyPress event, serial 42, synthetic NO, window 0x3e00001,
root 0x29e, subw 0x0, time 52958, (151,-96), root:(151,806),
state 0x14, keycode 148 (keysym 0x1008ff1d, XF86Calculator), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False

KeyRelease event, serial 42, synthetic NO, window 0x3e00001,
root 0x29e, subw 0x0, time 52999, (151,-96), root:(151,806),
state 0x14, keycode 148 (keysym 0x1008ff1d, XF86Calculator), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
...

Затем я нажимаю Ctrl-C, чтобы остановить его. Если я побегу xevопять же, он не показывает никаких событий на Calculatorключе. Если я побегу dmesg, он показывает такие сообщения, как [ 5685.955273] kauditd_printk_skb: 46 callbacks suppressed. Вероятно, этот ключ по-прежнему генерирует события пресс-релиза, но ядро ​​их подавляет.

Вероятно, это и есть причина бага.

Если я побегу showkey, он всегда показывает коды сканирования и коды клавиш, если я нажимаю Calculatorклавишу:

      $ sudo showkey -s
kb mode was ?UNKNOWN?
[ if you are trying this under X, it might not work
since the X server is also reading /dev/console ]

press any key (program terminates 10s after last keypress)...
0x9c
0xe0 0x21
0x1d
^Ccaught signal 2, cleaning up...
0xe0 0x21
      $ sudo showkey -k
kb mode was ?UNKNOWN?
[ if you are trying this under X, it might not work
since the X server is also reading /dev/console ]

press any key (program terminates 10s after last keypress)...
keycode  28 release
keycode 140 press
keycode  29 press
^Ccaught signal 2, cleaning up...

В целом, похоже, что эта клавиша является обычной мультимедийной клавишей, которая правильно сопоставлена ​​с XF86Calculator.

Итак, не могли бы вы дать мне какие-либо подсказки, как заставить его работать?

Готов предоставить любую дополнительную информацию о моем ноутбуке и ОС.

Я также думаю, что я мог бы попытаться исправить эту ошибку самостоятельно. Однако в настоящее время я понятия не имею, какой модуль отлаживать.

Обновление . Обнаружено, что вход в систему и выход из нее иногда восстанавливает ключ калькулятора. Например, если я запускаю KDE Plasma, нажимаю клавишу «Калькулятор», затем выхожу из системы и запускаю Ubuntu на Wayland, тогда я снова могу запустить калькулятор.

Update2 Вики-страница устранения неполадок с горячими клавишами Ubuntu содержит описание случая, который, кажется, точно мой. Случай 4.b — «если слишком много событий нажатия клавиш, вам нужно определить, где они дублируются». Однако это все. Так что буду признателен за подсказки, как это определить.

Обновление 3. Я дважды пытался связаться с Кристофером Пеньялвером, автором этой вики-страницы, однако не получил ответа на свои письма. Копнув дальше, я обнаружил, что проблема может быть в правилах udev для моей клавиатуры. Отправили отчет об ошибке на Launchpad: https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1929345

1 ответ

Наконец-то это было исправлено! Спасибо кому-то на Github!

Проблема была в базе данных udev, PR, исправляющий ее, слит, надеюсь, она будет работать после одного из следующих обновлений.

Решение здесь

https://github.com/pelrun/hp-omen-linux-module/issues/9#issuecomment-936474113

В файл нужно добавить следующие строки /usr/lib/udev/hwdb.d/60-keyboard.hwdb

      # HP Omen 15
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP:pnOMENLaptop15*:pvr*
 KEYBOARD_KEY_a1=!calc

Обновлять

Лучшее решение, пока в пакетах не появится свежая версия HWDB, - поместить эти строки в файл /etc/udev/hwdb.d/70-keyboard.hwdb

Затем запустите sudo systemd-hwdb update

Эти строки были включены в systemd v250.

В настоящее время (05 января 2022 г.) версия systemd на моем KUbuntu 20.04 — 245.

Другие вопросы по тегам