Skip to content

Input

The Renderer contract receives the existing winit input helper for ordinary desktop input. Touch is separate and deliberately semantic-free.

warp_core::input defines:

  • TouchPhase: Started, Moved, Ended, and Cancelled;
  • TouchContact: a stable id, phase, physical pixel position, and normalized coordinates;
  • TouchFrame: the surface size and contacts accumulated since the previous rendered frame.

Projects decide whether a contact is a button, camera gesture, joystick, or something else. Warp does not encode game-specific control policy. The Android tracker preserves IDs across movement, supports multiple simultaneous contacts, and emits cancellation edges before suspend so a resumed surface does not inherit phantom held controls.

The project hook is optional:

fn touch(&mut self, frame: &warp_core::input::TouchFrame) { }