From c2933c0fdfb948eb232d52cf02ed1585c9fca424 Mon Sep 17 00:00:00 2001 From: edde746 <86283021+edde746@users.noreply.github.com> Date: Tue, 23 Dec 2025 03:04:32 +0100 Subject: [PATCH] fix: key serialization close #186 --- lib/services/settings_service.dart | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/services/settings_service.dart b/lib/services/settings_service.dart index 7b791d2b..35677488 100644 --- a/lib/services/settings_service.dart +++ b/lib/services/settings_service.dart @@ -455,7 +455,10 @@ class SettingsService extends BaseSharedPreferencesService { }; Map _serializeHotKey(HotKey hotKey) { - return {'key': hotKey.key.toString(), 'modifiers': hotKey.modifiers?.map((m) => m.name).toList() ?? []}; + // Use USB HID code for reliable serialization across debug/release modes + final physicalKey = hotKey.key as PhysicalKeyboardKey; + final usbHidCode = physicalKey.usbHidUsage.toRadixString(16).padLeft(8, '0'); + return {'key': usbHidCode, 'modifiers': hotKey.modifiers?.map((m) => m.name).toList() ?? []}; } HotKey? _deserializeHotKey(Map data) { @@ -469,7 +472,8 @@ class SettingsService extends BaseSharedPreferencesService { .cast() .toList(); - final key = _findKeyByString(keyString); + // Try direct USB HID lookup first (new format), fall back to string parsing (backwards compat) + final key = _usbHidKeyMap[keyString] ?? _findKeyByString(keyString); if (key != null) { return HotKey(key: key, modifiers: modifiers.isNotEmpty ? modifiers : null); }