ACT入力方式で「っ」から始まる送り仮名の入力を実現する方法について
doc/eskk.jaxの「アルファベットテーブル」の項目を参考にACT用の変換テーブルを書いているのですが、表題のような問題があります。ACTとはDvorak配列向けの日本語入力方式のことです(ACT総合解説書)。
ACTでは「っ」が非アルファベットの単独キー(')に割り当てられていて、例えば「立って」などは「Ta"te」などと入力することになります("はShiftキー+')。その為、正しく送り仮名を入力することができません。
4年ぶりにskk.vimからeskk.vimに移行しようと思い戻ってきました。
EmacsのDDSKKの変換テーブルを、eskk.vimで利用できる形に出力するElispを書いてみました。その出力を使って、autoload/eskk/table/rom_to_hira.vimの定義を手動で置き換えてみた所、ほとんど実用できそうな感じになりました。あとは、ロードするテーブル定義ファイルを切り替える仕組みを用意してやれば良いだろうと考えています。
ほとんど実用できるのですが、ただやはり、本件の問題が残ります。
ACT入力方式では、「買う」を入力する時には「CaU」と入力します。先に述べたように、テーブルを適当に用意してやるだけで、「CaU」から「買う」への変換は可能となりました。従ってShiftキーを押したかどうかの判定には、「Shiftキー押しながら入力すると c が C として入力される」事が利用されていると予想しています。同様に「Si"te」から「知って」への変換を可能とするには、「Shiftキーを押しながら入力すると ' が " として入力される」という関係をどこかに記述しなければいけないと考えています。
しかし、どこでそのような判定をしているのか見つけられません。可能でしたら、送り仮名の入力に関する部分をいくつか挙げて頂きますと、とても助かります。 よろしくお願いします。
AZIKでも同様の問題が生じますので、以下の通り実装してみました。
autoload/eskk.vimのL1352-L1354をご参照ください。
(蛇足ながら、AZIKでは「っ」は;に割り当てられています)
https://github.com/vim-skk/eskk.vim/pull/260
なお、Shiftキーを押したかどうかの判定についてはご賢察の通りですが、eskk.vimとSKK辞書の仕様上、「っ」から始まる送り仮名はローマ字でtから始まる必要があるため、アルファベット変換テーブルには;に加えてt;も登録しています。
(ddskkのskk-azik.elではそうはなっていないのが不思議ですが、詳細は追いかけていません)
参考になりましたら幸いです。