Переназначение кнопок мыши на клавиши клавиатуры

Я пытаюсь переназначить свои кнопки мыши, две боковые кнопки и средний щелчок на 4,5,6 клавиш на моей клавиатуре, нашел несколько руководств, но я очень плохо знаком с Ubuntu и Linux в целом, я пытался сделать что в течение нескольких дней, но безрезультатно. Может ли кто-нибудь провести меня через это или указать мне какое-нибудь всеобъемлющее руководство, которому мог бы следовать нуб? Любая помощь будет оценена.

1
задан 21 May 2019 в 16:55

1 ответ

Существует в основном два подхода к этой проблеме:

  • Свяжите действие с кнопкой мыши и фальсифицируйте нажатие клавиши

или

  • Отобразите scancode кнопки мыши на другой код клавиши

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

Я лично предпочитаю повторно отображать scancode, таким образом, я только объясню тот метод.

Переотображение scancode кнопки мыши к другому коду клавиши

Это - более или менее та же процедура, как я описал здесь.

Выполненный sudo evtest (Вам, вероятно, придется установить evtest сначала) и выбор Ваша мышь. Нажмите кнопки, которые Вы хотите повторно отобразить (если Вы не видите вывода, нажмите Ctrl+C и повторите процесс, пока Вы не нашли свою мышь). Вывод должен содержать строки как следующее:

Event: time 1558613958.149431, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90004
Event: time 1558613958.149431, type 1 (EV_KEY), code 275 (BTN_SIDE), value 1
Event: time 1558613958.149431, -------------- SYN_REPORT ------------

Первая строка говорит нам scancode (в моем случае 90004), вторая строка сообщает о в настоящее время отображаемом коде клавиши (в моем случае BTN_SIDE). Запишите scancodes всех кнопок мыши, которые Вы хотите повторно отобразить.

Теперь выполните следующую команду, где eventX является тем, Вы выбрали при использовании evtest:

grep "" /sys/class/input/eventX/device/id/*

Это говорит Вам тип шины, поставщика, продукт и версию Вашей мыши. В моем случае вывод:

/sys/class/input/event7/device/id/bustype:0003
/sys/class/input/event7/device/id/product:4102
/sys/class/input/event7/device/id/vendor:062a
/sys/class/input/event7/device/id/version:0110

Теперь создайте следующий файл:

/etc/udev/hwdb.d/99-mouse-remap.hwdb

evdev:input:b[bustype]v[vendor]p[product]e[version]*
 ID_INPUT_KEY=1
 KEYBOARD_KEY_[scancode]=4
 KEYBOARD_KEY_[scancode]=5
 KEYBOARD_KEY_[scancode]=6

... где

  • [тип шины], [поставщик], [продукт] и [версия] - те полученные на предыдущем шаге с буквами, преобразованными в верхний регистр
  • [scancode] - те от первого шага с буквами, преобразованными в нижний регистр
  • evdev:... строка не имеет никакого предыдущего пространства
  • KEYBOARD_KEY... строки имеют точно одно предыдущее пространство

Файл был бы похож на это для моей мыши:

evdev:input:b0003v062Ap4102e0110*
 ID_INPUT_KEY=1
 KEYBOARD_KEY_90003=4
 KEYBOARD_KEY_90004=5
 KEYBOARD_KEY_90005=6

Теперь выполненный sudo systemd-hwdb update и перезагрузка.

2
ответ дан 21 May 2019 в 16:55

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

Похожие вопросы: