打鍵ロジックの話。
薙刀式は冗長定義をしている部分がある。
カタナ式からの継承で、
同時打鍵がミスしても上手くいくように、
と配慮したものである。
具体的には「親指は遅い」という仮説に基づいていて、
親指のスペースキーが離すのが遅れて文字部分同時打鍵をしたときも、
親指を離した時と同じように動作するようにしている。
すなわち、
「シフトを押しながらでも、
濁音、半濁音、小書き、拗音、外来音の入力は有効」
とわざわざ設定してある。
これは、親指を離すコストを、
少しでも少なくしようと考えたロジックだ。
良かれと思って実装してたのだが、
自分が高速に打てるようになってきて、
これゆえにミスすることもある、
ということがわかってきた。
具体的には、AHK版で、
「を。」と連続シフトで入力しようとして、
【CM】をロールオーバーして、
「ぱ」に化けた時に気づいた。
これはオリジナルのDvorakJでは起こらない。
何故ならスペースキーは相互シフト不可能で、
タイマー同時押ししか出来ないという仕様上の限界のためだ。
僕は高速打鍵のためにタイマーを5ミリ秒まで縮めている。
(別に0でもいいんだけど気持ち的に)
5ミリ秒以内に3キーロールオーバーしない限り、
「を。」が「ぱ」に化けることはなかったわけだ。
ところがAHK版は実装が丁寧だから、
スペースキーも相互シフト可能キーにきちんと入れてくれているため、
このことに気付いたのだ。
(今QMK版がMiniAxeに入っていないため未検証だが、
似たロジックのQMK版も同様の現象が起こると予測。
同様のロジックを使ってると思われるBenkeiもか)
設計当初の予測速度よりも、
現在の僕の打鍵速度が上がり、
ロールオーバーバリバリ上等になりつつあるため、
このような限界に気づいたのである。
対策は、
離し入力を徹底するか、それとも、
連続シフト優先かだ。
連続シフト優先に定義する、
すなわち冗長定義一切カットで色々スッキリすると思う。
設計当初は、
連続シフトしながら「ので」「でも」「まで」
などを打てるように想定していたんだよね。
所詮は2キーロールオーバーしか見てなかったということだね。
もっと速くなってきたことのことは、
想定外だったのだ。
ちなみにDvorakJ版でこの冗長定義を全て外すと、
2/3くらいに定義数が減るので、
目に見えて軽くなった。
全然これでもいいかも知れないなあ。
ちなみに、
連続シフトと冗長定義が被ってるものを列挙してみる。
頻出しそうなものに●をつける。
まの が
のに ど ●
ぬの げ ●
のせ ぜ ●
のち ぢ ●
めの じ
のり で ●
のね ぎ ●
ほの ぼ
ひの び
をの ば
の、 ご ●
のみ ぞ ●
まわ ヴ ●
まつ づ ●
やま ぐ ●
さま ざ ●
まえ ず ●
まゆ べ
おま だ ●
ふま ぶ
を。 ぱ
ひ。 ぴ
ふ、 ぷ
ゆ、 ぺ
ほ、 ぽ
めよ しょ
ゆめ しゅ ●
やめ しゃ ●
よね きょ ●
ゆね きゅ
やね きゃ
より りょ ●
りゆ りゅ ●
やり りゃ ●
ひよ ひょ
ひゆ ひゅ
ひや ひゃ
ちよ ちょ
ちゆ ちゅ
ちや ちゃ
よに にょ
ゆに にゅ
やに にゃ
みよ みょ ●
ゆみ みゅ
やみ みゃ ●
3キー同時押しは検証面倒なのでやめた。
連続シフトのつもりでロールオーバーしてこれらに化ける損失と、
初心者のリカバーを考えると、
損失の方がデカイと思われる。
(初心者用の補助輪にあまりなっていないとも思えるし)
結論: 冗長定義は廃止の方向で検討。
しばらく使ってみて本格的にいいと思ったら、
マニュアルごと更新します。
ナンバーは13のままかな。
ロジックが変わっただけで配列は変えてないので。
最終結論までしばらくテスト。
ただ、キー押しの受け付けは約16ミリ秒ごとに1キーなので、細かい調整はできないかと。
初心者といえば、私が初めてDvorakJで薙刀式をさわった頃、「ふぇ」や「ぴゅ」などを入力しようとするうちにキーリピートが始まるのが嫌で、投げ出したことがありました。
それでAHK版はカーソル系だけキーリピートにしたんですけど。
そういえば2キー、3キーの超連打で不具合が出まくるのがなかなか直らず、すみません。
まあなくてもいいんじゃないでしょうか。
あることによるメリットの享受が殆どない気がしたので。
僕の道具の理想系として、微妙なところは複数やり方がある、
という形が好きなのでそうしてたんですけど、
DvorakJで全部削ってみたら結構速くなったので、明らかにメリットが増えたと思いましたね。
キーリピートは編集モードでも厄介ですねえ。
DvorakJ版だとすぐ「とかとかとか…」ってなっちゃう。
現状のAHK版は理想に近いと思います。