Emacs で多言語入力(例.ドイツ語とフィンランド語)

ドイツ語やフィンランド語を勉強していると、いきなり各国語のメールで文通…なんて事はありませんけども、それでもやっぱりエディタでそれぞれの言語の特殊なアルファベットや記号を入力したい場合が出て来ます。例えばこのページを書く場合、ASCII文字 に加えてドイツ語の特殊な文字とフィンランド語の特殊な文字と日本語の文字が一つの同じファイルに混在する事になります。最近の Linux では文字コードがデフォルトで UTF-8 になっているので文字の混在自体には対応出来るので問題が無いのですが、キーボードから直接入力出来ない特殊な文字たちをどうやって入力すれば良いのでしょう?

ドイツ語の äÄ öÖ üÜ ß とフィンランド語の äÄ öÖ åÅ šŠ žŽ を入力したい!

ここにはぽちの普段使いのエディタ、Emacs で多言語入力を行う方法を、ドイツ語とフィンランド語を例にメモしておきます。言語環境は日本語、文字コードは UTF-8 になっているのが前提です。

Emacs での多言語入力のしくみ

Emacs での多言語入力を決定するのは、現在の入力方式 current-input-method の値です。例としてぽち環境の値を確認してみると、

C-h v current-input-method
current-input-method's value is 
"japanese-anthy-uim"

入力方式は uim を経由して anthy を利用する日本語入力方式の japanese-anthy-uim です。この値をセットするには

M-x set-input-method RET 入力方式

またはショートカットの

C-x RET C-\ 入力方式

とします。入力方式をセットするところで TABキーを押すと、現在どんな入力方式が選択出来るのかのリストが出ます。環境によっては選択可能な入力方式の種類や数が異なります。

Possible completions are:
TeX                       arabic                    ascii-direct-uim
ascii-elatin-uim          ascii-latin-uim           assamese-inscript
assamese-itrans           belarusian                bengali-inscript
bengali-itrans            british                   bulgarian-bds
bulgarian-phonetic        catalan-prefix            chinese-4corner
chinese-array30           chinese-b5-quick          chinese-b5-tsangchi
chinese-ccdospy           chinese-cns-quick         chinese-cns-tsangchi
chinese-ctlau             chinese-ctlaub            chinese-ecdict
chinese-etzy              chinese-punct             chinese-punct-b5
chinese-py                chinese-py-b5             chinese-py-punct
chinese-py-punct-b5       chinese-qj                chinese-qj-b5
chinese-sisheng           chinese-sw                chinese-tonepy
chinese-tonepy-punct      chinese-ziranma           chinese-zozy
croatian                  croatian-cc               croatian-postfix
croatian-prefix           croatian-qwerty           croatian-xy
cyrillic-jcuken           cyrillic-jis-russian      cyrillic-macedonian
cyrillic-serbian          cyrillic-translit         cyrillic-ukrainian
cyrillic-yawerty          czech                     czech-prog-1
czech-prog-2              czech-prog-3              czech-qwerty
danish-keyboard           danish-postfix            devanagari-aiba
devanagari-inscript       devanagari-itrans         devanagari-kyoto-harvard
dutch                     english-dvorak            esperanto-postfix
esperanto-prefix          ethiopic                  finnish-keyboard
finnish-postfix           french-alt-postfix        french-azerty
french-keyboard           french-postfix            french-prefix
georgian                  german                    german-postfix
german-prefix             greek                     greek-babel
greek-ibycus4             greek-jis                 greek-mizuochi
greek-postfix             gujarati-inscript         gujarati-itrans
hebrew                    icelandic-keyboard        icelandic-postfix
ipa                       ipa-kirshenbaum           ipa-x-sampa
irish-prefix              italian-alt-postfix       italian-keyboard
italian-postfix           japanese                  japanese-anthy-uim
japanese-anthy-utf8-uim   japanese-ascii            japanese-hankaku-kana
japanese-hiragana         japanese-katakana         japanese-zenkaku
kannada-inscript          kannada-itrans            korean-hangul
korean-hangul3            korean-hangul390          korean-hangul3f
korean-hanja              korean-hanja-jis          korean-hanja3
korean-symbol             lao                       lao-lrt
latin-1-alt-postfix       latin-1-postfix           latin-1-prefix
latin-2-alt-postfix       latin-2-postfix           latin-2-prefix
latin-3-alt-postfix       latin-3-postfix           latin-3-prefix
latin-4-alt-postfix       latin-4-postfix           latin-5-alt-postfix
latin-5-postfix           latin-8-prefix            latin-9-prefix
latin-alt-postfix         latin-postfix             latin-prefix
latvian-keyboard          lithuanian-keyboard       lithuanian-numeric
malayalam-inscript        malayalam-itrans          norwegian-keyboard
norwegian-postfix         oriya-inscript            oriya-itrans
polish-slash              portuguese-prefix         punjabi-inscript
punjabi-itrans            rfc1345                   romanian-alt-prefix
romanian-prefix           russian-computer          russian-typewriter
scandinavian-postfix      sgml                      slovak
slovak-prog-1             slovak-prog-2             slovak-prog-3
slovenian                 spanish-keyboard          spanish-postfix
spanish-prefix            swedish-keyboard          swedish-postfix
tamil-inscript            tamil-itrans              telugu-inscript
telugu-itrans             thai-kesmanee             thai-pattachote
tibetan-tibkey            tibetan-wylie             turkish-alt-postfix
turkish-postfix           ucs                       ukrainian-computer
vietnamese-telex          vietnamese-viqr           welsh

好きな入力方式を選んでセットしましょう。

C-\

で現在選択している入力方式と直接入力の切り替えが出来、

M-x quail-help

で現在選択している入力方式の使い方が表示されます。元の入力方式に戻す場合には、変更した時と同じように元の入力方式(例の場合は japanese-anthy-uim) を選び直しましょう。

ドイツ語の入力

入力方式に german-postfix を選んでドイツ語を入力してみましょう。

C-x RET C-\ german-postfix

german-postfix が有効になっていると次のように変換する事が出来ます。

ae  -> ä     AE  -> Ä
aee -> ae    AEE -> AE
oe  -> ö     OE  -> Ö
oee -> oe    OEE -> OE
ue  -> ü     UE  -> Ü
uee -> ue    UEE -> UE
sz  -> ß 
szz -> sz

フィンランド語の入力

入力方式に finnish-postfix を選んでフィンランド語を入力してみましょう。

C-x RET C-\ finnish-postfix

finnish-postfix が有効になっていると次のように変換する事が出来ます。

ae  -> ä     AE  -> Ä
aee -> ae    AEE -> AE
oe  -> ö     OE  -> Ö
oee -> oe    OEE -> OE

ほとんどの場合はこれで間に合うのですけれども、このままでは外来語や外来語由来の地名に使われる文字、åÅ šŠ žŽ が入力出来ません。そこで、finnish-postfix ではなく latin-9-prefix を使ってみます。これはヨーロッパで主流の文字コード Latin-1 (ISO-8859-1) の改定版である Latin-9 (ISO-8859-15) の特殊な文字を入力する為の入力方式です。

C-x RET C-\ latin-9-prefix

latin-9-prefix が有効になっていると次のように変換する事が出来ます。

"a -> ä     "A -> Ä
"o -> ö     "O -> Ö
/a -> å     /A -> Å
~s -> š     ~S -> Š
~z -> ž     ~Z -> Ž

これ以外にも latin-9-prefix で入力出来る文字や記号はたくさんあり、エストニア語とかもカバー出来ます。詳しくは M-x quail-help してみて下さい。

注意!:同じ一つのファイルに日本語と各国の特殊な文字が混在する場合は、必ず Unicode で保存しましょう。具体的には UTF-8 で保存するのをお勧めします。

おまけ

Webブラウザの検索ウィンドウや Webサイトの入力フォームなどの Emacs 以外のアプリケーションでこうした特殊な文字を入力したい事もあるかもしれません。入力方式のフレームワークに uim を使っているのなら、

$ sudo apt-get install uim-latin

した後に UimElatin - uim-doc-ja - Project Hosting on Google Code を参考にして設定してみましょう。

動作確認環境 : Emacs23 on Debian GNU/Linux 6.0 squeeze

戻る


Last updated : 2011/03/26
Author : 犬山ぽち丸 / INUYAMA Pochimaru / Pochimaru Inuyama
E-mail : pochi@hoshinoumi.net
Key ID : 4A1B5E85
Key fingerprint : 4605 4D40 6154 20C1 5592 3E54 5A37 FEE9 4A1B 5E85

正当な XHTML 1.1 です 正当な CSS です