インドネシア検定 10月16日開催

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 に変更した。