アスキーコードについて調べてみた

に触発されて,アスキーコードと修飾キーの関係を調べてみた.

コントロールキー

テレタイプ端末、及び初期のコンピューターキーボードでは、コントロールキーを押しながら他のキーを押すと、生成されるASCIIの下位5ビット以外がゼロとなった。(中略)
コントロールキーとは制御文字を生成するための修飾キーである。

コントロールキー - Wikipedia

なにー,そういう意味があったのか.下位5ビットのマスクだったとは.ということは,対応している制御文字と印字可能文字は,下位5ビットが同じなのか.
確認してみる ⇒ASCII - Wikipedia

アスキーコード 名前/意味
000 0011 テキスト終了 (ETX)
100 0011 C
000 0111 ベル (BEL)
100 0111 G
000 1000 後退 (BS)
100 1000 H
000 1010 改行 (LF)
100 1010 J
001 1011 エスケープ (ESC)
101 1011 [

おおお,ほんとだ.なぜ,Ctrl+C で終了したり,Ctrl+[ でエスケープになるのか初めて分かった.Ctrl+H でバックスペース,Ctrl+J で改行なのも意味があると.

シフトキー

当初のタイプライターでは、構造上1つのキーには1つの文字しか割り当てることができず、(中略)大文字しか打ち出せなかった。そこで、「シフト動作」が考案された。プラテン下に配置していた印字機構を前後方向に一組増設し、シフトキーをタイプするとプラテン側が前後にずれる[1]。これにより、シフトキーによる文字の打ち分けが可能となった。(中略)
コンピューター用のキーボードも当初はタイプライターを流用したため、シフトキーの位置・機能・挙動はそのまま引き継がれた。

シフトキー - Wikipedia

なるほど,つまり「ずらす」という意味で "Shift" ということか.プラテンがなにかよく分からないけれど,タイプライター由来のキーなのね.

ESC キー

The Esc key is a key labeled Esc or Escape that is used to generate the ASCII Escape character (Control-[, ASCII code 27 in decimal), the character code traditionally used to initiate an escape sequence. As most computer users no longer are concerned with the details of controlling their computer's peripherals, the task for which the escape sequences were originally designed, the escape key was appropriated by application programmers, most often to mean Stop.

Esc key - Wikipedia

ESC キーは,最初はエスケープ文字を入力するためのキーとしてデザインされた.けれど,その名前から,次第に停止や終了の役割を与えられるようになった,と.
でもなんで,制御文字のうちエスケープ(Ctrl+[)だけ一つのキーとして独立したのだろう.頻繁に入力するから?その割には,へんぴな場所に配置されているような気もする.
よく考えたら,別にエスケープだけじゃない.タブ(Ctrl+I)やバックスペース(Ctrl+H)とかもそうですね(たぶん).

改行コード

なぜ,改行関連の文字が LF と CR の二種類あるのか,という話.

テレックスに用いられていたITA2では、「改行」の動作をCR(0x08)+LF(0x02)によって実現していた。すなわち、プリンタヘッドを新しい行の先頭に移動するという「改行」の動作を、現在行の先頭に移動するCR(キャリッジリターン)の動作と、新しい行に移動するLF(ラインフィード)という2つの動作に分割し、それぞれ独立して制御するよう設計されていた。

改行 - Wikipedia

まあ,このあたりはなんとなく知っていた.CR+LF だったり LF だったりするのは慣習や歴史の関係なんだろうな,と.
驚いたのは次の記述.

当時のシステムでは、テキストはテレタイプ端末との互換性を考慮して構成される必要があった。(中略)このシステムでは、プリンタヘッドが右端から復帰するのに1文字の時間では間に合わなかった。これがCRが先に送られた理由である。

改行 - Wikipedia

なんと,LF+CR ではなくて CR+LF になったのは意味があったのだ.面白いな〜.