Keyboard
This example uses keyboard events to move a blue square around the page. Control the square with the arrow keys.
Interactions
This example modifies the default interactions record in Gesso.Application.defaultBehavior by adding two keyboard event handlers:
, behavior: GApp.defaultBehavior
{ render = render
, update = update
, interactions { keyboard = [ keyDown, keyUp ] }
}
The event handlers have type Gesso.Interactions.KeyboardInteraction State. They’re constructed using on functions from Gesso.Interactions. They both listen for key events, and update the state when an arrow key is pressed or released:
keyDown :: GInt.KeyboardInteraction State
keyDown = GInt.onKeyDown $ setKey true
keyUp :: GInt.KeyboardInteraction State
keyUp = GInt.onKeyUp $ setKey false
setKey :: Boolean -> KeyboardEvent -> Delta -> Scalers -> State -> Effect (Maybe State)
setKey val event _ _ state = pure $ case KEv.key event of
"ArrowUp" -> Just state { keys { up = val } }
"ArrowDown" -> Just state { keys { down = val } }
"ArrowLeft" -> Just state { keys { left = val } }
"ArrowRight" -> Just state { keys { right = val } }
_ -> Nothing