問題がただひたすら見つかるだけだった……。
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で、
うーん、やっぱりこれだとうまくいく時に出てくると思うのですが、読み間違えでしょうか。
ちなみに[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キーバインドを付けてみた
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キーバインドを付けてみた
現在、14.04でkkcに変更してみましたが変換精度もイイ感じで使用出来ております。
追加で辞書適用すれば、ローマ数字とかも、mozcと同じように使用できたりで、Anthyよりいいですね。
まあ、開発途上なんでmozcを期待すると…、学習機能でどこまでmozcに迫れるか使用を続けてみます。
kkcの入力が捗る。
ところでローマ字テーブルに関してはわりと容易に修正できるようです。
https://github.com/ueno/libkkc/tree/master/data/rules
小文字の「っ」を打とうとすると、ltuで変換できない。
windosで覚えたので癖でttとかで「っ」を打つ習慣が無いもので(汗)。
テーブルにltuで「っ」を打てるように改造するかで、テーブルに小細工してます。
バグ報告するかpull request投げたら対応してくれる気がしなくもないですが、ちょっとわからないですね。
まぁおっしゃるとおりローカルにファイルを置けばいいだけなので、それで対応するのもまた正解だとは思います。