Отображение эмулируемой кнопки мыши - Linux

tl; dr: Как сопоставить физическую кнопку MIDDLE с клавишей, отличной от эмулируемой кнопки MIDDLE? (Emulate3Buttons)

При использовании мыши Kensington Expert как есть, 4 кнопки являются физическими кнопками ВЛЕВО, ВПРАВО, СРЕДНИЙ и НАЗАД. Чтобы получить BACK и FORWARD, можно выполнить простое повторное связывание, добавив соответствующий раздел в xorg.conf (BACK -> FORWARD и MIDDLE -> BACK).

┌─┬─┐    ┌─┬─┐
│M│B│    │B│F│
├─O─┤ -> ├─O─┤
│L│R│    │L│R│
└─┴─┘    └─┴─┘

Если я теперь дополнительно хочу кнопку MIDDLE, на страницах руководства упоминается опция "Emulate3Buttons", которая эмулирует нажатие кнопки MIDDLE, нажимая одновременно кнопки ВЛЕВО и ВПРАВО.

Моя проблема сейчас заключается в следующем: "Emulate3Buttons" эмулирует физическую кнопку MIDDLE, и, поскольку мне раньше приходилось отображать MIDDLE -> BACK, я просто получу еще одну кнопку BACK.

┌─┬─┐
│B│F│
├─O─┤
│L│R│
└\┴/┘
  B

Как я собираюсь закончить с:

┌─┬─┐
│B│F│
├─O─┤
│L│R│
└\┴/┘
  M

1 ответ

Решение

По-видимому, на этот вопрос уже дан ответ, и исправление даже было объединено с базой кода Linux https://unix.stackexchange.com/questions/314795/xinput-button-mapping-and-middle-button-emulation

в основном я создал файл /etc/X11/xorg.conf.d/99-kensington.conf (с правами root)

Section "InputClass"
    Identifier  "Kensington Trackball"
    Driver  "evdev"
    MatchProduct    "Kensington Expert Mouse"

    Option  "ButtonMapping" "1 8 3 4 5 6 7 9 0 2"
    Option  "Emulate3Buttons" "true"
    Option  "Emulate3Button" "10"
EndSection

имя 99-kensington.conf можно изменить до тех пор, пока оно сохраняет тот же формат 'number-text.conf'.

Идентификатор не важен.

MatchProduct является подстрокой имени устройства. Вы получите его, выполнив "xinput --list" (между ↳ и id=). Если у вас есть только одна мышь, вам это не нужно.

ButtonMapping должно быть хорошо известно, вторая цифра - это физическая MIDDLE, и она отображается в BACK (8). С Emulate3Button вы можете указать, какую физическую кнопку следует эмулировать, в данном случае физическую 10. Поэтому 10-е число в ButtonMapping - MIDDLE (2). (0 означает, что кнопка отключена)

Если вам нужна дополнительная информация: https://www.systutorials.com/docs/linux/man/4-evdev/

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