¿Existe algún terminal linux que pueda manejar todas las combinaciones de teclas?

Pregunta:

Me gusta usar emacs en modo terminal ( -nw ), pero parece que la mayoría (¿todos?) Los terminales no pueden manejar algunas combinaciones de teclas, por ejemplo, C-<RET> o CM-% . Sé que esto se debe a que la mayoría de los terminales emulan un VT-100, que no tenía estas combinaciones. ¿Existe algún terminal Linux (preferiblemente KDE) que pueda manejar estas combinaciones de teclas, o es esta una limitación fundamental de todos los terminales?

Respuesta:

Cuando presiona una tecla o combinación de teclas en un terminal, se transmite a la aplicación que se ejecuta en el terminal como una secuencia de uno o más caracteres. Por ejemplo, cuando presiona a , la aplicación recibe a . Cuando presiona Enter , la aplicación recibe el carácter CR (también conocido como ^M (se pronuncia "control-emm"), también conocido como el carácter número 13, también conocido como \r o \015 ). Las combinaciones de teclas que involucran Alt se transmiten típicamente como el carácter ESC (a.ka. ^[ también conocido como \e o \033 ) seguido de la secuencia para la tecla o combinación de teclas sin Alt . Las teclas de función y otras combinaciones de teclas se transmiten como secuencias de escape que comienzan con \e[ o \eO .

Las secuencias de escape no están completamente estandarizadas y los terminales generalmente ignoran ciertos atributos para ciertas claves. Por ejemplo, Ctrl + Shift + letra a menudo se transmite exactamente como Ctrl + letra de forma predeterminada.

Puede ver lo que envía su terminal para una combinación de teclas presionando Ctrl + V seguido de esa combinación de teclas en un indicador de shell, o Cq o Ch c seguido de la combinación de teclas en Emacs.

Con algunos emuladores de terminal, puede configurar las secuencias de escape para cada tecla. En Xterm, esto se hace a través de X recursos . La mayoría de las configuraciones leen recursos de ~/.Xresources cuando se inicia X, y puede cargar el archivo manualmente con xrdb -merge ~/.Xresources .

Term.VT100.translations:       #override \n\
    Ctrl ~Shift ~Meta <key>Return: string("\033[73;5~") \n\
    Ctrl Shift ~Meta <key>percent: string("\033[37;6~")

Una convención común usa secuencias de escape de la forma ESC [ number1 ; number2 ~ para teclas de función con modificadores. number1 indica la tecla de función ( 15 a 24 para F5 a F12 ; por razones históricas, F1 a F4 tienen diferentes secuencias de escape) y number2 indica el modificador ( 2 para Shift , 3 para Meta , 5 para Ctrl , 7 para Ctrl + Meta , y agregue 1 para Shift con al menos uno de Ctrl o Meta ).

Emacs traduce las secuencias de escape en su representación de clave interna a través de input-decode-map o local-function-key-map (o function-key-map antes de Emacs 23).

(define-key local-function-key-map "\033[73;5~" [(control return)])
(define-key local-function-key-map "\033[37;6~" [(control ?L)])

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım