AZIK on DDSKKで二重母音拡張の送り仮名をどうにかしたい (SKK Advent Calendar 四日目)


この日記はSKK Advent Calendarの四日目です。
三日目はkhikerさんでした。
DDSKK で部首変換、総画数変換 – とりあえず暇だったし何となく始めたブログ

さて最近、rubikitchさんの記事にもろ触発されてAZIKの訓練をしているところです。

もっと早くタイピングしたい人へ贈る習得容易な拡張ローマ字入力『AZIK』 – (rubikitch loves (Emacs Ruby CUI Books))

指が止まる時もまだありますが、いくつかのパターンは脊髄反射レベルで指が動くようになってきました。

特によく使うのが二重母音拡張です。
詳しくはこちらを見ていただくのが一番ですが要はよく使う「ai」「uu」「ei」「ou」がワンキーで押せるようにリマップされているわけで、二重母音拡張を使うと「かいがい」は「kqgq」と入力できます。
このようにかなり楽に入力できるようになるのですが、AZIK自体SKKだけを想定してできたものではないので、ところどころ矛盾があってイライラすることがあります。
その一つが送り仮名。 「かいがい」のように名詞は問題ないのですが、送り仮名が交じってくるとややこしいことになります。
例えば、「赤い」という形容詞を入力したい場合、ひらがななら二重母音拡張を駆使すると「akq」と入力すれば良いのですが、漢字も使いたい場合「活用がある場合は送り仮名の最初のアルファベットを大文字にする」というSKKのルールがあるので「k」か「q」のどちらかを大文字入力しないといけません。
「k」を大文字にしてしまうと「あ」以降が送り仮名と認識されるので、ここは「q」を大文字にして「AkQ」としまえば良さそうな気がするのですが残念なことに「赤い」と変換してくれません。

つまり、送り仮名の有無によって入力パターンが異なってしまう、ということになります。そんな複雑な条件分岐を処理できるほど、僕の脊髄のスペックは高くありません。「AkQ」で「赤い」と入力したい!!

調べてみると、同じような欲求をお持ちの方はいるようで、uim-skkの要望リストに全く同じものがありました。まあ、実装はされてないみたいですが。。。

RequestUim – uim-doc-ja – Project Hosting on Google Code

結局、なさそうだったので書いてみました。 まず、次のような関数を定義

(defun my-skk-double-k (arg)
(cond
 (skk-katakana (insert "カイ"))
 ((and (not skk-katakana) skk-j-mode)(insert "かい")))
(skk-set-char-before-as-okurigana))

後は、skk-rom-kana-rule-listに追加するだけです。

(setq skk-rom-kana-rule-list 
      (append skk-rom-kana-rule-list 
              '(("kQ" nil my-skk-double-k))))

これで、「AkQ」で「赤い」と変換できるようになりました。 ただ、こういう書き方すると全ての文字に関数を定義しないといけないですね。もっと良い書き方があるかもしれません。

ということで誰得なTipsでした。さて、SKK Advent Calendar 五日目はtomoyaさんです。 楽しみ!!