Next: , Previous: Language Environments, Up: International


16.4 入力方式

入力方式(input method)は、 対話的に入力するために特別に設計された文字変換の一種です。 Emacsでは、典型的には、各言語向けに専用の入力方式があります。 ときには、同じ文字を使ういくつかの言語で入力方式を共有します。 複数の入力方式を使う言語も少しはあります。

入力方式のもっとも単純なものは、ASCII文字を別のアルファベットに 対応させることで動作します。 ギリシア語とロシア語の入力方式はこのように動作します。

より強力な方法は合成で、文字の列を1つの文字に変換します。 多くのヨーロッパの入力方式は、文字のうしろにアクセント文字が続く列 (あるいはその逆順)から、1つの非ASCII文字を生成する合成を使います。 たとえば、いくつかの入力方式では、 文字の列a'を1つのアクセント付き文字に変換します。 これらの入力方式には、その方式に固有の特別なコマンドはありません。 印字文字の列を合成するだけです。

音節文字用の入力方式では、典型的には、対応付けたあとで合成します。 タイ語と韓国語の入力方式は、この方法で動作します。 まず、文字を音声記号に対応付けます。 そして、1つの音節全体を構成するそれらの列を1つの音節記号に対応付けます。

中国語や日本語では、より複雑な方法が必要です。 中国語の入力方式では、まず、中国語の単語の発音表記を入力する (とりわけ入力方式chinese-py)か、 1文字の各部分部分の列(とりわけ入力方式chinese-4cornerchinese-sw)を入力します。 1つの発音表記は、普通、多くの異なる中国語の文字に対応しているので、 特別なEmacsコマンドを使って候補群から1つを選ぶ必要があります。 C-fC-bC-nC-pと数字キーは、 この状況で候補を選ぶために使われる特別な定義になっています。 <TAB>は、すべての候補をバッファに表示します。

日本語の入力方式1 では、まず、発音表記を使って1つの単語全体を入力します。 そして、単語がバッファに入ったあとで、 Emacsは大きな辞書を使って1つ以上の文字へ変換します。 1つの発音表記は、たくさんの異なる日本語の単語に対応しているので、 その中から選ぶ必要があります。 候補を巡回するには、C-nC-pを使います。

ときには、入力方式での処理を切り離したほうが便利なことがあります。 そうすれば、入力した文字は後続の入力文字と結合されません。 たとえば、入力方式latin-1-postfixでは、 キー列e 'は結合されてアクセント付き‘e’になります。 これらを別々の文字として入力したいときはどうするのでしょう?

1つの方法は、アクセントを2回打つことです。 これは、アルファベットとアクセントを別々に入力する特別な機能です。 たとえば、e ' 'は、2つの文字‘e'’になります。 別の方法は、eのあとに結合されない別の文字を打ってから、 すぐにそれを消すことです。 たとえば、 ‘e’と‘'’を入力するには、e e <DEL>'と打ちます。

別の方法はより一般的ですが、打つのは簡単ではありません。 2つの文字のあいだでC-\ C-\を打って、結合を止めます。 これは、コマンドC-\toggle-input-method)を2回使っています。

C-\ C-\は、インクリメンタルサーチの中では特に便利です。 というのは、結合する文字を待つことを止めて、 すでに入力したものを探索し始めるからです。

変数input-method-highlight-flaginput-method-verbose-flagは、 入力方式に何が進行中かをどのように表示させるかを制御します。 input-method-highlight-flagnil以外ならば、 バッファでは(入力途中の)部分列を強調表示します。 input-method-verbose-flagnil以外ならば、 (ミニバッファの中でなければ) つぎに打鍵できる文字の一覧をエコー領域に表示します。


Footnotes

[1] 【訳注】言語環境がJapaneseのときに デフォルトで使用されるLEIMに含まれているもの。 「ローマ字→ひらがな→漢字」と変換するが、あまい使いやすくはない。 WNN、かんな、SKKなどを使うには、Emacsの配布とは別の非公式パッチを 自前で当てる必要がある。 ただし、これらを用いた場合、日本語を入力できない場面もあることを 承知しておく必要がある。