チェコ語を Linux で扱う

Linuxでチェコ語文字を表示・入力する方法について紹介します。


私が使用したDebian GNU/Linux (3.0(woody)以降〜現在の最新は11(bullseye)) では、特に表示させるために設定が必要となったということはありませんでした。つまり、何もしなくても、FirefoxやemacsなどX上の主要なアプリケーションでチェコ語が表示できていました。
そこで、ここでは専ら「書く」方について、述べます。


注:新規インストールしたDebian GNU/Linux 11 (bullseye) 環境を元に記述しています。その他の環境とは異なる点があるかも知れません。

ここでは、Unicodeでの日本語・チェコ語混在テキストの編集について述べています。
嘗て、Linux 環境で Unicode utf-8 が主流となる前は、Unicode を扱えるテキストエディタは限られおり、このページでもそうしたアプリケーションの選択肢の一つとして emacs について特に言及していました。しかし近年、主要な Linux ディストリビューションでは Unicode utf-8 が標準となっており、大抵のテキストエディタで utf-8 での読み書きが出来るようになっています。

必要なもの

  1. X-window が使える Linux環境
  2. お好みのテキストエディタ(このページの作者は emacs を使用しています)
  3. チェコ語フォント
サーバ用の構成で環境構築していない限り、emacs 関連パッケージ以外は大概インストールされているでしょう。


入力に ibus-mozc を使う

ディストリビューションによってデフォルトの入力環境が異なる場合がありますが、 emacs や X上の他のアプリケーションでも差異なく日本語・チェコ語を含む多言語入力を扱いたい場合、 ibus-mozc はそれを満たす選択肢の一つになります(uimを使った入力環境の場合、emacs は他のアプリケーションと異なるキーマップでの入力を強いられますが、ibus-mozc にはその面倒がありません)。

ibusのインストールと設定

他の IME から ibus-mozc 乗り換える場合、インストールした上で切り替えます。まずはインストール。
# apt-get install ibus-mozc
次に、ime-config を起動して、IME を切り替えます。
$ im-config
im-config のメッセージに従い、ibus-mozc を選択するよう、設定を行います。
設定後、ibus が起動されている筈ですが、動いていない場合は下記のコマンドで再起動を試みます。(ibus の daemon はユーザ権限で動作し、 root 権限を必要としません)
$ ibus-daemon -rdx
ibus の設定を起動し、入力メソッドの設定します。
デスクトップ環境または Window manager の設定によっては、メニュー等から選択・起動出来る場合もありますが、もし見つからない場合は shell から下記のコマンドで起動することが出来ます。
$ ibus-setup
起動したら、「入力メソッド」タブの「追加」ボタンを押し、追加する言語名をクリックし、「追加」ボタンを押します。
追加したい言語が表示されている中にない場合(チェコ語はこれに該当します)は、枠の中の一番下にある「︙」をクリックすると、選択可能な全ての言語の一覧が表示されます。
また、入力言語の切り替えキーの設定は、「一般」タブで設定します。デフォルトは "Ctrl-space" です。
設定し終わったら、「閉じる」をクリックして「IBusの設定」を閉じます。

ibus上で「チェコ語→日本語」の切替時に起きる問題

ibus でチェコ語/日本語の切り替えて使うと、チェコ語から日本語への切り替えた際、日本語文字を入力出来るようにはなりますが、Y と Z が入れ替わったままになる他、その他の数字・記号等もチェコ語キーレイアウトのままになってしまいます。
ibus の不具合のように個人的には思いますが、これは以下に示す設定ファイルの編集で回避出来るようになります。
  1. 下記のファイルを、root 権限で開きます。
    /usr/share/ibus/component/mozc.xml
  2. 以下のように変更して保存します:
    変更前
    <layout>default</layout>
    変更後
    <layout>jp</layout>
  3. ibus をユーザ権限で再起動します。
    $ ibus-daemon -rdx

チェコ語のキーボードレイアウト

チェコ語文字の入力方法は、WindowsやMacの場合と同じです。
その他の記号等を入力する場合のために、以下にチェコ語のキーボードレイアウトを示します。
尚、キーボードレイアウトを表示するには、以下のコマンドを実行します(要 gkbd-capplet パッケージ):
$ gkbd-keyboard-display -l cz
コマンドラインオプションの "cz" の部分に ISO 3166-1 の国名コードを小文字で指定すると、他の国の言語のキーボード配列を表示させることが出来ます。

X上でのチェコ語キーボードレイアウト
このキーボードレイアウトに於いて、1つのキーに複数の文字(最も多いもので4つ)が割り当てられているものについては、それぞれの文字は以下の同時押しキーとの組み合わせで入力します:
上のキーレイアウトにおける、各キーの各印字位置の文字を入力するための同時押しキー
  印字位置
左側 右側
印字位置 上段 Shift AltGr (右Alt) + Shift
下段 (なし) AltGr (右Alt)

例えば、"c" のキーの場合、 と云った具合です。
チェコ語のキーボードレイアウトに於いては、右の Alt キーは AltGr というキーとなり、左 Alt キーとは機能が異なるので注意が必要です。
AltGr が物理的に使えない(=右Altキーがない)キーボードを使わなければならない場合は、右AltキーのないキーボードでAltGrを他のキーに割り当てる設定で説明している方法で他のキーに AltGr を割り当てて使うという手もあります。

gkbd-keyboard-display では全てのキーバインドが同時に確認出来る点が便利ですが、逆にこれが見難いと感じられる場合は、"florence" や "onboard" のような多言語対応のスクリーンキーボードを使用する方が良いでしょう。
これらでは、 Shift や AltGr を押すと、キートップの表示がそれらのキーとの組み合わせで入力出来る文字に切り替わります(OnBoard は押してから表示切り替わるまで、2秒ほど待たされますが)。


...ということで、こんなことが出来ます。
X上で直接チェコ語文字(Zdeněk Fibich Vítězslav Novák)を入力してみたところ。勿論Googleの検索文字入力にも使えます。

emacs でスペルチェッカーを使う

慣れないうちの打ち間違いはつきもの、ということで、スペルチェッカーを使います。
ここでは、ispellaspell の2つのスペルチェッカーについて触れます。
何れもデフォルトでは英語用になっていますが、チェコ語にも対応しているので、それが出来るようにします。
尚、ispellは開発が終了しており、現在は後継ソフトとしてaspellの開発が進められています。

スペルチェッカーを使う(ispell)

なのでaspellを使った方が良いとは思いますが、ひとまず覚書として。
大抵インストールされているとは思いますが、なければ入れます。
# apt-get install ispell
尚、チェコ語辞書はほぼ間違いなく入っていないので、入れます。
# apt-get install iczech
emacsから使いますが、特に設定は必要ないようです。
チェコ語の文書をemacsで開き、チェコ語でスペルチェックするにはispellを起動する前に
M-x: ispell-change-dictionary czech
とします。それから下記コマンドを実行すると、スペルチェックが始まります。
M-x: ispell
通常、ispellが正しくないと判断した単語に対して修正候補が列挙され、その中から正しいものの番号を選ぶと、その綴りで修正対象が置き換えられます。
主なコマンド
キー コマンド 説明
SPACE Accept the word this time only 単語を修正せず、次へ
i insert into private dictionary 単語を修正せず、その単語をユーザー辞書に追加する。
r replace word 単語を修正候補で修正せず、手動で修正する。
q Quit ispellを終了する。
C-h help helpを表示する。

スペルチェッカーを使う(aspell)

aspellは、前述のispellの後継ソフトです。 ispellと同じインターフェースを備えているため、ispellを呼び出すことの出来るアプリケーションでは、コマンド名を入れ替えるだけでaspellを呼び出すことが出来ます。
まずはインストールから。チェコ語辞書(aspell-cs)も一緒に入れます。
# apt-get install aspell aspell-cs
${HOME}/.emacs.d/init.el または ${HOME}/.emacs に、下記の設定が必要になります:
;; コマンドの設定
(setq ispell-program-name "aspell") ; ispell の代わりに aspell を使う
これで、ispellの代わりにaspellが呼び出されるようになります。
チェコ語の文書をemacsで開き、チェコ語でスペルチェックするにはaspell(呼び出しコマンド名はispellのまま)を起動する前に
M-x: ispell-change-dictionary cs
とします。→ ispellでは czech でしたが、 aspell では cs です。ISO 639に則っていると思えば理解しやすいかもしれません。
それからispellの場合と同様、下記コマンドを実行すると、aspellによるスペルチェックが始まります。
M-x: ispell
後の操作は、殆どispellと同様のようです。

LibreOffice でスペルチェッカーを使う

LibreOfficeに付属しているスペルチェッカーで、チェコ語のスペルチェックを行えます。
...とはいえ、やはりデフォルトのままでは辞書がないので、インストールします:
# apt-get install myspell-cs
あとはLibreOffice writer を起動し、チェコ語の書かれた文章を開くなり作るなりした後、スペルチェッカーを起動します。
自動スペルチェックが有効になっていると(デフォルトで有効になっている筈)、スペルミスと判定された単語の下に赤い波線が付けられます。但し、一部の単語の格変化形が誤ってスペルミスと判定される場合がありますが。
自動スペルチェックさせるには、
  1. LibreOffice Writer にて「メニュー」―「ツール」―「オプション」でオプションダイアログを起動
  2. オプションダイアログ左側のメニューから「言語設定」―「ドキュメントの標準言語」―「政要諸言語」で「チェコ語」を選択
  3. 同様に「言語設定」―「文章作成支援」―「使用出来る言語モジュール(A):」で「Hunspellスペルチェッカー」にチェックが入っていることを確認

右AltキーのないキーボードでAltGrを他のキーに割り当てる設定

チェコ語キー配列を使って入力をそれなりにやっていると、記号等も入力する場面が出てきます。チェコ語キー配列で記号も入力する場合、「チェコ語のキーボードレイアウト」で示したキー配列からも分かるように、 AltGr キーが必要になります。記号の入力時だけ日本語キー配列等に切り替えるという手もなくはありませんが、個人的には AltGr を使う方法と比べて煩雑に思います。
そこで「AltGr も覚えて、日本語以外はチェコ語キー配列で一通り入力出来るようにしよう」となるわけです。しかしながら、比較的安価なノートPCの場合くらいかもしれませんが、右Altキーのないキーボードがあります。ここで述べるのは、そうしたキーボードでも AltGr を入力出来るようにする方法です。
ここでは、xev で調べた結果を基に xmodmap を使用して設定を行います。
まずは右Altキーのあるキーボードで、チェコ語キー配列に切り替えた後、AltGr キーのキーコードと機能名を調査します。
X上の仮想端末から xev を起動した後、AltGr キーを押します。xev の出力は以下のようになります:
KeyPress event, serial 38, synthetic NO, window 0x7e00001,
    root 0x941, subw 0x0, time 6139892, (173,-10), root:(1126,247),
    state 0x0, keycode 108 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
    XKeysymToKeycode returns keycode: 92
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 38, synthetic NO, window 0x7e00001,
    root 0x941, subw 0x0, time 6140177, (173,-10), root:(1126,247),
    state 0x80, keycode 108 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
    XKeysymToKeycode returns keycode: 92
    XLookupString gives 0 bytes: 
   XFilterEvent returns: False
        
これより、AltGr に就いては以下であることが分かります。
AltGr キーのキーコードと機能名
キーコード 機能名
108 ISO_Level3_Shift
次に、AltGr のないキーボードで、AltGr を割り当てるキーをどれにするか決め、同様に xev を立ち上げてからそのキーを押し、キーコードを取得します。
ここでは [変換] キーの機能を AltGr に置き換えることにします。
KeyPress event, serial 38, synthetic NO, window 0x9000001,
   root 0x941, subw 0x0, time 18825870, (171,-6), root:(884,59),
    state 0x0, keycode 100 (keysym 0xff23, Henkan_Mode), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 38, synthetic NO, window 0x8600001,
    root 0x941, subw 0x0, time 18826142, (171,-6), root:(884,59),
    state 0x0, keycode 100 (keysym 0xff23, Henkan_Mode), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False
        
これより [変換] キーのキーコードが100であると分かりました。
これらの情報を基に、${HOME}/.Xmodmap に、以下を記述します:
! チェコ語キーボードで [変換] キーを AltGr に変更する
keycode 100 = ISO_Level3_Shift
注: "!" で始まる行はコメントなので、必ずしも書く必要はありません。
次に、以下のコマンドを実行するか、ログインし直します。(前者の方がお手軽でしょう)
$ xmodmap ~/.Xmodmap
これにより設定が反映されて、チェコ語キー配列のときは [変換] キーを AltGr として使えるようになります。




戻る...
メッセージを送る...