再現不能だが、相互シフトが入りっぱなしになるバグ。
とても高速に打っていた時に起こった。
再現しようと思ったが出来ていない。
症状1:
単打を打ってもシフト文字が出る。
シフトが入りっぱなしになっているよう。
スペースを押して離しても元に戻らない。
症状2:
編集モードを素早くコントロールしようとして、
「と」(D)が入りっぱなしになった。
たとえばJを打つとD+Jの「ど」が出た。
解除法:
相互シフトの文字を入力すると治った。
1はシフト文字を一回打つと復帰、
2は編集モードの何かを打ったら復帰。
相互シフトが定義されているところで、
シフトが入りっぱなしになり、
帰ってこない現象は、
DvorakJ版でもたまに起きた。
Downが入りっぱなしになり、Upが認識されない状態が続く。
そのキーを単独でダウンアップしても治らず、
それが相互シフトで定義されている文字を入れると復帰する、
という現象。
DvorakJはAHKで書かれたアプリであるから、
同根の問題と思われる。
はてさて、AHKの持つ原理的な問題か、
だとすると解消する方法はあるのか、
限界いっぱいの話なのか。
対症療法としては、
DvorakJ版では2ミリ秒程度遅らせていた。
手が処理より速い時があるのだろう、
と仮説を立てている。
しかしせっかくの快速AHK版、
2ミリ秒遅延は勿体ない…
あ、あと固有名詞モードに転記ミスあり。
Qは臨兵闘者皆陣烈在「前」ですね。
まあ使う人が適宜編集するだろうからいいけど、
早九字という呪文なので、間違うと呪われるかも?
いろいろ直してみました。
キー上がってるのに直らないのは、キーが上がったとの信号が Autohotkey にたまに来ないからだと思うので、機能強化したEscキーを押してリセットしてください。
ああ、やはりAutoHotKey側がKeyUpを認識してないんですね。
キーログ取って調べようと思ってたんですが、原因判明して良かった。
DvorakJ版でも存在するやつなので、
これはもはやAutoHotKeyの仕様ですかね。
スーパーESC?の件も込みでこの限界ごと明記しといた方が良さそうですね。
経験上かなり速い打鍵の時になりがちなので、
4キー以上のロールオーバーとかが原因かもと疑っています。
何か打ってる→編集モードのキーいくつかガチャガチャ、の時にもなりやすいので。
USBは6ロールオーバーまでは仕様上大丈夫なはずだから、
受け側の問題ですかね…
緊急で修正しました。
USBは、Shift、Ctrl、Alt、Winの修飾キーが左右で計8キーの状態と、その他は最大6個の押されているキーを知らせてくれるのが標準らしいです。
それをそのまま Autohotkey に持ってこれないのが残念です。
私のプログラムが超高速入力に対応しているか調査中です。1秒間に1000回入力……は無理そうですが
シフト押しながらのロールオーバーとか、
ロールオーバーしまくってるときに、自覚なしにWinやCtrlに指が触れてる時とかが怪しいのかしら。
タイパーはその辺のキーキャップを外すしねえ…