単純なテストをしてみました。@同時打鍵ミス問題
すべて、Toshiba/DynabookC8/213LMEWに限っての話だと思われますので、その点誤解無きようにご注意下さい。
3キー同時打鍵時に、理想通りのタイミングでキーコードが発行されない例:「変換(窓使いの憂鬱における私製配列定義ではM2として設定)・D・S」の3キー同時打鍵。
同時打鍵をすると、まず3キー中2キーまでのキーコードはその場で送出される。
3番目に押したキーのキーコードは出力待ちを喰らう状態となる。
3キーのうちいずれかを離した時点で、まず離したキーの「キー離す」コードが送る出され、それに続いてすぐに3番目に押したキーの「キー押す」コードが送出される。
以下の例については、変換キー離す(変換↑)のタイミングを少しずつ早めた場合の状況を「窓使いの憂鬱」にて調べました。
(調べた…ってゆーほど大げさではないですな)
「変換(M2)↓・D↓・S↓・D↑・S↑・変換↑:なお」
0x79 D-変換 変換キー押す
0x1f D-M2-D Dキー押す
0xff Sキー押す(0xff…何ですかこのコードは、って感じ)
0x20 D-M2-S Dキー離す
0x1f U-M2-D 〃(この時点でようやくSキー押下コードが出る)
0x20 U-M2-S Sキー離す
0x79 U-変換 変換キー離す
「変換(M2)↓・D↓・S↓・D↑・変換↑・S↑:なお(Sキーのモデファイヤが押したときと離したときで異なる)」
0x79 D-変換 変換キー押す
0x20 D-M2-D Dキー押す
0xff Sキー押す(0xff…何ですかこのコードは、って感じ)
0x20 U-M2-D Dキー離す
0x1f D-M2-S 〃(この時点でようやくSキー押下コードが出る)
0x79 U-変換 変換キー離す
0x1f U-S Sキー離す
「変換(M2)↓・D↓・S↓・変換↑・D↑・S↑:なし」
0x79 D-変換 変換キー押す
0x20 D-M2-D Dキー押す
0xff Sキー押す(0xff…何ですかこのコードは、って感じ)
(変換キーを押しながらSキーを打鍵したが、3キー目を即時出せない組み合わせの為、Sキーコードは保留されている。)
0x79 U-変換 変換キー離す
0x1f D-S 〃(この時点でようやくSキー押下コードが出る…が、M2にはなっていない)
(変換キーを先に抜いたために、「変換キー離す」が先に来て、後からようやく(待たされていた)「Sキー押す」のキーコードが発行された。)
0x20 U-D Dキー離す
0x1f U-S Sキー離す
大丈夫な例:「変換(M2)・F・D:なら」
0x79 D-変換 変換キー押す
0x21 D-M2-F Fキー押す
0x20 D-M2-D Dキー押す
0x21 U-M2-F Fキー離す
0x20 U-M2-D Dキー離す
0x79 U-変換 変換キー離す
(少なくと、キー押下操作時には正しくM2が掛かる)
ある特定の組み合わせとなる3キーを、順に押していって3キーが同時に打鍵されている状態にすると、なぜか本来のキーコードを吐かずに「0xff」を吐いてしまいます。この時、3キー目のキーコードは発行待ちの状態となります(破棄はされない)。
で、どれか一つのキーを離した時点で、ようやく3番目に押したキーの押下コードを吐くようですね…
うーん、これってもしかして、富士通扱い以外のキーボードでは意外とよくあることだったりは…しないですよね、まさか。
(少なくとも、富士通とPFUは「変換・空白・無変換」が親指シフトに使われることを考慮してキーボードの配線をしている…と思いたいですな)
ひとまず、文字キーを2つ押したままで親指キーを離すと、(素のままでもキーコードが正しく出ない組み合わせの場合に限っては)問題が発生する様ですね。
ひとまず、「連続シフトが掛からない」件の原因が一つ見つかりました、ということで。
ほかのトラブルについては、まだ再現すらできていないので調べようが無い状態です。
うーん、この手の問題については誰が詳しいのか良く解りませんな…教えて!偉い人。