SKK辞書の闇への対応状況
SKK-JISYO.lispで書いたようにSKKの辞書形式にはいくつかの闇(=歴史的経緯による複雑な仕様)を抱えている。
この闇に対して、SKKの各実装がどう対応をしているかを調べた。
調べた実装
- fcitx-skk 0.1.1-1.1 *1
- uim-skk 1.8.6-15
- eskk.vim e990b81
- CorvusSKK 2.3.3
- SKK日本語入力FEP β0+9i版
- SKK日本語入力FEP β0+9i版 + SKKGate β0+2i版
- AquaSKK 4.3.5
- FlickSKK 1.4.2
concatへの対応
SKK辞書の書式上、/
や;
を含む変換候補は登録できない。 そのため、L辞書には以下のようにconcatを用いて登録されている。
dosv /(concat "DOS\057V")/
対応済
concatによるエスケープを理解し、意図した変換結果を出力する。
未対応
変換結果に(concat ".....")
がそのままでてしまう。
/や;を含んだ単語の登録
ユーザが/
や;
を含んだ単語を登録した場合もconcatによるエスケープが必要である。
対応済
対応済?
以下のように独自の形式でエスケープを行なう。 単語登録は行なえるが、他のSKK実装とは互換性がない。
dosv /DOS[2f]V"/
- AquaSKK
- FlickSKK
未対応
/
や ;
をそのまま登録してしまう。単語を登録しても変換できない。
concat以外のEmacsLisp式
SKKの辞書は任意のEmacsLisp式を含めることができる。そのためlisp辞書には以下のようなエントリが登録されている。
time /(current-time-string)/
部分対応
pwdなどの一部のエントリには対応していないが、Lisp辞書の大半に対応している。
部分対応 その2
current-time-string、pwd、skk-versionの3つの関数のみに対応している。 CorvusSKK等に比べるとかなり限定的。
- fcitx-skk
未対応
数値エントリ
SKKの辞書は # を含む見出し語を特別扱いする。例えば、以下のエントリは「3かい」や「10かい」とマッチする。
#かい /#1回/#0回/#3回/#2回/
変換時、 #<n>
は以下のように変換される。
#0
: 半角数字。(例: 1024)#1
: 全角数字。(例: 1024)#2
: 漢数字で位取りあり。(例: 一〇二四)#3
: 漢数字で位取りなし。(例: 千二十四)#4
: 再変換。見出し語中の数字そのものをキーとして辞書を再検索する。*2#5
: 大字。(例: 壱阡弐拾四)#8
: 桁区切り。(例: 1,234) *3#9
: 将棋の棋譜入力用。(例: 8五)
詳細はSKK Manual: 数値変換に記載されている。
対応済
部分対応
未対応
数値エントリの変換に対応していない。
追記
@mzp corvusskkですが(current-time-string)と数値変換#9については一応使えるはずなので確認願えますでしょうか。作ってみて感じたのですが、下手に足を突っ込むと正に闇なのでconcatへの対応のみにしておくと精神安定上良いかなと思いました。
— Ν (@corvussolis) 2016年5月2日
CorvusSKKの対応状況に誤認があったので、修正した。
追記 その2
@mzp ご紹介ありがとうございます。SKK日本語入力FEPでは数値変換やLispに対応していないと書かれていますが、JavaScriptによる拡張モジュールを入れると変換できるようになります。簡易Lispエミュレータはlisp分離前のL辞書に入っていた候補に対応してます
— ガイアにcoがもっと輝けと囁いている (@coexe) 2016年5月2日
SKK日本語入力FEPの拡張機能のことを認識していなかったので、追記した。