Keyboard: no point in catching modifiers

This commit is contained in:
Jonas Bark
2025-03-30 18:58:38 +02:00
parent 92419c9182
commit 7a3d120123
2 changed files with 23 additions and 24 deletions

View File

@@ -38,7 +38,9 @@ class KeymapRequirement extends PlatformRequirement {
@override
Widget? build(BuildContext context, VoidCallback onUpdate) {
final controller = TextEditingController(text: actionHandler.keymap?.name);
return DropdownMenu<Keymap>(
controller: controller,
dropdownMenuEntries:
Keymap.values.map((key) => DropdownMenuEntry<Keymap>(value: key, label: key.toString())).toList(),
onSelected: (keymap) async {
@@ -49,8 +51,12 @@ class KeymapRequirement extends PlatformRequirement {
context,
).showSnackBar(SnackBar(content: Text('Use a Custom Keymap if you experience any issues on Windows')));
}
controller.text = keymap?.name ?? '';
if (keymap == null) {
return;
}
actionHandler.init(keymap);
settings.setKeymap(keymap!);
settings.setKeymap(keymap);
onUpdate();
},
initialSelection: actionHandler.keymap,

View File

@@ -21,9 +21,9 @@ class GearHotkeyDialog extends StatefulWidget {
class _GearHotkeyDialogState extends State<GearHotkeyDialog> {
final FocusNode _focusNode = FocusNode();
final Set<KeyDownEvent> _pressedKeys = {};
Set<KeyDownEvent>? _gearUpHotkey;
Set<KeyDownEvent>? _gearDownHotkey;
KeyDownEvent? _pressedKey;
KeyDownEvent? _gearUpHotkey;
KeyDownEvent? _gearDownHotkey;
String _mode = 'up'; // 'up' or 'down'
@@ -36,33 +36,32 @@ class _GearHotkeyDialogState extends State<GearHotkeyDialog> {
void _onKey(KeyEvent event) {
setState(() {
if (event is KeyDownEvent) {
_pressedKeys.add(event);
_pressedKey = event;
} else if (event is KeyUpEvent) {
if (_pressedKeys.isNotEmpty) {
if (_pressedKey != null) {
if (_mode == 'up') {
_gearUpHotkey = {..._pressedKeys};
_gearUpHotkey = _pressedKey;
_mode = 'down';
} else {
_gearDownHotkey = {..._pressedKeys};
_gearDownHotkey = _pressedKey;
widget.keymap.increase = KeyPair(
physicalKey: _gearUpHotkey!.first.physicalKey,
logicalKey: _gearUpHotkey!.first.logicalKey,
physicalKey: _gearUpHotkey!.physicalKey,
logicalKey: _gearUpHotkey!.logicalKey,
);
widget.keymap.decrease = KeyPair(
physicalKey: _gearDownHotkey!.first.physicalKey,
logicalKey: _gearDownHotkey!.first.logicalKey,
physicalKey: _gearDownHotkey!.physicalKey,
logicalKey: _gearDownHotkey!.logicalKey,
);
Navigator.of(context).pop(widget.keymap);
}
_pressedKeys.clear();
_pressedKey = null;
}
}
});
}
String _formatKeys(Set<KeyDownEvent>? keys) {
if (keys == null || keys.isEmpty) return 'Not set';
return keys.map((k) => k.logicalKey.keyLabel).join(' + ');
String _formatKey(KeyDownEvent? key) {
return key?.logicalKey.keyLabel ?? 'Not set';
}
@override
@@ -75,7 +74,6 @@ class _GearHotkeyDialogState extends State<GearHotkeyDialog> {
onKeyEvent: _onKey,
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("Step 1: Press a hotkey for **Gear Up**."),
Text("Step 2: Press a hotkey for **Gear Down**."),
@@ -83,18 +81,13 @@ class _GearHotkeyDialogState extends State<GearHotkeyDialog> {
ListTile(
leading: Icon(Icons.arrow_upward),
title: Text("Gear Up Hotkey"),
subtitle: Text(_formatKeys(_gearUpHotkey)),
subtitle: Text(_formatKey(_gearUpHotkey)),
),
ListTile(
leading: Icon(Icons.arrow_downward),
title: Text("Gear Down Hotkey"),
subtitle: Text(_formatKeys(_gearDownHotkey)),
subtitle: Text(_formatKey(_gearDownHotkey)),
),
if (_pressedKeys.isNotEmpty)
Padding(
padding: const EdgeInsets.only(top: 8.0),
child: Text("Recording: ${_formatKeys(_pressedKeys)}", style: TextStyle(color: Colors.blue)),
),
],
),
),