¿Cómo atar los botones del mouse a las teclas?

19

Tengo un mouse láser Logitech MX400 que tiene 5 botones + 4 para desplazamiento vertical / horizontal. Me gustaría configurarlo para que, en lugar de desplazarse horizontalmente, presionar a la derecha en la rueda de desplazamiento envíe Ctrl+ Taby a la izquierda envíe Ctrl+ Shift+ Tab, lo que me permitirá recorrer las pestañas en los navegadores.

Además, sería bueno si pudiera reasignar el botón central a uno de los laterales, ya que es muy difícil presionarlo.

Otra ventaja sería si pudiera escribir un script que me permita definir qué botones hacen qué depende de qué ventana esté activa actualmente.

He intentado usar xmodmappero solo pude ver cómo reorganizar los botones, no hacer que envíen señales clave.

Gracias por adelantado.


Mapa de botones (usando xev):

Left        1
Middle      2
Right       3
ScrollUp    4
ScrollDown  5
ScrollLeft  6
ScrollRight 7
Backward    8
Forward     9
Callum Rogers
fuente

Respuestas:

18

Las xbindkeys y xte pueden ayudarte.

Por ejemplo, mi archivo .xbindkeysrc tiene este aspecto:

# close the window under the mouse cursor
"xte 'mouseclick 1' && xte 'keydown Alt_L' 'key F4' 'keyup Alt_L'"
  b:8+Release

# double click
"xte 'mouseclick 1' 'mouseclick 1'"
  b:9
lukasz
fuente
Esto es fantástico y extensible, muchas gracias
Callum Rogers
1
Para obtener xte en Ubuntu 16.x, deberá instalar xautomation desde apt .
1111161171159459134
Eso no funciona tan bien como me gusta, porque no funciona igual si mantengo presionado el botón. Mi viejo mouse tenía un botón que permite que la rueda de desplazamiento gire libremente, lo cual es genial si solo quiero comenzar a moverse realmente rápido y desplazarse mucho. Pero mi nuevo no tiene eso, así que até dos botones laterales (creo que están diseñados como botones de retroceso / avance para la navegación web) a las teclas PgUp / PgDn. Pero tengo que presionarlos repetidamente si quiero seguir desplazándome; No puedo simplemente mantenerlos presionados. ¿Cómo hago que mantenga presionada la tecla mientras mantenga presionado el botón?
flarn2006
5

Gracias a todos por la solución. Aquí hay una guía más infalible / combinada (realizada en Xubuntu 18.04).

  1. Abra una terminal (como xterm / terminal / terminator), conviértase en root ( sudo su -) o use sudo delante del comando:

    apt install xbindkeys xautomation
  2. Verifique la asignación de botones con xev, para esto no necesita permiso de root, así que salga de la sesión de root (con exit) o abra otra terminal como usuario.

    xev | grep button
  3. Aparecerá una pequeña ventana. Debe mover el mouse hacia esa ventana y presionar el botón que desea reasignar. Un ejemplo de salida en la terminal será:

    state 0x0, button 8, same_screen YES

    Este es el segundo botón lateral de mi mouse que quiero usar como PAGE_DOWN.

    state 0x0, button 9, same_screen YES

    Este es el primer botón lateral (sí, el orden se invierte) que quiero usar como PAGE_UP.

  4. Cuando tenga todos los botones que desea reasignar, puede cerrar la pequeña ventana xev. Abra su editor favorito (gedit / vi / nano, por ejemplo) y edite el archivo de configuración.

    vi .xbindkeysrc
  5. Si ya tiene algún contenido en el archivo, busque si ya hay un enlace similar (poco probable, no de forma predeterminada) y agréguelo al final.

    #Pagedown press
    "xte 'keydown Next'"
    b:8
    
    #Pagedown release
    "xte 'keyup Next'"
    b:8 + Release
    
    #Pagedup press
    "xte 'keydown Prior'"
    b:9
    
    #Pageup release
    "xte 'keyup Prior'"
    b:9 + Release

    Nota: necesita dos entradas, una para presionar el botón y otra para la liberación.

  6. Los botones 8 + 9 se asignarán a las teclas "Siguiente" (que es PAGE_DOWN) y "Prior" (PAGE_UP). Si desea asignar diferentes claves, puede encontrar el símbolo de clave con xev.

    xev | grep keysym
  7. Como antes, inicie en una terminal, mueva el mouse a la pequeña ventana y presione la tecla deseada.

    state 0x0, keycode 117 (keysym 0xff56, Next), same_screen YES,
  8. Guardar y matar xbindings.

    killall xbindkeys ; xbindkeys

Ahora puede usar los botones laterales adicionales del mouse. La configuración se cargará automáticamente en el próximo reinicio / inicio de sesión. Solo necesita el killall [...]comando de arriba si cambia la configuración.

malasa
fuente