press escape to stop capturing keyboard input

This commit is contained in:
Nick Fisher
2024-02-19 20:54:11 +08:00
parent 3d013dec54
commit 974f9ea9d9

View File

@@ -4,6 +4,7 @@ import 'package:flutter_filament/filament_controller.dart';
class HardwareKeyboardListener { class HardwareKeyboardListener {
final EntityTransformController _controller; final EntityTransformController _controller;
var _listening = true;
HardwareKeyboardListener(this._controller) { HardwareKeyboardListener(this._controller) {
// Get the global handler. // Get the global handler.
final KeyMessageHandler? existing = final KeyMessageHandler? existing =
@@ -18,8 +19,14 @@ class HardwareKeyboardListener {
if (keyMessage.rawEvent == null) { if (keyMessage.rawEvent == null) {
return false; return false;
} }
if (!_listening) {
return false;
}
var event = keyMessage.rawEvent!; var event = keyMessage.rawEvent!;
switch (event.logicalKey) { switch (event.logicalKey) {
case LogicalKeyboardKey.escape:
_listening = false;
break;
case LogicalKeyboardKey.keyW: case LogicalKeyboardKey.keyW:
(event is RawKeyDownEvent) (event is RawKeyDownEvent)
? _controller.forwardPressed() ? _controller.forwardPressed()