Quizás su confusión surge de no haber usado un terminal real. Cuando las computadoras serias eran del tamaño de varios refrigeradores verticales, un terminal se comunicaba con una computadora central a través de un cable en serie usando caracteres y caracteres solamente. Los caracteres formaban parte de algún conjunto de caracteres estandarizado, por ejemplo, ASCII o EBCDIC, pero normalmente ASCII. ASCII tiene 33 caracteres de control y el operador del terminal los envió presionando una tecla especial (como DEL) o presionando la tecla CTRL y presionando otra tecla. La computadora central solo vio el carácter de control resultante; no sabía qué teclas se presionaron para producir el personaje.
Un programa de emulación de terminal como xterm imita ese comportamiento. El emulador de terminal proporciona una forma de enviar los 33 caracteres de control ASCII y Emacs recibirá esos caracteres si se envían. Pero Emacs es como la computadora central en la descripción anterior: no tiene forma de saber qué teclas se presionaron realmente cuando se ejecuta bajo un emulador de terminal. Entonces, si presiona CTRL y punto y coma, a menos que el programa de emulación de terminal haya asignado esas pulsaciones de teclas a algún carácter ASCII, Emacs no sabrá que se ha escrito nada.
Los emuladores de terminal suelen utilizar las siguientes asignaciones para generar caracteres de control † :
pulsación de tecla ASCII
--------------------
ESCAPE 27
BORRAR 127
RETROCESO 8
CTRL + ESPACIO 0
CTRL + @ 0
CTRL + A 1
CTRL + B 2
CTRL + C 3
etc ...
CTRL + X 24
CTRL + Y 25
CTRL + Z 26
CTRL + [27
CTRL + \ 28
CTRL +] 29
CTRL + ^ 30
CTRL + _ 31
Tenga en cuenta que CTRL +; no aparece en esa lista. Los terminales por lo general sólo enviar el carácter imprimible asignado a la tecla , si CTRL + llave no está asignado a un carácter de control. Entonces, ¿qué te dice tu emulador de terminal al enviarlo? solo es que no sabe qué hacer cuando presiona CTRL + ;.
Todo esto se aplica solo si está utilizando un terminal o un programa de emulación de terminal. Si está ejecutando Emacs como una aplicación nativa en algún sistema de ventanas, Emacs tiene acceso completo a los eventos de pulsación de teclas y no solo a los caracteres. Entonces Emacs puede ver que presionó CTRL y punto y coma juntos y le permite asignar una acción a ese par de teclas.
† Los terminales a menudo tienen teclas de función y teclas de flecha que también generan secuencias de caracteres que incluyen caracteres de control. Estas secuencias suelen comenzar con el código ASCII 27 (ESCAPE).
;
a Emacs, así que nada lo captura , lo que sucede es que Ctrl +; y desnudo; enviar la misma información ¿Cuál es: captura (es decir, Emacs no recibe nada) o pérdida de información (es decir, Emacs recibe;
)?