押した瞬間だけ一回
ジャンプや切り替えは、押しっぱなしでも一度しか起きてほしくない。keyboard(signal) の onKeydown は離散イベントで、キーが押されるたびにハンドラが呼ばれる。down(key) が「いま押されているか」を毎フレーム聞くのに対し、onKeydown は「いま押された瞬間」を捕まえる。
キーボードには二つの読み方がある。押下中かを問い合わせる poll(down)と、押した瞬間に通知が来る event(onKeydown)。継続入力(移動)は前者、一回きりの行為(ジャンプ・トグル)は後者。OS とブラウザはキーを押しっぱなしにすると一定間隔で keydown を送り続けるオートリピートを持っていて、event 側はその連射まで拾う。event.repeat がリピート由来の発火を示すフラグで、これで弾けば最初の一回だけが残る。
下では down で動かしつつ、スペースの押した瞬間だけ色を反転させる。オートリピートを混ぜないよう event.repeat で弾いている。
矢印で点が動き、スペースを叩くたびに白黒が入れ替わる。スペースを押しっぱなしにしても反転は一回きりで、指を離して押し直すとまた反転する。event.repeat を弾いているので、リピートの連射は無視される。移動は down、トグルは onKeydown。継続か、瞬間か。