fcitx-skkのローマ字入力とカナの対応は、libskkに依存している。で問題は “z9″→”(”[全角]、”z0″→”)”[全角]、”z “→” ”[全角]あたりがないこと。 で、$HOME/.config/libskk/rules/ を作って、そこにカスタマイズしたローマ字→カナのルール(対応表)を置く。/usr/share/libskk/rules/default の中身を改変。 # mkdir -p $HOME/.config/libskk/rules/MyRule # cp -R /usr/share/libskk/rules/default $HOME/.config/libskk/rules/MyRule/ これで、$HOME/.config/libskk/rules/MyRule/metadata.json の “name”の値を変える。 { “name”: “MyRule”, “description”: “My typing rule” } 次に、$HOME/.config/libskk/rules/MyRule/rom-kana/default.json に以下を加える。 “z “: [“”, “ ” ], “z9”: [“”, “(” ], “z0”: [“”, “)” ], あとは、fcitxを再起動すれば、設定から MyRuleを選択できる。

長らく日本語の入力にはSKKを使ってきた。Emacs上ではddskk、その他X上ではUIM-SKKを愛用してきた。 んが、euc-jpベースの生活ではどうにもならないというか、礼を失することになる場面が増えてきた。自分自身の名前も「髙(はしご高)」なのだが、これはあまり気にしていない。しかし、他人が相手だと、その人が気にしようがしまいが、やはり異字体は異字体で書かねばなるまい。これだけunicodeが普及してきたのだから、対応できる限りは対応したいものだ。 UIMではどうしようもないので(patchを当てる方法はあるらしい)、fcitx-skk について調べてみた。fcitx-skkのデフォルトの文字コードをUTF-8にした fcitx-skk-plusというものもあるが、できるだけオリジナルのfcitx-skkでなんとかしたい(パッケージのバージョン管理が面倒だから)。そもそもUTF-8でないと対応できない文字も日常的にはそう多くはない。 fcitx-skk-plus (とrskkserv)のblogにヒントがありました。「『﨑』だけなら、SKK-JISYO.JIS3_4 をUTF-8に変換してやってエンコードを指定して辞書指定してあげればすみました。」と。辞書の文字コードを指定できるのであれば、必要最低限の辞書をUTF-8で作って、辞書リストに加えれば良い。SKK-JISYO.JIS3_4なんかも、EUC-JISX0213を指定すれば良いだけじゃないか! そこで見付けたのが、fcitx関連のTipsについて書かれたblog。ありがたい。 辞書リストの位置 $HOME/.config/fcitx/skk/dictionary_list デフォルトの文字コードは、EUC-JPで、デフォルトの dictionary_listは以下のようになっている。 file=$FCITX_CONFIG_DIR/skk/user.dict,mode=readwrite,type=file file=/usr/share/skk/SKK-JISYO.L,mode=readonly,type=file どちらの辞書も EUC-JPだ。これ以外のエンコーディングの辞書をどこかに置こう。僕は $HOME/.skk_dic というディレクトリを作成して、そこにSKK-JISYO.JIS3_4と、自分で作成した SKK-JISYO.UTF-8 という辞書を置いた。 $HOME/.skk_dic/SKK-JISYO.UTF-8 の中身 ;;; -*- coding: utf-8 -*- こうち /髙地/ とりあえず、これだけ。 $HOME/.config/fcitx/skk/dictionary_list を改変 file=$FCITX_CONFIG_DIR/skk/user.dict,mode=readwrite,type=file file=/usr/share/skk/SKK-JISYO.L,mode=readonly,type=file file=/usr/share/skk/SKK-JISYO.jinmei,mode=readonly,type=file file=/usr/share/skk/SKK-JISYO.geo,mode=readonly,type=file file=$HOME/.skk_dic/SKK-JISYO.JIS3_4,mode=readonly,type=file,encoding=EUC-JISX0213 file=$HOME/.skk_dic/SKK-JISYO.UTF-8,mode=readonly,type=file,encoding=UTF-8 こんな感じにした。最後の2行(太字部分)にエンコーディング指定の辞書を指定している。これで変換できた。「髙地」とか「山﨑」とか。 追記(こっちが重要) その後、色々弄っていたら、dictionary_list の内容から “encoding=xxx”の部分が消えていたが、どうやら文字コードは自動判別するっぽい。dictionary_list を直接弄らずに、単に追加すれば良いらしい。 UTF-8の文字(「髙」とか)を学習するように、user.dict のエンコーディングも UTF-8 に変更した。