[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: eliminate_phantom_keys



 > 鈴木(康)です。
 >   | 駄目ですか。どのようなパターンで駄目なのかわかりませんか?
 >   | 今のコードだと、SHIFT を押した状態で、M と R をほぼ同時に
 >   | 押すと DEL が入るかも知れません。
 > 
 > 受け入れ可能なデータでなかったら、調整せずに、捨ててしまえば良い
 > のではないでしょうか?

現在の処理は、キーが格子上で 3 つ以上押されているのを検出
した場合、検出直前の状態で置き換えるというものです。

 > # たとえば、SHIFT と m r DEL のうち3つが押された可能性があれば、
 > # vikiu_scan はなにもしないようにする。

しかしスキャンしている瞬間に押されると正しく検出できません。
たとえば、SHIFT だけが押されている時、以下の矢印のあたりを
スキャンしている瞬間に M と R を同時に押されると、スキャン
終了の割り込みがかかった時点では SHIFT と DEL だけが押され
ているように見えます。

   M             R

→

   SHIFT         DEL

これを避けるためには、連続する 2 回のスキャンで検出された
キーだけを対象に処理を行なうようにすれば良いかも知れません。
(多少レスポンスは悪くなりますが)

その前に、本当にこのようなパターンで DEL が入っているのか、
それとも他の原因かが気になります。
他に考えられるのは、キーを押してから離すまでの時間が
スキャンの間隔よりも短い場合です。これはスキャンの間隔を
短くすることである程度回避できますが、間隔を 0 にはできな
いので、どうにもならない場合もあります。

Takemura