>>572
俺が昔実装した方法で言うと、入力ハンドリングの処理はキーの状態変化とその経過時間をFIFOキューに溜めていくだけにして、
入力に対して何か行動する処理はキューから結果をもらうって方法を取った。

短い時間の押し具合と、長押しや押しっぱなしの判断は、キューから取得したステートで判断てかんじ。

ポイントは経過時間(要件的には時計で言う時間でなくても良い、メインループの経過カウンタでも良い)で判定って所。