teclas teclado tecla rotura para latinoamericano configurar combinacion atajos linux keyboard terminal autohotkey terminfo

linux - teclado - Cambie la secuencia de escape generada por xterm para combinaciones de teclas



linux teclado (2)

Mi objetivo es configurar un terminal en el que un programa de interfaz de línea de comandos se comportaría como se esperaba para las entradas del teclado (el programa está escrito en xharbour originalmente para Windows pero ahora me gustaría transferirlo a Linux). He elegido xterm para empezar, ya que es más simple, sin necesidad de deshabilitar las combinaciones predeterminadas de teclas de terminal.

Con masilla, la mayoría de los personajes funcionan bien y, para los que no, uso autohotkey, un script ahk y eso hace el trabajo. Por ejemplo, para Ctrl + F1: ^F1::SendInput ^[O5P

Probé y modifiqué, volví a compilar el terminfo, lo cambié y cambié los tipos de teclado, pero no pude obtener una respuesta ^ [O5P para presionar Ctrl + F1 en la terminal. Si conoce alguna forma de hacer este cambio, por favor dígame ... He leído a través de cientos de páginas que supuestamente hacen esto, pero todos esos cambios no tuvieron ningún efecto o no tuvieron el efecto esperado.

Así que dejé de tratar de modificar la configuración de la terminal para lograr mi Ctrl + F1 a ^ [Objetivo O5P y probé algunos comandos y programas que harían algo similar a la auto-clave:

  • xmodmap , pero para combinaciones de teclas no funciona
  • xdotool windowactivate xyz type ^ [O5P, esto devuelve los códigos de caracteres individuales
  • xmacro , no envía pulsaciones de teclas a otra ventana
  • ironahk , me sale un error al principio al tratar de ejecutar el example.ahk y no pude encontrar los comandos que deseaba en su manual ligero.
  • bind ''/e[1;5P":"/e[O5P"'' , aquí el primer código clave es el que obtengo al escribir ctrl + f1 y después del que deseo obtener con esta combinación. Sin efecto.
  • xbindkeys + xvkbd , tampoco ayudó.

Por favor, ayúdenme si ya lo sabe, logrado de alguna manera para lograr esto (cambie el código clave devuelto por una combinación de teclas).

Uso los últimos CentOS y Ubuntu para probar.


xterm se puede configurar para enviar cadenas personalizadas cuando se presionan ciertas teclas modificando su tabla de traducción . La tabla de traducción es parte de la base de datos de recursos X administrada por el comando xrdb .

Aquí hay un buen ejemplo de una tabla de traducción personalizada para xterm. Se puede copiar en $HOME/.Xdefaults o $HOME/.Xresources y se cargará la próxima vez que inicie sesión. Para cargarlo en su sesión actual inmediatamente, xrdb -merge $HOME/.Xresources . Esto no afectará ningún xterms que ya se esté ejecutando. (Es posible que pueda cambiar la tabla de traducción de un xterm en ejecución con editres , pero eso es más problemas de lo que vale).

Para proporcionar una tabla de traducción personalizada para una instancia única de xterm, use la opción -xrm , como en

xterm -xrm ''XTerm.VT100.translations: #override Ctrl<Key>Left: string(0x1b) string("b") /n Ctrl<Key>Right: string(0x1b) string("f")''


No respondiendo directamente la pregunta, pero ESC O 5 P es una cosa bastante incorrecta para un terminal que está enviando.

En resumen: ESC O , también llamada SS3 abreviatura de Single Shift 3, es una secuencia que modifica el siguiente personaje enviado, colocándolo en el área gráfica G3 en lugar de la estándar. Esto modificaría el 5 y enviaría el P directamente. Esto no es y nunca ha sido una buena idea.

Lo correcto para enviar para Ctrl-F1 sería CSI 1;5 P , una forma de CSI P (que es la tecla F1) con el segundo parámetro establecido en 5 (siendo el modificador máscara de bits).