Как отключить кнопки Вперед / Назад на моей мыши

36

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

Я, конечно, говорю о досадных кнопках «вперед / назад», которые, если их нажимать в браузере, могут значительно усложнить просмотр часового видео на YouTube. Есть ли способ отключить их? Будет ли это обрабатываться X?

n0pe
источник
2
Я почти уверен, что вы можете отключить его с помощью xinput, но я не знаю подробностей ...
pbm
Этот вопрос и ответ также относятся к кнопкам «назад / вперед» на клавиатурах, например, на клавиатуре Thinkpad
Даниэль С. Стерлинг,

Ответы:

43

Запустите программу xevв терминале. Переместите мышь в xevокно; Вы увидите много материала, прокрутите мимо. Нажмите каждую кнопку по очереди. Затем переключитесь обратно в окно терминала и нажмите Ctrl+ C. xevпоказывает описание каждого события ввода, в частности, ButtonPressи ButtonReleaseдля щелчков мыши (вы также увидите ряд MotionNotifyдвижений мыши и других событий).

Вполне вероятно, что ваши кнопки вперед и назад сопоставлены с кнопками мыши, может быть, кнопки 8 и 9:

ButtonPress event, serial 29, synthetic NO, window 0x2e00001,
    root 0x105, subw 0x0, time 2889100159, (166,67), root:(1769,98),
    state 0x0, button 8, same_screen YES

Если это так, переназначьте эти кнопки на другое действие в вашем браузере, если можете. Кроме того, вы можете переназначить кнопки на разные номера кнопок, на которые ваш браузер не реагирует, или вообще отключить кнопки на системном уровне. Для этого поместите эти строки в файл с именем ~/.Xmodmap:

! Remap button 8 to 10 and disable button 9.
pointer = 1 2 3 4 5 6 7 10 0

Проверьте это с помощью команды xmodmap ~/.Xmodmap. В большинстве сред рабочего стола и оконных менеджеров эта команда запускается автоматически при входе в систему; если у вас нет, организуйте его запуск при запуске X.

Также возможно, что ваша мышь отправляет событие клавиатуры, когда вы нажимаете эти кнопки:

KeyPress event, serial 32, synthetic NO, window 0x2e00001,
    root 0x105, subw 0x0, time 2889100963, (957,357), root:(2560,388),
    state 0x0, keycode 166 (keysym 0x1008ff26, XF86Back), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

В этом случае поместите строки, подобные этим ~/.Xmodmap:

keycode 166 = NoSymbol
keycode 167 = NoSymbol
Жиль "ТАК - прекрати быть злым"
источник
2
Спасибо вам обоим за вопрос и ответ. Кстати, чтобы уменьшить безумие xevвыхода, только трубу его через Grep: xev | grep -A2 ButtonPress; это оставит все события движения мыши, события фокуса и т. д. и просто покажет ButtonPressсобытия, и это все, что вам нужно здесь.
Ламбарт
Спасибо! Это помогло за несколько секунд! :-)
Брайан Хаак
Это работает и в Wayland!
Рэй Фосс
2

Вы можете использовать, xevчтобы найти, какой ключ сопоставляет кнопку, и использовать приведенный ниже код (в $ HOME / .xsessionrc), чтобы сопоставить его с чем-то, что вы не используете.

xmodmap -e 'keycode THE_CODE_HERE = XF86Launch1'

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

Еще один вариант - взломать xorg.conf, чтобы удалить определения кнопок.

Сардатрион - Восстановить Монику
источник
1

просто быстрая команда, чтобы исправить это, на самом деле не отличается от других ответов:

xmodmap -e "pointer = 1 2 3 4 5 6 7 0 0 0 0 0 0" #the fix

тестирование

xmodmap -pp # check the changes
xterm -e xev # test the nullified buttons

# to restore in case you are going to play some game that uses them
xmodmap -e "pointer = 1 2 3 4 5 6 7 8 9 10 11 12 13"

Вы можете поставить исправление cmd при запуске приложений.

Лучше было бы использовать xdotool, чтобы проверить, является ли активное окно любым из ваших браузеров, и вызвать xmodmap по требованию, чтобы отключить / включить m, но для этого потребуются некоторые сценарии:>

Не вижу смысла держать кнопки выше 7 включенными, есть причина?

Водолей Сила
источник
0

Может быть сделано с помощью конфигурационного файла xorg

Вот пример, который отключает горизонтальную прокрутку (сохраните новый файл и перезагрузите компьютер)

nano /etc/X11/xorg.conf.d/40-libinput-mouse-left-right.conf

Section "InputClass"
        Identifier "Logitech catchall"
        MatchIsPointer  "on"
        Driver "libinput"
        Option "HorizontalScrolling" "false"
EndSection

Другие полезные команды

xinput list
xinput list-props 15

Теперь для этого вопроса файл конфигурации xorg можно использовать для переназначения кнопки. Вот пример

Section "InputClass"
    # ...
    Option "ButtonMapping" "1 9 3 4 5 6 7 8 2"
    # ...
EndSection
intika
источник
0

Если вы пытаетесь на xmodmapкоманды (на X, не Вейланд) и вы получаете ошибки BadValue (integer parameter out of range for operation)в X_SetPointerMapping, возможно , придется использовать xinputвместо этого. Запустите xinputбез параметров, чтобы получить идентификаторы устройств (ищите один для указателя), затем запустите

xinput set-button-map [pointer-device-id] 1 2 3 4 5 0 0 0 0

В моем случае моей мышью было устройство № 4, и мне нужно было сделать кнопки 6 и 7 на 8 и 9, чтобы перейти вперед и вернуться к работе, чтобы я использовал

xinput set-button-map 4 1 2 3 4 5 8 9 8 9

(Я сохранил кнопки 8 и 9 также на 8 и 9 на случай, если поменяю мышей.)

DerfK
источник