handleKeyEvent method
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;
}