Проблемы с клавишей калькулятора на ноутбуке 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.