Vuelva a asignar una combinación de teclas a otra combinación, por ejemplo, Super + Ctrl + Shift + J -> Ctrl + Shift + Izquierda


11

Quiero implementar una capa de teclas adicionales, para poder acceder a teclas no alfanuméricas sin tener que mover las muñecas.

He estado usando Autokey para este propósito, pero la experiencia no fue satisfactoria: tenía retrasos ocasionales y dejaba que las teclas originales se deslizaran en ciertas aplicaciones.

Entonces necesito una solución de bajo nivel.


es posible que tenga que crear un controlador de entrada virtual personalizado para hacer esto, que supongo que se escribiría en C
Amias

@ Amias, ¿puedes dar más detalles?
lolmaus - Andrey Mikhaylov

podría tener un controlador xinput que ejecute el controlador normal del teclado pero interprete las teclas antes de pasarlas a xorg, esto le daría un control completo pero sería un par de días moderadamente complejo para un programador C.
Amias

Respuestas:


10

Prueba una combinación de xbindkeys y xvkbd . xbindkeys escucha las claves y envía la traducción a xvkbd.

sudo apt-get install xbindkeys xvkbd
xbindkeys --defaults > /home/your-user-name/.xbindkeysrc

Abra .xbindkeysrc en su editor favorito. Comenté todo lo demás, pero es bueno hacer referencia si es necesario.

Para comprobarlo, intenté mapear Ctrl +; a Ctrl + V

"xvkbd -xsendevent -text "\Cv""
   control + semicolon

Espero que estés buscando algo como esto

"xvkbd -xsendevent -text "\C\S\[Left]""
  Super+Control+Shift+J

Guarde el archivo, luego ejecute xbindkeys

Para volver a cargar los cambios de configuración, eliminé el proceso xbindkeys y luego reinicié.

sintaxis de xbindkeys

Resolví la combinación de teclas usando una GUI para xbindkeys

sudo apt-get install xbindkeys-config
xbindkeys-config

Una vez que ejecute eso, presione Obtener clave para que la combinación se coloque en la segunda línea de su archivo .xbindkeysrc.

sintaxis xvkbd

Del manual:

\r - Return
\t - Tab
\b - Backspace
\e - Escape
\d - Delete
\S - Shift (modify the next character; please note that modify with ``\S'' will be ignored in many cases. For example, ``a\Cb\ScD\CE'' will be interpreted as a, Control-b, c, Shift-D, and Control-Shift-E.)
\C - Control (modify the next character)
\A - Alt (modify the next character)
\M - Meta (modify the next character)
\[keysym] - the keysym keysym (e.g., \[Left]), which will be processed in the similar matter with other general characters
\{keysym} - the keysym keysym (e.g., \{Left}), which will be processed in more primitive matter and can also be used for modofier keys such as Control_L, Meta_L, etc.; also, \{+keysym} and \{+keysym} will simulate press and release of the key, respectively [Version 3.3]
\Ddigit - delay digit * 100 ms
\xvalue - move mouse pointer (use "+" or "-" for relative motion)
\yvalue - move mouse pointer (use "+" or "-" for relative motion)
\mdigit - simulate click of the specified mouse button

Me encanta saber cómo funciona y si la combinación fue adecuada para su propósito. Se ve bien como un mapeador de teclas, pero no necesariamente como un corredor de macros.


¡Hola @ MarkHewitt! ¡Muchas gracias por la respuesta detallada! Desafortunadamente, esto no me funciona muy bien: sigue presionando la tecla original, lo que arruina todo.
lolmaus - Andrey Mikhaylov

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.