Cómo deshabilitar los botones Adelante / Atrás en mi mouse

36

Mi mouse tiene una característica desafortunada. En el lado izquierdo, justo donde mi pulgar se sienta muy suavemente cuando lo estoy usando, hay dos botones que son tan sensibles que un simple pincel los hará clic.

Estoy hablando, por supuesto, de los molestos botones de avance / retroceso que, si se presionan en un navegador, pueden hacer que ver ese video de YouTube de una hora sea mucho más difícil. ¿Hay alguna forma de deshabilitarlos? ¿Sería esto manejado por X?

n0pe
fuente
2
Estoy casi seguro de que puede apagarlo usando xinput, pero no sé los detalles ...
PBM
Esta pregunta y la respuesta también se aplican a los botones de retroceso / avance en los teclados, por ejemplo, en el teclado Thinkpad
Daniel S. Sterling

Respuestas:

43

Inicie el programa xeven una terminal. Mueva el mouse dentro de la xevventana; verás muchas cosas desplazándote. Presione cada botón a su vez. Luego vuelva a la ventana de terminal y presione Ctrl+ C. xevmuestra una descripción de cada evento de entrada, en particular ButtonPressy ButtonReleasepara los clics del mouse (también verá varios MotionNotifymovimientos del mouse y otros eventos).

Es probable que sus botones de avance y retroceso estén asignados a los botones del mouse, tal vez los botones 8 y 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

Si ese es el caso, reasigne estos botones a una acción diferente en su navegador, si puede. Alternativamente, puede reasignar los botones a diferentes números de botones a los que su navegador no reacciona o deshabilitar los botones por completo en el nivel del sistema. Para hacer esto, coloque estas líneas en un archivo llamado ~/.Xmodmap:

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

Pruébalo con el comando xmodmap ~/.Xmodmap. La mayoría de los entornos de escritorio y administradores de ventanas ejecutan este comando automáticamente cuando inicia sesión; si el suyo no lo hace, haga arreglos para que se ejecute cuando X comience.

También es posible que su mouse envíe un evento de teclado cuando presiona estos botones:

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

En ese caso, ponga líneas como estas en ~/.Xmodmap:

keycode 166 = NoSymbol
keycode 167 = NoSymbol
Gilles 'SO- deja de ser malvado'
fuente
2
Gracias a ambos por la pregunta y la respuesta. Por cierto, para reducir la demencia de la xevsalida, simplemente tubo a través de grep: xev | grep -A2 ButtonPress; esto dejará todos los eventos de movimiento del mouse, eventos de enfoque, etc. y solo mostrará los ButtonPresseventos, que es todo lo que necesita aquí.
Lambart
¡Gracias! ¡Ayudó en unos segundos! :-)
Brian Haak
¡Esto también funciona en Wayland!
Ray Foss
2

Puede usar xevpara buscar qué tecla asigna el botón y asignar el código a continuación (en $ HOME / .xsessionrc) para asignarlo a algo que no está usando.

xmodmap -e 'keycode THE_CODE_HERE = XF86Launch1'

Alternativamente, debería poder hacerlo desde una GUI en la que use Gnome / KDE o cualquier otro escritorio moderno.

Otra opción sería hackear el xorg.conf para eliminar las definiciones de los botones.

Sardathrion - Restablece a Monica
fuente
1

solo un comando rápido para solucionarlo, no muy diferente de otras respuestas:

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

pruebas

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"

puedes poner el cmd fijo en las aplicaciones de inicio.

mejor sería usar xdotool para verificar si la ventana activa es cualquiera de sus navegadores y llamar a xmodmap a pedido para deshabilitar / habilitar, pero eso requeriría algunas secuencias de comandos:>

No vi ninguna razón para mantener habilitados los botones superiores a 7, ¿alguna razón?

Poder de acuario
fuente
0

Se puede hacer con el archivo de configuración xorg

Aquí hay un ejemplo que deshabilita el desplazamiento horizontal (guarde el nuevo archivo y reinicie)

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

Otros comandos útiles

xinput list
xinput list-props 15

Ahora, para esta pregunta, el archivo de configuración de xorg se puede usar para reasignar el botón. Aquí hay un ejemplo.

Section "InputClass"
    # ...
    Option "ButtonMapping" "1 9 3 4 5 6 7 8 2"
    # ...
EndSection
intika
fuente
0

Si usted está tratando de los xmodmapcomandos (en X, no Weyland) y que está recibiendo el error BadValue (integer parameter out of range for operation)en X_SetPointerMapping, puede que tenga que utilizar xinputen su lugar. Ejecute xinputsin parámetros para obtener las ID de dispositivo (busque uno para el puntero) y luego ejecute

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

En mi caso, mi mouse era el dispositivo n. ° 4 y necesitaba convertir los botones 6 y 7 en 8 y 9 para avanzar y volver al trabajo, así que utilicé

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

(Mantuve los botones 8 y 9 también asignados a 8 y 9 en caso de que cambiara los ratones).

DerfK
fuente