当初TAB、RET、BS、LFD、ESC、DELは、特定のASCIIコントロール文字の名前として使用され、多用されるために自身の特別なキーをもつようになりました。たとえばTABはC-iの別の名前です。その後、ユーザーはEmacsでこれらのキーと、Ctrlキーと一緒にタイプするコントロール文字を区別できると便利なことに気づきました。したがってほとんどの現代的な端末では、これらは同じではありません。つまりTABはC-iと異なります。
これら2種類の入力を、キーボードが区別するなら、Emacsも区別することができます。Emacsは特別なキーをtab
、return
、backspace
、linefeed
、escape
、delete
という名前のファンクションキーとして扱います。これらのファンクションキーは、そのキー自体に何もバインドされていない場合は、対応するASCII文字に自動的に変換されます。結果として、ユーザーもLispプログラマーも、彼らがそうしたいと望まない限りは、これらの区別に注意を払う必要はありません。
(たとえば)TABとC-iを区別したくない場合は、ASCII文字のTAB(8進コード011)だけにたいしてバインディングを1つ指定します。これらを区別したいときは、ASCII文字にたいして1つのバインディング、ファンクションキーのtab
にたいして別のバインディングを指定します。
通常のASCII端末では、TABとC-i(および同じような他のペアー)を区別する方法はありません。なぜなら端末はどちらの場合も同じ文字を送るからです。