From 3db39d9598836f3cb139ffaba58aa8d6de35b30b Mon Sep 17 00:00:00 2001 From: vczh Date: Sat, 31 Jan 2026 12:26:25 -0800 Subject: [PATCH] Fix GlobalHotKey tutorial --- Import/GacUI.Windows.cpp | 18 +++++++++++++++++- Import/GacUI.Windows.h | 1 + Import/GacUI.h | 18 +++++++++--------- .../GlobalHotKey/GlobalHotKey.vcxproj | 3 +++ .../GlobalHotKey/GlobalHotKey.vcxproj.filters | 5 +++++ 5 files changed, 35 insertions(+), 10 deletions(-) diff --git a/Import/GacUI.Windows.cpp b/Import/GacUI.Windows.cpp index db31f17b..21faf20b 100644 --- a/Import/GacUI.Windows.cpp +++ b/Import/GacUI.Windows.cpp @@ -13932,7 +13932,16 @@ WindowsInputService return L"?"; } GetKeyNameText((int)scanCode, name, sizeof(name)/sizeof(*name)); - return name[0]?name:L"?"; + if (name[0]) + { + WString result = name; + vint index = predefinedKeys.Keys().IndexOf(result); + if (index != -1 && predefinedKeys.Values()[index] == code) + { + return result; + } + } + return WString::Unmanaged(L"?"); } void WindowsInputService::InitializeKeyNames() @@ -13952,6 +13961,13 @@ WindowsInputService ,isTimerEnabled(false) ,keyNames((vint)VKEY::KEY_MAXIMUM) { +#define INITIALIZE_KEY_NAME(NAME, TEXT)\ + keyNames[(vint)VKEY::KEY_ ## NAME] = WString::Unmanaged(TEXT);\ + if (!predefinedKeys.Keys().Contains(WString::Unmanaged(TEXT))) predefinedKeys.Add(WString::Unmanaged(TEXT), VKEY::KEY_ ## NAME);\ + + GUI_DEFINE_KEYBOARD_WINDOWS_NAME(INITIALIZE_KEY_NAME) +#undef INITIALIZE_KEY_NAME + InitializeKeyNames(); } diff --git a/Import/GacUI.Windows.h b/Import/GacUI.Windows.h index 79b65851..768b9740 100644 --- a/Import/GacUI.Windows.h +++ b/Import/GacUI.Windows.h @@ -2068,6 +2068,7 @@ namespace vl collections::Array keyNames; collections::Dictionary keys; + collections::Dictionary predefinedKeys; WString GetKeyNameInternal(VKEY code); void InitializeKeyNames(); diff --git a/Import/GacUI.h b/Import/GacUI.h index ff7fc36c..4f389ad1 100644 --- a/Import/GacUI.h +++ b/Import/GacUI.h @@ -985,15 +985,15 @@ ITEM(F11, L"F11")\ ITEM(F12, L"F12")\ ITEM(NUMLOCK, L"Pause")\ ITEM(SCROLL, L"Scroll Lock")\ -ITEM(BROWSER_HOME, L"M")\ -ITEM(VOLUME_MUTE, L"D")\ -ITEM(VOLUME_DOWN, L"C")\ -ITEM(VOLUME_UP, L"B")\ -ITEM(MEDIA_NEXT_TRACK, L"P")\ -ITEM(MEDIA_PREV_TRACK, L"Q")\ -ITEM(MEDIA_STOP, L"J")\ -ITEM(MEDIA_PLAY_PAUSE, L"G")\ -ITEM(LAUNCH_APP2, L"F")\ +ITEM(BROWSER_HOME, L"BROWSER_HOME")\ +ITEM(VOLUME_MUTE, L"VOLUME_MUTE")\ +ITEM(VOLUME_DOWN, L"VOLUME_DOWN")\ +ITEM(VOLUME_UP, L"VOLUME_UP")\ +ITEM(MEDIA_NEXT_TRACK, L"MEDIA_NEXT_TRACK")\ +ITEM(MEDIA_PREV_TRACK, L"MEDIA_PREV_TRACK")\ +ITEM(MEDIA_STOP, L"MEDIA_STOP")\ +ITEM(MEDIA_PLAY_PAUSE, L"MEDIA_PLAY_PAUSE")\ +ITEM(LAUNCH_APP2, L"LAUNCH_APP2")\ ITEM(OEM_PLUS, L"=")\ ITEM(OEM_COMMA, L",")\ ITEM(OEM_MINUS, L"-")\ diff --git a/Tutorial/GacUI_Controls/GlobalHotKey/GlobalHotKey.vcxproj b/Tutorial/GacUI_Controls/GlobalHotKey/GlobalHotKey.vcxproj index 8aabf6e0..21981b36 100644 --- a/Tutorial/GacUI_Controls/GlobalHotKey/GlobalHotKey.vcxproj +++ b/Tutorial/GacUI_Controls/GlobalHotKey/GlobalHotKey.vcxproj @@ -155,6 +155,9 @@ {96c559ca-9718-4bec-a053-28a0ab6a8ca2} + + + diff --git a/Tutorial/GacUI_Controls/GlobalHotKey/GlobalHotKey.vcxproj.filters b/Tutorial/GacUI_Controls/GlobalHotKey/GlobalHotKey.vcxproj.filters index b9a457b8..89a127b6 100644 --- a/Tutorial/GacUI_Controls/GlobalHotKey/GlobalHotKey.vcxproj.filters +++ b/Tutorial/GacUI_Controls/GlobalHotKey/GlobalHotKey.vcxproj.filters @@ -33,4 +33,9 @@ UI + + + Resource Files + + \ No newline at end of file