Постоянный нулевой ввод
У меня Lenovo Ideapad 700 с Antergos. Похоже, что каждую секунду происходит постоянный ввод, что не позволяет мне прокручивать в терминале или использовать tty. Это вывод с использованием
$ xev
KeyPress event, serial 38, synthetic NO, window 0x5400001,
root 0x153, subw 0x0, time 7416716, (262,3), root:(1124,458),
state 0x0, keycode 221 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
Я уже пытался отключить блокировку Fn в BIOS, но это не помогло. Кто-нибудь знает, как это исправить или получить дополнительную информацию, откуда поступает эта информация?
1 ответ
Ядро Linux 4.13 представило драйвер peaq_wmi, который обрабатывает горячие клавиши на планшетах PEAQ (в частности, кнопку "Dolby" на PEAQ PMM C1010).
Драйвер загружается для определенного GUID объекта WMI, который находится в микропрограмме системы (в таблицах ACPI). К сожалению, разработчики прошивки PEAQ не сгенерировали уникальный GUID - они просто скопировали его из примера драйвера WMI от Microsoft.
Кроме того, к сожалению, они были не единственным производителем, который сделал это - тот же GUID WMI можно найти в прошивке Lenovo, где он, конечно, имеет совершенно другое значение. Когда драйвер загружается в несовместимую систему, он получает мусор и считает, что кнопка всегда нажата.
К сожалению, реальная прошивка PEAQ не уведомляет ОС при каждом нажатии кнопки; вместо этого ОС должна повторно опросить ее статус. Таким образом, драйвер продолжает получать один и тот же результат мусора каждую секунду.
Драйвер был недавно исправлен, чтобы также проверить имя производителя системы, и это исправление должно скоро достигнуть стабильных ядер (4.14.x, 4.13.x). В то же время вы можете удалить модуль с помощью:
modprobe -r peaq_wmi
и / или занести его в черный список /etc/modprobe.d
или с помощью параметра ядра:
modprobe.blacklist=peaq_wmi
В будущем для устранения таких проблем используйте инструменты, которые сообщают об отдельных устройствах ввода; например, evemu-record
или же libinput debug-events
, (The xinput
инструмент также может делать это внутри X11.) Это может сузить его до конкретного драйвера.
(Или вы можете пройти через все коммиты Git с 4.12 по 4.13, пока не найдете тот, который заставляет вас думать, что "этот новый модуль выглядит забавно, интересно, что произойдет, когда вы его выгружаете")