handleKeyEvent method

bool handleKeyEvent(
  1. KeyEvent event
)

Tracks a key event. Returns true if the key is managed by this driver (movement, sprint, snap-turn, or recenter keys), so the widget layer can mark it handled.

Implementation

bool handleKeyEvent(KeyEvent event) {
  if (!enabled) return false;

  final key = event.logicalKey;

  if (event is KeyDownEvent) {
    if (key == keyRecenter) {
      recenter();
      return true;
    }
    if (key == keySnapTurnLeft) {
      cameraRig.rotate(snapTurnAngle, 0);
      return true;
    }
    if (key == keySnapTurnRight) {
      cameraRig.rotate(-snapTurnAngle, 0);
      return true;
    }
  }

  final managed = _isMovementKey(key) || _isSprintKey(key);
  if (!managed) return false;

  if (event is KeyDownEvent || event is KeyRepeatEvent) {
    _pressedKeys.add(key);
  } else if (event is KeyUpEvent) {
    _pressedKeys.remove(key);
  }
  return true;
}