Cannaのカスタマイズ
(ATOK風キーアサインに変更等)
(2005/05/02)

さて、とりあえずCannaが起動するようになりましたが、これだけではまだまだ不便です。

まず、不便な点を列挙すると、
・キーアサインがCanna独自。普段使い慣れたATOK風にしたい。

・変換キー、無変換キーが使えない。

・SHIFT+SPACEでCannaが起動するのをやめたい。
 (できれば、SHIFT+SPACEで半角スペースが入力できるようにしたい)

などです。
幸運なことに、Cannaは非常に柔軟にできており、好みに応じて挙動が変えられるようになっていますので、一つづつクリアしていきましょう。


【キーアサインがCanna独自。普段使い慣れたATOK風にしたい】
これは結構簡単。
Cannaは定義ファイルで自由にキーアサインを変えることができるようになっています。そのファイルの中身を変えればOKです。
また、もともと有名な日本語入力システム用の設定ファイルが用意されているので、それに入れ替えるだけです。
まずは、コンソールやファイルマネージャーから、/usr/share/cannaディレクトリを見てみます。

↓コンソールから
xanuser1@VC37:~$ ls -l /usr/share/canna/
合計 216
-rw-r--r-- 1 root root 3173 2002-12-21 07:51 1.1.canna
-rw-r--r-- 1 root root 3308 2002-12-21 07:51 1.2.canna
-rw-r--r-- 1 root root 6124 2002-12-21 07:51 default.canna
-rw-r--r-- 1 root root 2423 2002-12-21 07:51 default.cbp
-rw-r--r-- 1 root root 37889 2002-12-21 07:51 english.cbp
-rw-r--r-- 1 root root 1631 2002-12-21 07:51 fixer.canna
-rw-r--r-- 1 root root 2445 2002-12-21 07:51 jdaemon.cbp
-rw-r--r-- 1 root root 7127 2002-12-21 07:51 jdemon.canna
-rw-r--r-- 1 root root 9417 2002-12-21 07:51 just.canna
-r--r--r-- 1 root root 2171 2005-04-29 15:31 just.cbp
-rw-r--r-- 1 root root 1882 2002-12-21 07:51 kaisoku.cbp
-rw-r--r-- 1 root root 1820 2002-12-21 07:51 kana.cbp
-rw-r--r-- 1 root root 5637 2002-12-21 07:51 lan5.canna
-rw-r--r-- 1 root root 1626 2002-12-21 07:51 lan5.cbp
-rw-r--r-- 1 root root 6020 2002-12-21 07:51 matsu.canna
-rw-r--r-- 1 root root 2544 2002-12-21 07:51 matsu.cbp
-rw-r--r-- 1 root root 3274 2002-12-21 07:51 modes.canna
-rw-r--r-- 1 root root 585 2002-12-21 07:51 newjis.cbp
-rw-r--r-- 1 root root 1717 2002-12-21 07:51 romaji.cbp
-rw-r--r-- 1 root root 8281 2002-12-21 07:51 sample.canna
-rw-r--r-- 1 root root 4389 2002-12-21 07:51 skk.canna
-rw-r--r-- 1 root root 161 2002-12-21 07:51 sokuon.cbp
-rw-r--r-- 1 root root 3279 2002-12-21 07:51 tut.canna
-rw-r--r-- 1 root root 20343 2002-12-21 07:51 tut.cbp
-rw-r--r-- 1 root root 5345 2002-12-21 07:51 unix.canna
-rw-r--r-- 1 root root 8095 2002-12-21 07:51 vje.canna
-rw-r--r-- 1 root root 2679 2002-12-21 07:51 vje.cbp
-rw-r--r-- 1 root root 6926 2002-12-21 07:51 wx2+.canna
-rw-r--r-- 1 root root 2457 2002-12-21 07:51 wx2+.cbp
xanuser1@VC37:~$ ls -la /usr/share/canna/
~cannaというファイルがあります。これがローマ字変更規則を記述したファイルです。
目的のATOK風のものは、just.cannaというファイル名ですので、これを.cannaというファイル名で、ホームディレクトリ(~/)にコピーすればいいだけです。

↓just.cannaをホームディレクトリにコピー。
xanuser1@VC37:~$ cp /usr/share/canna/just.canna .canna
設定を有効にするために一度ログオフしてログオンすればキーアサインが変わっているはずです。

※ちなみに、matu.canna(松茸用)、vje.canna(VJE用)、wx2+.canna(WX2+用)と、Windows/DOSユーザにはなじみ深いIME用の設定も用意されているようです。
逆に、MS-IME用の設定が用意されていないのが不思議。まあ、今時のMS-IMEはATOKとキーアサインが酷似しているので、ATOK用を使っておけばさほど不便はしないかも知れませんが。

【おまけ~ローマ字変換規則も変更】
まあ、これでかなり使いやすくなったのですが、個人的な好みでもう一工夫します。
筆者は普段ローマ字入力で日本語を入力していますが、筆者が使っているATOKのローマ字変換規則は一点だけ変則的になっています。
「x」を「ー」に割り当てています。
MS-IMEを使わずATOK(や昔はWXG)を使っている最大の理由は、この変則的なローマ字変換規則を定義できるのが一番大きな要因だったりします(MS-IMEでは、レジストリを手動で編集しないと不可能)。
Cannaでも同様のローマ字変換規則を使いたいと思います。

① ファイルの入手
ローマ字変換辞書の元ファイルは、「/usr/share/doc/libcanna1g/sample/src」フォルダに入っています。このフォルダにある*.ctd.gzというファイルがそれです。今回使用するのはATOK用のjust.ctd.gzファイルです。これをtarやgzipなどで解凍すると、just.ctdというファイルが得られます。
このファイルに規則を追加します。

② 文字コードの変換
ただ、Xandrosにインストール済みのテキストエディタは、just.ctdファイルを編集してセーブしようとするとエラーが表示されてしまいます。エラーを読む限り、utf-8またはutf-16にしか対応していないようです(just.ctdはeucコードで書かれている)。eucを読み書きできるテキストエディタを用意すればいいのかも知れませんが、手っ取り早くコード変換してしまいます。
VC37:/usr/share/doc/libcanna1g/sample/src# lv -Iej -Ou8 just.ctd > just.ctd8
lvというプログラム(前ページで行った作業ですでにインストール済み)を使って、just.ctdファイルをutf-8コードに変換しています。(just.ctd8というファイルが作成されます)

③ just.ctd8ファイルの編集
テキストエディタでjust.ctd8を読み込み、ローマ字変換規則を追加(下線部分)し保存。
   ・
   ・
   ・
a     あ
i     い
u     う
e     え
o     お
x     ー
ka    か
ki    き
ku    く
ke    け
   ・
   ・
   ・

③ 文字コードを元に戻す
VC37:/usr/share/doc/libcanna1g/sample/src# lv -Iu8 -Oej just.ctd8 > just.ctd

④ 作成したjust.ctdをコンパイル
VC37:/usr/share/doc/libcanna1g/sample/src# mkromdic just.ctd
forcpp -7 < just.ctd | /lib/cpp |forcpp -8 | kpdic > just.cbp
SIZE 2165 KEYS 268
mkromdicというプログラムを使って更新したjust.ctdをコンパイルします。
コンパイルが終了すると、just.cbpというファイルが作成されます。

⑤ 作成したjust.cbpを/usr/share/cannaにコピー
VC37:/usr/share/doc/libcanna1g/sample/src# cp just.cbp /usr/share/canna/

これで作業終了。一度ログアウトしてログオンし直すと、新しいローマ字変換規則が使えるようになります。


【おまけ2~HomeとInsertの機能変更】
さて、これでかなり使いやすくはなるのですが、Cannaのデフォルトのキーアサインはどうも解せないところがありますので変更します。
Cannaのデフォルトの設定では、日本語入力中にHomeキーを押すとextend-mode(拡張モード)に入ります。同様に、Insertキーを押すとkigou-mode(記号入力モード)に入ります。

↓extend-mode


このキーアサイン、全くの意味不明としか言いようがありません。使いにくくてしょうがないので即変更!。
ということで、.cannaに手を入れます。(赤字=追加行/青色=編集行)
           ・
           ・
           ・
;; キーマップ

(global-unbind-key-function 'extend-mode)
(global-unbind-key-function 'kigou-mode)
(global-unbind-key-function 'extend)
(global-unbind-key-function 'shrink)
(global-unbind-key-function 'forward)
(global-unbind-key-function 'backward)
(global-unbind-key-function 'previous)
(global-unbind-key-function 'next)
(global-unbind-key-function 'beginning-of-line)
           ・
           ・
           ・
;; 入力モードの定義
           ・
           ・
           ・
;(set-key 'empty-mode "\F10" 'kigou-mode)
(set-key 'empty-mode "\F10" 'extend-mode)
※golobal-unbind-key~で、extend-modeおよびkigou-modeという機能に割り当てられているキーを解除して、かわりにF10で(kigou-modeではなく)extend-modeを起動するように設定しています。



【変換キー、無変換キーが使えない】
さて、Cannaは何故か変換/無変換キーに何も機能が割り当てられていないようです。
.cannaファイルを見る限り、無変換キーはNfer、変換キーはXferというシンボルで表現されており、ちゃんと機能が割り当てられているように思うのですが、なぜかまったく効かないです。
恐らく、OS起動時に行われているキーボードの認識処理(/etc/init.d/loadkey.sh)がアヤシイとは思っているのですが、現在調査中です。
しょうがないので今回は別の方法をとります。
対処法的な方法ではありますが、変換キーもSPACEキーとして定義してしまうという方法でご勘弁を。
筆者は無変換キーは普段から一切使用しませんし、変換キーとSPACEキーはまったく同一のキーとして扱うようにしているので、これでまったく支障がないのです。m(_ _)m
ちゃんとした解決方法が見つかりましたら報告させていただきます。

① シェルスクリプト作成
テキストエディタで、~/.kde/Autostart/XferIsSpace.shファイルを作成します。
その中身は、「xmodmap -e "keycode 129=space"」という一文を入れておきます。

↓作成後、中身を確認
xanuser1@VC37:~/.kde/Autostart$ ls -l
合計 4
-rw-r--r-- 1 xanuser1 xanuser1 31 2005-05-02 13:05 XferIsSpace.sh
xanuser1@VC37:~/.kde/Autostart$ cat XferIsSpace.sh
xmodmap -e "keycode 129=space"
※「~/.kde/Autostart」ディレクトリは、Windowsで言えば、スタートアップフォルダです。
このフォルダに置かれたプログラムやシェルスクリプトはログオンしたときに(より正確に言えばKDEが起動された後に)実行されます。
つまり、ログオンすると、XferIsSpace.shというシェルスクリプトが実行されます。

② 実行可能権限付加
ただ、このままだとシェルスクリプトとは認識してくれません。スクリプトであることを認識させるために、ファイルに実行可能権限を付加しなければなりません。
それには、chmodというプログラムを使います。
xanuser1@VC37:~/.kde/Autostart$ chmod +x XferIsSpace.sh
xanuser1@VC37:~/.kde/Autostart$ ls -l
合計 4
-rwxr-xr-
x 1 xanuser1 xanuser1 31 2005-05-02 13:05 XferIsSpace.sh
「chmod +x XferIsSpace.sh」で、実行可能権限を付加します。
その後、「ls -l」でファイルを表示すると、実行可能権限が付加されていることが確認できます(赤字の部分)

これで作業終了。
次回のログオンから変換キーはSPACEキーとして扱われるようになります。



【SHIFT+SPACEでCannaが起動するのをやめたい】
Xandrosはalt+漢字でCannaが起動するようになっているので、特別SHIFT+SPACEで起動する必要はありません。むしろオペミスの原因になります。
ATOKを使い慣れていると、ついつい半角スペースを打つためにSHIFT+SPACEを打ってしまうのです。
そうすると、XandrosではCannaが終了してしまうので再度SHIFT+SPACEを打たなければならなくなってしまう。二度手間です。
理想はSHIFT+SPACEで半角スペースが打てるようになれば言うことはないのですが、せめてCannaが起動/終了する動作はやめたい。

① app-defaultのKinput2ファイルを編集
テキストエディタで、/usr/X11R6/lib/X11/app-default/Kinput2ファイルを開きます。(root権限で行います)
ファイルを開いたら、ConversionStartKeys~の記述を探します。

↓Kinput2のConversionStartKeysの記述
  ・
  ・
  ・
*ConversionStartKeys: \
Shift<Key>space \n\
Ctrl<Key>Kanji
  ・
  ・
  ・

Shift<Key>Space…の行を削除します。
  ・
  ・
  ・
*ConversionStartKeys: \
Ctrl<Key>Kanji
  ・
  ・
  ・

これだけでOKです。ファイルをセーブしてください。次回のログオンから有効になります。

さて、目的はこれで達成できるのですが、かすかな疑問があります。
このファイルの記述によると、「Ctrl+漢字」を起動キーにしているようですが、実際は「Ctrl+漢字」を押しても何も起こりません。
更に不可解なのが、ここに「alt+漢字」で起動するための設定がありません。念のため、「.bash_profile」や「.xsession」、「.Xsession.d」なども確認してみましてが、そのような設定を行ってはいないようです。
まさかCannaのソースでハードコーディングされているとも思えないので、どこかで設定しているはずなのですが全くの謎。
まあ、その辺のリクツはともかく、これで「alt+漢字」が唯一の起動キーとして動作するようになりましたので深くは追求しません。あしからず。m(_ _)m

<前へ  Home  次へ>