いくやの斬鉄日記

オープンソースからハイスクールフリート、The Beatlesまで何でもありの自称エンターテインメント日記。

fcitx-kkcを真面目に使おうとしてみた。

2015年04月29日 22時40分01秒 | Ubuntu
問題がただひたすら見つかるだけだった……。

Ubuntuのfcitx-kkcがFedoraのと比較して変換効率がイマイチということだったので、ちょっくら調べてみました。
答えは簡単で、単純に使用できる辞書の数が違うだけでした。
まずはlibkkcをFedora 21相当にし、skkdicのパッケージをアップデートしたので、インストールする場合は次のコマンドを実行してください。
なお、14.04と15.05用のパッケージがあります。
$ sudo add-apt-repository ppa:japanese-testers/fcitx
$ sudo apt-get update
$ sudo apt-get upgrade #すでにfcitx-kkcをインストールしている場合
$ sudo apt-get install fcitx-kkc #fcitx-kkcをインストールしていない場合
$ sudo apt-get install skkdic-extra

次にfcitx-kkcの設定画面を表示し、[その他]-[辞書]をクリックしてください。
右側のボタンにアイコンが表示されない場合は、
$ fcitx -r
を実行してFcitxを再起動し、[辞書]をクリックしてください。
そしてこんな感じに辞書を追加してください。


辞書を新しくてこのパッチを当てると、わりといい感じに使えるようになりました。
というか、このエントリもfcitx-kkcを使って入力してます。Anthyなんて比べ物にならないくらい快適に入力できてます。
Mozcと同等かと言われると厳しいものがありますが……。

ここまではまぁいいのですが、[ショートカット]はなかなかに無理ゲーでした。
前提知識として、私は長いことATOKキーバインドを使用しており、完全に手になじんでいます。
ATOKキーバインドだと変換キーで直接入力とひらがな入力の切り替えができるのですが、これがちゃんと出来るのはfcitx-mozcだけで、fcitx-kkcもfcitx-anthyでもできないんです。つらぽよ。

ちなみにibus-kkcではできてます。
[ひらがな]の[次候補 Henkan]を削除し、[直接入力モードに変換 Henkan]を登録します。続いて[直接入力]に[ひらがな入力モードに変換 Henkan]を登録します。
fcitx-kkcでも同じ感じにすればいいのかなと思って[ショートカット]を起動すると、[直接入力]がありません。お、おう……。
libkkcには直接入力(direct input)と英数(latin)とどちらのモードもあるものの、fcitx-kkcでは後者にしか対応していないようなのです。
ちなみに両者の違いは極めて分かりにくいですが、直接入力はキーボードから入力した文字がそのまま入力され、英数モードだと半角英数が入力されるものの確定が必要な状態で、スペースキーを押してもスペースが入力されるわけではありません。ふつーは使わないですよね。
ただ、fcitx-kkcのソースコードを見る限りでは英数モードを直接モードとして扱おうとしているものの、どこかでミスがあって英数モードとして扱われている気はするのですが、C++なんて読めないので間違っている可能性が極めて高いです。

[ショートカット]で同じく[ひらがな Henkan_Mode Next Candidate]を削除し、[ひらがな Henkan_Mode Switch to Latin Input Mode]にすると、[追加したキーは存在するショートカットキーと競合しています。]と言われます。ホントは[追加したキーは存在するするショートカットキーと競合しています。]だけど、直した! 今直した!
実のところ競合していないので、このメッセージが出てくるのはおかしいです。そして、実際に競合させてみると、このエラーメッセージは出ません。ということは、条件が反転しているのではないかと思います。
このエラーメッセージを出してるのはgui/shortcutwidget.cppで、
void KkcShortcutWidget::addShortcutClicked()
{
    AddShortcutDialog dialog;
    if (dialog.exec() == QDialog::Accepted) {
        if (m_shortcutModel->add(dialog.shortcut())) {
            QMessageBox::critical(this, _("Key Conflict"), _("Key to add is conflict with existing shortcut."));
        }
    }
}

うーん、やっぱりこれだとうまくいく時に出てくると思うのですが、読み間違えでしょうか。
ちなみに[Henkan_Mode Switch to Latin Input Mode]ではなく[Henkan_Mode Switch to Direct Input Mode]も選べるのですが、これにして変換キーを押すとFcitxがクラッシュします。

きちんと整理して不具合を報告したいところではあるのですが、上記のとおり全く整理できてません。
fcitx-kkc的にdirect inputをどうしたいのかがC++が読めないのでわからないのです。
fcitx-kkcは私の手には負えないなぁと思っているところです。

追記(5/1):
柴田さんが サクっと 直して くれました。ありがとうございます!
というわけで、この修正を含んだバージョンをPPAにアップロードしておきました。
直接入力ができるようになって、すごく助かっています。半角/全角キーなんて押したないねん。
あとはATOKキーバインドがあれば完璧ですが、libkkcに追加すればいいのでしょうか。確認してません。まぁいずれ。
他にもいちいち手動で辞書を追加するのは面倒なので、skkdic-extraがあることを前提に自動で追加するようにしたいです。こっちはどこを直せばいいのかわかってますけど。

追記(5/5):
libkkcにATOKキーバインドを付けてみた
コメント (5)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« Ubuntu 14.04/15.04用のCinna... | トップ | Ubuntu 15.04 日本語 Remix ... »
最新の画像もっと見る

5 コメント

コメント日が  古い順  |   新しい順
Unknown (runx)
2015-04-30 17:29:43
対応お疲れさまでした。

現在、14.04でkkcに変更してみましたが変換精度もイイ感じで使用出来ております。

追加で辞書適用すれば、ローマ数字とかも、mozcと同じように使用できたりで、Anthyよりいいですね。

まあ、開発途上なんでmozcを期待すると…、学習機能でどこまでmozcに迫れるか使用を続けてみます。
返信する
Unknown (runx)
2015-05-02 15:26:55
柴田さん、いくやさん対応ありがとうございます(多謝)

kkcの入力が捗る。
返信する
こちらこそ (いくや)
2015-05-02 16:45:41
ご指摘いただかないと全くテストしなかったので、助かりました。ありがとうございました。

ところでローマ字テーブルに関してはわりと容易に修正できるようです。
https://github.com/ueno/libkkc/tree/master/data/rules
返信する
Unknown (runx)
2015-05-03 00:53:44
ローマ字テーブルはとあるブログで、.confign内のfcitxフォルダーにあるkkcで変更できるのは発見してたんですが。

小文字の「っ」を打とうとすると、ltuで変換できない。
windosで覚えたので癖でttとかで「っ」を打つ習慣が無いもので(汗)。
テーブルにltuで「っ」を打てるように改造するかで、テーブルに小細工してます。
返信する
lなんとか (いくや)
2015-05-03 23:16:18
ltu→っとかはATOK由来ですね、確か。
バグ報告するかpull request投げたら対応してくれる気がしなくもないですが、ちょっとわからないですね。
まぁおっしゃるとおりローカルにファイルを置けばいいだけなので、それで対応するのもまた正解だとは思います。
返信する

コメントを投稿

Ubuntu」カテゴリの最新記事