Рейтинг:1

Переназначение мультимедийной клавиатуры

флаг cn

У меня есть пульт дистанционного управления G7BTS, на котором есть и клавиатура, и мультимедийные кнопки. Большинство его кнопок работают хорошо, кроме кнопки «ОК».

Кнопка OK имеет код ключа 353, что означает KEY_SELECT. Но мой ubuntu 20.04 его не распознает.

Ниже приведены некоторые исследования, которые я провел:

  1. судо эвтест

вывод:

/dev/input/event9: Клавиатура G7BTS
/dev/input/event10: Мышь G7BTS
/dev/input/event11: Контроль потребителей G7BTS
/dev/input/event12: Управление системой G7BTS
  1. grep "" /sys/class/input/event11/device/id/*

вывод:

/sys/класс/ввод/event11/устройство/идентификатор/bustype:0005
/sys/класс/ввод/event11/устройство/идентификатор/продукт:0041
/sys/класс/ввод/event11/устройство/идентификатор/поставщик:045e
/sys/класс/ввод/event11/устройство/идентификатор/версия: 0300
  1. sudo evtest /dev/input/event11

вывод:

Тестирование... (прерывание для выхода)
Событие: время 1640250050.701930, тип 4 (EV_MSC), код 4 (MSC_SCAN), значение c0041
Событие: время 1640250050.701930, тип 1 (EV_KEY), код 353 (KEY_SELECT), значение 1
Событие: время 1640250050.701930, -------------- SYN_REPORT ------------
  1. /etc/udev/hwdb.d/60-keyboard.hwdb

Я попытался переназначить кнопку «ОК» на «войти».

Содержимое файла 60-keyboard.hwdb:

# G7BTS
evdev: ввод: b0005v045Ep0041*
 KEYBOARD_KEY_c0041=ввести
  1. sudo udevadm hwdb --test='evdev:input:b0005v045ep0041*'

вывод:

KEYBOARD_KEY_c0041=ввести

До сих пор я все еще не вижу никакого вывода в xev, когда нажимаю кнопку OK.

Любые предложения и помощь будут оценены.

Рейтинг:0
флаг cn

Всем спасибо.

Мне потребовалось несколько дней, чтобы найти решение, наконец, я нашел правильный путь.

Справка

Сопоставление скан-кодов с кодами клавиш

Задний план Версия 11 протокола X поддерживает только однобайтовые коды ключей. Таким образом, коды клавиш выше 255 игнорируются. Ubuntu 20.04 LTS до сих пор использует протокол X версии 11. На моей удаленной клавиатуре G7BTS есть кнопка «ОК». Эта кнопка имеет код ключа 353. В «xev» при нажатии этой кнопки ничего не происходит.

Решение

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

удев

udev предоставляет встроенную функцию hwdb для поддержки индекса базы данных оборудования в файле /etc/udev/hwdb.bin. База данных составлена ​​из файлов с расширением .hwdb, расположенных в каталогах /usr/lib/udev/hwdb.d/, /run/udev/hwdb.d/ и /etc/udev/hwdb.d/. Файл сопоставления скан-кодов с кодами клавиш по умолчанию — /usr/lib/udev/hwdb.d/60-keyboard.hwdb.

Общие устройства ввода (также USB-клавиатуры), определяемые модалиями ядра usb:

evdev:input:b<bus_id>v<vendor_id>p<product_id>e<version_id>-

где и — 4-значный шестнадцатеричный код производителя, продукта и версии в верхнем регистре.

Как найти эти идентификаторы выше, это ключ

установить хардинфо
sudo apt установить hardinfo
программное обеспечение — System Profiler — Устройства ввода — G7BTS Comsumer Control

Информация об устройстве Название G7BTS Потребительский контроль Введите клавиатуру Шина 0x0005 Торговец 0x045e Продукт 0x0041 Версия 0x0300

Еще одна важная вещь — получить скан-код кнопки «ОК».

установить евтест
sudo apt-get установить evtest
судо эвтест

Устройство не указано, попытка сканирования всего /dev/input/event* Доступные устройства: /dev/input/event0: Переключатель крышки /dev/input/event1: кнопка сна /dev/input/event2: кнопка питания /dev/input/event3: клавиатура AT Translated Set 2 /dev/input/event4: Сенсорная панель SynPS/2 Synaptics /dev/input/event5: TPPS/2 IBM TrackPoint /dev/input/event6: Дополнительные кнопки ThinkPad /dev/input/event7: Видеошина /dev/input/event8: Встроенная камера: Встроенная C /dev/input/event9: Клавиатура G7BTS /dev/input/event10: Мышь G7BTS /dev/input/event11: Контроль потребителей G7BTS /dev/input/event12: Управление системой G7BTS /dev/input/event13: HDA Intel PCH Mic /dev/input/event14: HDA Intel PCH Dock Mic /dev/input/event15: Наушники HDA Intel PCH /dev/input/event16: Наушники с док-станцией HDA Intel PCH /dev/input/event17: HDA Intel PCH HDMI/DP,pcm=3 /dev/input/event11: HDA Intel PCH HDMI/DP,pcm=7 /dev/input/event19: HDA Intel PCH HDMI/DP,pcm=8 Выберите номер события устройства [0-19]: ^C

Обратите внимание на «/dev/input/event11».

sudo evtest /dev/input/event11

Затем нажмите кнопку «ОК», и результат будет ниже.

Событие: время 1640238746.775220, тип 4 (EV_MSC), код 4 (MSC_SCAN), значение c0041 Событие: время 1640238746.775220, тип 1 (EV_KEY), код 353 (KEY_SELECT), значение 0 Событие: время 1640238746.775220, -------------- SYN_REPORT ------------

Обратите внимание на «значение c0041». Это значение c0041 является скан-кодом кнопки «ОК».

Сделайте файл hwdb

Теперь у нас есть идентификаторы и код сканирования, которые нам нужны. Поместите их в «Общие устройства ввода (также USB-клавиатуры), идентифицированные модалиями ядра USB» выше, и, наконец, у нас есть файл конфигурации G7BTS.hwdb ниже:

evdev: ввод: b0005v045Ep0041e0300* KEYBOARD_KEY_c0041=ввести

В данном контексте кнопка «ОК» отображается на клавишу «Ввод». Вы можете сопоставить его с любым ключом, который вы хотите.

Поместить файл в место назначения

sudo mv G7BTS.hwdb /etc/udev/hwdb.d/

Обновлять

sudo udevadm hwdb --update триггер sudo udevadm --verbose

Тестовое задание

sudo udevadm hwdb --test='evdev:input:b0005v045Ep0041e0300*'

результат

KEYBOARD_KEY_c0041=ввести

Конец

Вот и все шаги по переназначению ключей. Эти переназначения все еще работают после перезагрузки.

Ответить или комментировать

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