2017年05月12日

xyzzyのskkモードにsegsyoxafu導入するやで(調査編)

さて、segsyoxafuの辞書をダウンロードしたあたりで前回力尽きていたので、
いよいよ本格的にxyzzyのskkモードに組み込んでみよう、と思ったのはいいんだけど
あれ、これ、どうやって組み込むんだっけ…?

(なお本記事執筆時点で進捗状況は調査中です。あなたに役立つ情報は提供できなさそうですがおっさんの苦悩と手探りの様子は楽しめます)



そもそもemacsとxyzzyでskk-modeの挙動が異なるのでは・・・?

segsyoxafu製作者が想定しているskk環境はおそらくemacsなんだろうけど
俺が使っているのはwindows移植版のxyzzy。この違いが環境導入の大きな障壁になってないだろうか。
だがしかし、emacsにしろxyzzyにしろ細かい動作はlispで確認できるのが長所。
ここはxyzzyに始めてsegsyoxafuを導入する人の気分でハックしたやろうじゃないか

まずは個人辞書によって導入できないか探る

skk-modeの個人辞書はreadmeによると
(setq skk:*skk-jisyo* {辞書のパス})
こいつを.xyzzyなりsiteinit.lなりに書けばそちらも参照するらしい。
しかし、skk-modeの通常の辞書と比べるとどうも形式が違うような…

通常の辞書(SKK-JISYO.L)
をs /惜/
ゐr /居/
われらg /我等/
われしr /我知/
...

個人辞書(Segsyoxafu_zihom.txt)
am /庵/暗/罨/菴/諳/闇/餡/黯/
an /安/按/晏/杏/案/殷/行/鞍/鮟/
ap /凹/圧/壓/姶/押/閘/鴨/
at /軋/遏/閼/靄/斡/
...

通常辞書はすでにかな変換されているところから辞書を作っているが、segsyoxafuはローマ字をキーにしてエントリーを作っている
まあsegsyoxafuのスタンスはローマ字時点で字音仮名遣を導入することで同音衝突を減らすというものだから
こうなるしかないが、果たしてこれで素直に導入できるのか?

skk-modeのローマ字かな変換を見てみる

skk-modeのローマ字テーブルは、外部ファイルではなくskk.lに記載されているようだ

(defvar *skk-kana-rom-vector*
  #("x" "a" "x" "i" "x" "u" "x" "e" "x" "o" "k" "g" "k" "g" "k" "g"
    "k" "g" "k" "g" "s" "z" "s" "j" "s" "z" "s" "z" "s" "z" "t" "d"
    "t" "d" "x" "t" "d" "t" "d" "t" "d" "n" "n" "n" "n" "n" "h" "b"
    "p" "h" "b" "p" "h" "b" "p" "h" "b" "p" "h" "b" "p" "m" "m" "m"
    "m" "m" "x" "y" "x" "y" "x" "y" "r" "r" "r" "r" "r" "x" "w" "x"
    "x" "w" "n")


ここらへんが怪しいような…しかし、readmeには *skk-kana-rom-vector*に対する情報はない。
しかも、ここで素直にすべてのローマ字変換ができるのではなく、その他に

(defvar *skk-prefix-list*
  '("by" "ch" "cy" "dh" "dy" "fy" "gy" "hy" "jy" "ky" "my" "py" "ry" "sh" "sy"
    "th" "ts" "ty" "xk" "xt" "xts" "xw" "xy" "zy"))

こちらで子音字を決めて

*skk-roma-kana-a*
*skk-roma-kana-i*
*skk-roma-kana-u*
*skk-roma-kana-e*
*skk-roma-kana-o*

こちらで母音字を入力して確定するコードもある模様
ここを改善するというか、segsyoxafuは上代特殊仮名遣いを取り扱うので

*skk-roma-kana-ay*
*skk-roma-kana-uy*
*skk-roma-kana-aw*

こちらを加えてテーブルを作成する必要があるのではないだろうか

ロジックは(defun j-kana-input ()配下にあるらしい。こっちを読み込んでみるか…

今後の予定

  • skk.lを読み込み、ローマ字入力箇所を改造する
  • emascの方のskk-modeを読み、比較する

こんなもんかなぁ。
タグ:xyzzy
posted by LoyalTouch at 06:19| Comment(0) | TrackBack(0) | クライアントサイド | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/449806949

この記事へのトラックバック