ハウツー:キーボードから拡張文字を入力可能にする

 西ヨーロッパ言語には存在しない文字はおろか、アキュートアクセント付きのe(「é」)のような分音符号付きの文字を入力する場合などでさえ、GNU/Linuxユーザの標準的な英語のキーボードのレイアウトはほとんどタイプライターから進歩していない。しかしここ数年で、拡張文字と複数のキーボードレイアウトを利用することはずっと簡単にできるようになってきた。そして最近では拡張文字のサポートをGNOMEやKDEからすぐに追加することもできる。また万一何らかの理由でGNOME/KDEのインターフェースからはうまくできなかった場合でも、その他の方法を利用して入力環境を向上させることができる。

 必要なサポートを追加する前にまず、利用可能な様々なオプションを把握し理解するためにも拡張文字のサポート関連の用語を押さえておこう。拡張文字のサポートでは以下のような様々なタイプのキーが使われる。

  • デッドキー:そのキーの入力だけでは何も出力されないが、次に入力されるキーを変更するようなキー。通常は次に入力されたキーに分音符号を追加するために使用する。例えば多くのレイアウトでは、グレイヴキー(「`」)やチルダキー(「~」)を入力した後に続けてキーを入力すれば、「à」や「ã」になる。
  • Composeキー、AltGraphキー、multi_keyキー:ちょうどShiftキーが(たいていの場合は)小文字の代わりに大文字を出力させるように、次のキーを入力した際にそのキーを変更するようなキー。通常AltGraphキーは右のAltキーで、Composeキーは右のWindowsキーかMenuキーだ。なお「multi_key」という用語は、Composeキーの意味でXウィンドウシステムで使われることが多い。一般的にはこれらのキーのうちのどれか一つがあれば良いが、3つすべてを使うことができるようにシステムを設定することもできる。これら3つのキーで入力することができる文字は/usr/X11R6/lib/X11/locale/ロケール名/Composeで定義されているが、手元の特定のシステム上でこのファイル中のすべての項目が使えるとは限らないので、いろいろ試してみる必要があるだろう。
  • 第3レベル選択キー:標準的な英語のレイアウトでは、どのキーについても通常の場合に出力される文字とShiftキーを押しながら入力された場合に出力される文字とが割り当てられている。第3レベル選択キーは、各キーに3つめの文字を出力させるために入力するキーだ。例えば、第3レベル選択キーの次に「y」を入力すれば円記号(「¥」)が、また第3レベル選択キーの次に「l」を入力すれば英ポンド記号(「£」)が出力されるようになっているレイアウトなどがある。

 以上の3つのキーはすべて、レイアウト(選択可)によって定義されていても良いし、ユーザの設定によって定義しても良い。GNOMEのインターフェースもKDEのインターフェースも、ユーザが以上の3つのキーの意味を把握していることを前提としている。

GNOMEとKDEでの方法

 GNOMEとKDEの各最新版では、拡張文字について似たようなサポートが提供されている。GNOMEでは、System(システム)→Administration(管理)またはSystem(システム)→Preferences(設定)にキーボードについてのオプションが用意されている(正確な位置はディストリビューションによって異なる)。KDEでは、Regional and Accessibility(地域とアクセシビリティ)→Keyboard layout(キーボードのレイアウト)を見れば良いだろう。

 GNOMEでもKDEでも、Layout/Layouts(レイアウト)タブの中で何十という(正確な数はディストリビューションによって異なる)言語用キーボードの中からの複数のキーボードのサポートを有効にすることができる。ただし言うまでもなく、使用したい言語用のフォントが必要となる。なおキーボードを変更した後、新しい設定を有効にして使用するには一度ログアウトして再度ログインし直す必要がある。

 普段英語を使用していて西ヨーロッパ言語でよく使われる分音符号を使用できるようにすることが主な目的の場合には、ベースのレイアウトを決めておいた上で、その変種のレイアウトを検討していくのが良いのではと思うかも知れない。つまり例えば、US Englishレイアウトの変種の中には(Dvorakなどのキーボードレイアウトの他に)国際化版のレイアウトとして、「AltGraphキーとデッドキーがあるレイアウト」、「デッドキーのみがあるレイアウト」、単に「Alternative International」とだけ記載されているレイアウトの3つのレイアウトがある。

 しかし残念ながら、これらのオプションはどれも役に立たない可能性がある。Fedora 8で試してみたところ、「AltGraphキーとデッドキーがあるレイアウト」と「Alternative Internationalレイアウト」は使えるようにすることができなかった。「デッドキーのみがあるレイアウト」は使えるようにすることはできたものの、アキュートアクセントではなく単なるアポストロフィーを入力したい場合には不便なことにスペースを入力する必要があり、これではタッチタイピストにとっては慣れるのが非常に面倒かもしれない。

 したがってすでに使用しているレイアウトを使用したままレイアウト自体は変更せずに、GNOMEではLayout Options(レイアウトオプション)タブ、KDEではXkb Options(Xkbオプション)タブから、レイアウトの設定を調整するのが良いと思う。Layout Option(レイアウトオプション)タブには、Caps Lockキーとテンキーの動作を変更するオプションやCtrlキーの位置を変更するためのオプションなどの他にも、拡張文字をサポートするために役立つ様々なオプションがある。例えば複数のレイアウトを切り替えるキーを設定するオプションや、第3レベル選択キーを定義するオプション(ユーロ記号の入力のサポートを追加する別のオプションとともに使用する)などがある。

 どちらのタブでも最も重要な点として、Composeキーを定義することができるということがある。なおこのオプションはログアウトしなくてもすぐに有効になる。私の場合、このオプションが拡張文字サポート関連では最も便利だった。

.Xmodmapを利用する方法

 2、3年前にデスクトップに拡張文字のサポートが組み込まれるようになる前までは、拡張文字のサポートを追加するもっとも簡単な方法は.Xmodmapを使用することだった。この方法は、GNOMEやKDEでの設定がどれもうまく行かなかったり(実際Debian Lennyで試したところどれもうまく行かなかった)、別のデスクトップ環境を使用する場合などには現在でも便利だ。

 この方法を利用するためには、システムをUTF-8ロケールにするとともに、/etc/X11/xorg.confの中の、キーボード関連のInputDeviceセクションで以下のような行を指定しておく必要がある。

Option  "XkbLayout"  "en_US.utf8"

 次にmulti_keyを定義するため、コマンドラインを開いてxevコマンドを実行して、multi_keyとして設定したいキーを入力する。 ここでコマンドラインに表示されるキーコードを確認しよう(なおキーコードはキーボードによって異なる)。

 キーコードが分かったら、テキストエディタを開いて以下のような行を入力する。

keycode <キーコード> = Multi_key

 このファイルを自分のホームディレクトリの中に「.Xmodmap」という名前で保存して、Xウィンドウシステムの再起動かリブートをすれば、拡張文字サポートが有効になる。

 リブートしても有効にならない場合には、キーボードのレイアウトが適切になっているかどうかや、/etc/X11/xorg.confの中でUTF-8言語がちゃんと定義されているかどうかなどを確認してみよう。また「nodeadkeys」オプションが削除されているか確認してみよう。さらにxorg.confの中でmulti_keyを定義する必要もあるかもしれない。例として、左のWindowsキーを使用したい場合には以下のような行を追加する。

Option  "XkbOptions"  "compose:lwin,grp:switch"

 別のキーを使用したい場合にはキーを定義する部分を変更すれば良いだけなので、「lwin」の部分を、右のWindowsキーを使用したい場合には「rwin」に、右のAltキーを使用したい場合には「ralt」に変更すれば良い。

その他の方法

 以上のような方法で必要な文字サポートが追加できない場合にも、少なくともまだあと2つの方法が残されている。一つめ方法は複数のキーボードレイアウトをサポートするための古典的な方法としてSCIM(Smart Common Input Method)を利用するという方法だ。SCIMは、一緒に使用できる様々なキーボードレイアウトデータとともに、多くのディストリビューションのレポジトリから入手可能だ。SCIMは特に中国語、日本語、韓国語、タイ語などのアジア圏の言語を得意としている。ただしSCIMの大きな難点は、複雑なセットアップが必要だということだ(しかもプロジェクトの文書は数年前から更新されておらず、あまり役に立たない)。ただし最新版のUbuntuリリースでSCIMを使用するためのガイドがオンラインで公開されている。

 2つめの方法はSCIMに似たもう一つの方法として、2年ほど前にもレビューしたKMFL(Keyboard Mapping for Linux)を用いるという方法だ。KMFLは、SCIMをベースとしていてセットアップがSCIMと同様に骨が折れるものの、Windows用のプロプライエタリなKeymanを開発している企業によって書かれていることもあって、より幅広いレイアウトがサポートされている。そのため特にあまり知られていないような言語のサポートが必要な場合などには役に立つかも知れない。

 いずれにしても、以上のようなさまざまな方法が利用できるようになってきたことによって、GNU/Linuxの拡張文字サポートはやっと使えるものになってきた。多言語化されたウェブアドレスの利用開始がもう間近に迫っていることを考えると、遅すぎると言っても良いくらいだろう。

Bruce Byfieldは、Linux.comとIT Manager’s Journalに定期的に寄稿するコンピュータジャーナリスト。

Linux.com 原文