みなさんが言っているようにボタン情報は一定時間(1フレーム)毎に更新されるので、間にVSYNCやWAITが入らないと変化しない(前のボタン情報のまま)の場合があります。 なのでボタン処理の後にまたすぐボタン処理がある場合は、その間にVSYNCやWAITを経由するか確認して、経由しない場合は間に追加するなどしてボタン情報を更新してあげる必要があります。 基本的にVSYNCでも問題ないとは思いますが、ボタン情報を更新するという意図であれば確実性を重視してWAITにするという方針もあります。 とりあえずどちらでも良いので試してみて確認してみてください。