試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

かな入力でJISかな配列に対応させる古い方法

「ろ」と「ー」の2つのバックスラッシュの内の片方を、識別可能にするために変える

SCIM+Anthyの最新版ではJISかな配列に完全対応しているが、それ以外のかな入力環境では、キーコードの割り当て変更が必要。それを自動的に行うためには、

  1. キーコード変更の設定ファイルを用意し、
  2. それを適用するための準備をする

という作業を行う。

[一部]ファイル名: ~/.Xmodmap

keycode 133 = bar backslash

(2010/4/10)環境(ディストリのバージョンや設定)によってはこの値は変わるので、後述の方法でキーのキーコードを調べて入れる。Mandriva Linux 2010.0では

keycode 132 = bar backslash

となる。
${HOME}/.Xmodmapというファイル名で保存すると、デスクトップ環境によっては自動的にキーマップ変更が適用される。ウインドウマネージャのみの環境では、起動時に実行されるスクリプト

xmodmap ~/.Xmodmap

と記述して実行させる必要がある。

制約: 変更したキー(「\」と「|」)の入力方法が変わる

当然のことながら、このキー割り当て変更を行った場合、日本語を入力していないときに「ー」のキーでバックスラッシュは入力できず、代わりに「|」が出力される。上の設定例では、シフトキーを使用時にバックスラッシュが入力できる。

補足: キーコードについて

xevというコマンドをX上の端末(ターミナル)のシェルから実行すると、イベントのテストができ、押されたマウスのボタン番号や、押されたキーに割り当てられたコード番号なども分かる。「ー」のキーを押すと

KeyPress event, serial 31, synthetic NO, window 0x3a00001,
    root 0x1a5, subw 0x0, time 89027614, (-137,383), root:(414,812),
    state 0x10, keycode 133 (keysym 0x5c, backslash), same_screen YES,
    XLookupString gives 1 bytes: (5c) "\"
    XmbLookupString gives 1 bytes: (5c) "\"
    XFilterEvent returns: False

と、133番でバックスラッシュに割り当てられていることが分かる。同様に「ろ」のキーは

KeyPress event, serial 31, synthetic NO, window 0x3a00001,
    root 0x1a5, subw 0x0, time 89133731, (251,-104), root:(802,325),
    state 0x10, keycode 211 (keysym 0x5c, backslash), same_screen YES,
    XKeysymToKeycode returns keycode: 133
    XLookupString gives 1 bytes: (5c) "\"
    XmbLookupString gives 1 bytes: (5c) "\"
    XFilterEvent returns: False

と、211番でバックスラッシュであることが分かる。キー割り当てを変更した後の「ー」キーは、

KeyPress event, serial 31, synthetic NO, window 0x3e00001,
    root 0x1a5, subw 0x0, time 90615829, (-128,-49), root:(423,380),
    state 0x10, keycode 133 (keysym 0x7c, bar), same_screen YES,
    XLookupString gives 1 bytes: (7c) "|"
    XmbLookupString gives 1 bytes: (7c) "|"
    XFilterEvent returns: False

と、バーに割り当てられていることが分かる。

関連記事: