NICOLA(というか、同期シフト方式)にも「シフト残り現象」がある……のかもしれない。

 http://kazuyomugi.cocolog-nifty.com/private/2007/05/post_45ec.html
 今日は、こちらの記事へのコメントを書いていて、ほぼ時間を使い果たしました……^^;。


 で、コメントを書きつつ、一つ「NICOLA配列規格書で妙なところ」に気づきました。


 NICOLA配列規格書の【7.4.2 打鍵順序だけでは決定できない同時打鍵】と【7.5.2 逐次打鍵と同時打鍵の識別方法】を見ていて思ったのですが、

【文字キーA Down】        【文字キーA Up】
        【無変換キー Down】                【無変換キー Up】
                         【文字キーB Down】        【文字キーB Up】
==========================================================================================>>(time)

の順に文字キーを押した場合、これをユーザが意図するとおりに

  • 左シフト修飾のA → 無シフトのB
  • 無シフトのA → 無変換 → 無シフトのB
  • 無シフトのA → 左シフト修飾のB

へときちんと切り分けできるロジックは、いま現存するのでしょうか。
 #従来ですと、ここは「同時打鍵判定時間」を閾値にして判定する……ということになるのでしょうか。


 特に気になるのは、飛鳥カナ配列で話題に上ったこともある「シフト残り現象」が、連続シフト系ではなく同期シフト系のNICOLAでも発生しうるのかもしれないというところで。
 文字キーAを「離し忘れたまま」無変換キーを押し、かつ無変換キーを「離し忘れたまま」後続で文字キーを押した場合、今のロジックで本当に「3つの可能性から、ユーザが意図した操作を選択する」ことは可能なのか……と、そこが気になっています。


 仮に【文字キーA Up】よりも【文字キーB Down】が先に来れば、これは普通の3キーロールオーバーとなるので、従来は「(同時打鍵判定時間内であれば)どちらかにシフトがつく」と解釈されています。
 ところが、【文字キーA Up】のあとに【文字キーB Down】がくる場合、今の規格書ではどう解釈するべきなのかが、私にはよく解らないのです……。


 「何が出るか解らない」変換キーとは異なり、無変換キーでは「押した回数により、かなの状態が一意に決まる」ので、無変換キーでひらがな/カタカナ確定をかけた後に、続けて無シフトのカナを打鍵する可能性が十分にありえます……もちろん、逆に無シフトかなの後で無変換をする場合もあります。
 そういう操作をするときに、文字キーや無変換キーの「キーUp」が【意図せず】遅れた場合、ユーザが意図していない選択肢をエミュレータが選んでしまう可能性もあります。


 うーん……NICOLA配列規格書で「検討の余地が〜」と書かれていたのは、もしやこのあたりだったりするのでしょうか。
 ちょっと厄介な問題かもです。