おそらく、実際の端末を使用しなかったために混乱が生じた可能性があります。真面目なコンピューターが数台の直立した冷蔵庫のサイズだった頃、端末は文字と文字だけを使ってシリアルケーブルで中央のコンピューターと通信していました。文字は、ASCIIやEBCDICなどの一部の標準化された文字セットの一部でしたが、通常はASCIIです。ASCIIには33の制御文字があり、端末オペレーターは特殊なキー(DELなど)を押すか、CTRLキーを押しながら別のキーを押すことによってそれらを送信しました。中央コンピュータは、結果として生じる制御文字のみを確認しました。文字を生成するためにどのキーが押されたかはわかりませんでした。
xtermなどの端末エミュレーションプログラムは、その動作を模倣します。端末エミュレーターは33個のASCII制御文字をすべて送信する方法を提供し、Emacsはそれらの文字が送信された場合にそれらを受信します。しかし、Emacsは上記の説明の中央コンピューターのようなものです-端末エミュレーターの下で実行したときに実際に押されたキーを知る方法はありません。したがって、CTRLとセミコロンを押した場合、ターミナルエミュレーションプログラムがこれらのキープレスをASCII文字にマッピングしていない限り、Emacsは何かが入力されたことを認識しません。
端末エミュレータは通常、次のマッピングを使用して制御文字を生成します†:
ASCIIのキープレス
--------------------
エスケープ27
削除127
バックスペース8
Ctrl + Space 0
CTRL + @ 0
CTRL + A 1
CTRL + B 2
CTRL + C 3
等...
CTRL + X 24
CTRL + Y 25
CTRL + Z 26
CTRL + [27
CTRL + \ 28
CTRL +] 29
CTRL + ^ 30
CTRL + _ 31
CTRL +; そのリストには表示されません。端末は通常、CTRL + キーが制御文字にマッピングされていない場合、キーに割り当てられた印刷可能な文字を送信します。つまり、ターミナルエミュレータが送信することによって伝えていること 単独では、CTRL +;を押したときに何をすべきかがわかりません。
これはすべて、ターミナルまたはターミナルエミュレーションプログラムを使用している場合にのみ適用されます。Emacsを一部のウィンドウシステムでネイティブアプリケーションとして実行している場合、Emacsは文字だけでなく、キーストロークイベントへのフルアクセス権を持っています。したがって、EmacsはCTRLとセミコロンを一緒に押したことがわかり、そのキーストロークのペアにアクションを割り当てることができます。
† 端末には、制御キーを含む文字シーケンスを生成するファンクションキーと矢印キーが付いていることがよくあります。これらのシーケンスは通常、ASCIIコード27(ESCAPE)で始まります。
;
Emacsに送信するので、何もキャプチャしていません。何が起こっているのかはCtrl +です。と裸; 同じ情報を送信します。それはどれですか:キャプチャ(つまり、Emacsは何も受信しません)、または情報の損失(つまり、Emacsは受信します;
)?