Как переопределить кнопки на клавиатуре в Linux

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Мне было неудобно, что расположение клавиш End, Page Up и PageDown на моей клавиатуре A4Tech FS не совпадало с их расположением на ноутбуке. Решил переставить, но не нашел толковой инструкции на этот счет в интернете, решил написать тут, вдруг кому пригодится. На самом деле всё просто, доступно каждому.

Всё время пальцы путают End и PageDown, жутко неудобною
Всё время пальцы путают End и PageDown, жутко неудобною

В современном Linux (у меня одна из сравнительно свежих версий Ubuntu) события от устройств отображаются в конкретные клавиши с помощью systemd. Особенности разных клавиатур описаны в файле /usr/lib/udev/hwdb.d/60-keyboard.hwdb. Почитать его полезно, но редактировать не стоит. Свою особенную конфигурацию стоит написать в каком-нибудь файле в /etc, например /etc/udev/hwdb.d/70-keyboard.hwdb . Что же туда мне понадобилось вписать?

Надо узнать коды клавиш, которые мы хотим переназначить, и понять, как идентифицировать конкретную клавиатуру, если у вас их две или больше, как у меня.

Это легко сделать с помощью утилиты evtest, которая есть в вашем пакетном репозитории.

Найдите тут вашу клавиатуру.
Найдите тут вашу клавиатуру.

Найдите вашу клавиатуру в списке устройств и введите её номер.
evtest выдаст информацию об идентификации этого устройства (это часть того, что нужно нам для решения задачи):

идентификатор USB-устройства, поднадобится далее
идентификатор USB-устройства, поднадобится далее

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

Понаблюдав выдачу evtest, вы узнаете, что именно писать в /etc/udev/hwdb.d/70-keyboard.hwdb
В моём случае это оказалось таким:

evdev:input:b0003v09DAp0025e0111-1234
KEYBOARD_KEY_7004d=104
KEYBOARD_KEY_7004b=109
KEYBOARD_KEY_7004e=107

Здесь 0003 - признак USB-шины, 09DA, 0025 и 0111 - вендор, продукт и версия USB-устройства (см.пример выдачи evtest выше). Обратите внимание, что все строчки, кроме первой, начинаются с пробела, а шестнадцатиразрядные цифры в идентификаторе клавиатуры записаны апперкейсом.

После создания файла надо обновить систему:

sudo systemd-hwdb update
sudo udevadm trigger --sysname-match="event*"

Проверьте, можно снова с помощью evtest. Получилось?
Всё, можете браться за отвертку - выковыривать и переставлять физические кнопки.

Источник: https://habr.com/ru/articles/886932/


Интересные статьи

Интересные статьи

Мы все уже освоились с «переводами по телефону» друг другу, но пришла пора поговорить про оплату через СБП. Тем более что эту функцию реализовали уже больше 60 российских банков, то есть новый инструм...
Привет, Хабр! Мы, командой Слёрм, 21–22 августа 2021 года проводим обучение по Terraform.Обучение пройдёт в онлайне, задать вопросы спикеру можно будет в Zoom, чате курса в телеграм, а практические за...
Субботний вечер омрачен скандалом - сайт не работает, провайдер негодяй, админы - не специалисты, а сервера - решето. Вызов принят, или почему при всей нелюбви к 1С-Битри...
Возможность интеграции с «1С» — это ключевое преимущество «1С-Битрикс» для всех, кто профессионально занимается продажами в интернете, особенно для масштабных интернет-магазинов.
Компании растут и меняются. Если для небольшого бизнеса легко прогнозировать последствия любых изменений, то у крупного для такого предвидения — необходимо изучение деталей.