Möglicherweise entsteht Ihre Verwirrung dadurch, dass Sie kein tatsächliches Terminal verwendet haben. Damals, als ernsthafte Computer die Größe mehrerer aufrecht stehender Kühlschränke hatten, kommunizierte ein Terminal über ein serielles Kabel mit einem zentralen Computer, wobei nur Zeichen und Zeichen verwendet wurden. Die Zeichen waren Teil eines standardisierten Zeichensatzes, z. B. ASCII oder EBCDIC, aber typischerweise ASCII. ASCII verfügt über 33 Steuerzeichen, die vom Terminalbetreiber durch Drücken einer Sondertaste (z. B. DEL) oder durch Gedrückthalten der STRG-Taste und Drücken einer anderen Taste gesendet wurden. Der Zentralcomputer sah nur das resultierende Steuerzeichen; es wusste nicht, welche Tasten gedrückt wurden, um das Zeichen zu erzeugen.
Ein Terminalemulationsprogramm wie xterm ahmt dieses Verhalten nach. Der Terminalemulator bietet eine Möglichkeit, alle 33 ASCII-Steuerzeichen zu senden, und Emacs empfängt diese Zeichen, wenn sie gesendet werden. Aber Emacs ist wie der Zentralcomputer in der obigen Beschreibung - es kann nicht wissen, welche Tasten tatsächlich gedrückt wurden, als Sie es unter einem Terminalemulator ausführen. Wenn Sie also STRG und Semikolon drücken, weiß Emacs nicht, dass etwas eingegeben wurde, es sei denn, das Terminalemulationsprogramm hat diese Tastendrücke einem ASCII-Zeichen zugeordnet.
Terminalemulatoren verwenden normalerweise die folgenden Zuordnungen, um Steuerzeichen zu generieren † :
Tastendruck ASCII
--------------------
ESCAPE 27
LÖSCHEN 127
RÜCKSEITE 8
STRG + LEERTASTE 0
STRG + @ 0
STRG + A 1
STRG + B 2
STRG + C 3
usw...
STRG + X 24
STRG + Y 25
STRG + Z 26
STRG + [27
STRG + \ 28
STRG +] 29
STRG + ^ 30
STRG + _ 31
Beachten Sie, dass STRG +; erscheint nicht in dieser Liste. Terminals senden normalerweise nur das druckbare Zeichen, das der Taste zugewiesen ist, wenn STRG + Taste keinem Steuerzeichen zugeordnet ist. Also, was Ihr Terminalemulator Ihnen durch Senden sagt; allein ist, dass es nicht weiß, was zu tun ist, wenn Sie STRG + drücken;.
All dies gilt nur, wenn Sie ein Terminal oder ein Terminalemulationsprogramm verwenden. Wenn Sie Emacs als native Anwendung unter einem Fenstersystem ausführen, hat Emacs vollen Zugriff auf die Tastenanschlagereignisse und nicht nur auf Zeichen. So kann Emacs sehen, dass Sie STRG und Semikolon gleichzeitig gedrückt haben, und es Ihnen ermöglichen, diesem Tastenanschlagpaar eine Aktion zuzuweisen.
† Terminals verfügen häufig über Funktionstasten und Pfeiltasten, die auch Zeichenfolgen erzeugen, die Steuerzeichen enthalten. Diese Sequenzen beginnen normalerweise mit ASCII-Code 27 (ESCAPE).
;
an Emacs, also erfasst es nichts . Was passiert, ist, dass Strg +; und nackt; Senden Sie die gleichen Informationen. Welches ist es: Erfassung (dh Emacs erhält nichts) oder Informationsverlust (dh Emacs erhält;
)?