[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