GNU Emacsは、キーボード入力に対しては拡張ASCII文字集合を使います。 また、ファンクションキーやマウスボタン操作のような文字以外の 入力イベントも受け付けます。
ASCIIは、128の文字コードから成ります。 これらのコードの中には、`a'や`='のような 図形記号に割り当てられているものもあります。 それ以外は、Control-aのようなコントロール文字です (通常、C-aと略記)。 C-aの名前は、<CTRL>キーを押し下げたままaを 押すことからきています。
ASCIIコントロール文字の中には、特別な名前が付いたものもあります。 多くの端末では、コントロール文字を打つための特別なキーを備えています。 たとえば、<RET>、<TAB>、<DEL>、<ESC>がそうです。 空白文字は、以下では普通<SPC>と表記します。 厳密にいえば、表示した図形が空白である図形文字です。 C-jに対する別名である『linefeed』(ラインフィード) 1という ラベルが付いたキーを備えたキーボードもあります。
Emacsでは、数千の印字文字(see International)、 追加のコントロール文字、任意の文字と組み合わせ可能な修飾子を導入して、 ASCII文字集合を拡張しています。
ASCII端末では、利用可能なコントロール文字は32個しかありません。 これらは、英字と`@[]\^_'のコントロール変種です。 さらに、コントロール文字では、シフトキーは意味を持ちません。 つまり、C-aとC-Aは同じ文字であり、Emacsは区別できません。
しかし、Emacsの文字集合自体には、 すべての印字文字にコントロール変種を用意する余地があり、 C-aとC-Aを区別できます。 Xウィンドウシステムでは、これらすべての文字を入力できます。 たとえば、C--(コントロールマイナス)とC-5は、 Xウィンドウシステム上では意味を持つEmacsコマンドです。
Emacsの文字集合に対するもう1つの拡張は、修飾ビットの追加です。 通常は1ビットの修飾ビットだけを使い、 このビットをメタ(Meta)と呼びます。 すべての文字にはメタ変種があります。 たとえば、Meta-a(通常はM-aと略記)や M-A(M-aとは異なる文字だが、Emacsでは通常、同じ意味)、 M-<RET>、M-C-aです。 伝統的な理由で、通常、M-C-aよりむしろC-M-aと書きます。 論理的には、2つの修飾キー<CTRL>と<META>の順序は関係ありません。
端末の中には<META>キーを備えたものもあり、 このキーを押し下げることでメタ文字を打てます。 たとえば、Meta-aは、<META>を押し下げたまま aを押して入力します。 <META>キーは<SHIFT>キーと同じように働きます。 しかし、このようなキーのラベルがつねに<META>であるとは限りません。 というのは、この機能は、別の主目的を持つキーとするための 特別なオプションであることがままあるからです。
<META>キーがなくても、<ESC>で始まる2文字列を使って メタ文字を入力できます。 つまり、M-aを入力するには、 <ESC> aと打ちます。 C-M-aを入力するには、<ESC> C-aと打ちます。 この方法に慣れているのであれば、 <META>がある端末でも、<ESC>を使ってかまいません。
Xウィンドウシステムには、他にもいくつかの修飾キーがあり、 すべての入力文字に適用できます。 これらは、<SUPER>、<HYPER>、<ALT>と呼ばれます。 文字にこれらの修飾子が付いていることを示す意味で、 `s-'、`H-'、`A-'と書きます。 つまり、s-H-C-xは、Super-Hyper-Control-xを省略したものです。 すべてのX端末に、実際にこれらの修飾子用のキーがあるわけではありません。 実際、<ALT>とラベルされているにも関わらず、 実は<META>として機能するキーを持つ端末が多くあります。 Emacsの標準キーバインディングには、 これらの修飾子が付いた文字はありません。 しかし、Emacsをカスタマイズして、それらに独自の意味を割り当てることができます。
キーボード入力には、 ファンクションキーや矢印キーのような文字以外のキーも含まれます。 マウスボタンも文字の範囲には入りません。 これらのイベントも、修飾キー<CTRL>、<META>、 <SUPER>、<HYPER>、<ALT>を使って、 キーボード文字と同じように修飾できます。
文字入力と非文字入力の両者を合わせて、 入力イベント(input events)と呼びます。 より詳しくは、 See 入力イベント。 Lispのプログラミング抜きに、 文字イベントや非文字イベントの意味を再定義したい場合には、 Customizationを参照してください。
ASCII端末では、ASCII文字だけしかコンピュータに送れません。 これらの端末では、文字の並びを使って各ファンクションキーを表現します。 ただし、キーボード入力ルーチンがこれらの特別な文字の並びを認識して、 Emacsの他の部分に渡すまえにファンクションキーイベントに変換してしまうので、 これらの文字の並びがEmacsユーザーの目にふれることはありません。