@@ -27,9 +27,24 @@ std::wstring FormatHotkey(UINT modifiers, UINT vk) {
2727 return result;
2828}
2929
30+ // Media key hotkey IDs (use high values to avoid conflicts)
31+ #define HOTKEY_ID_MEDIA_PLAYPAUSE 0x7F00
32+ #define HOTKEY_ID_MEDIA_STOP 0x7F01
33+ #define HOTKEY_ID_MEDIA_PREV 0x7F02
34+ #define HOTKEY_ID_MEDIA_NEXT 0x7F03
35+
3036// Register all global hotkeys
3137void RegisterGlobalHotkeys () {
32- if (!g_hwnd || !g_hotkeysEnabled) return ;
38+ if (!g_hwnd) return ;
39+
40+ // Always register media keys (no modifiers needed)
41+ RegisterHotKey (g_hwnd, HOTKEY_ID_MEDIA_PLAYPAUSE, 0 , VK_MEDIA_PLAY_PAUSE);
42+ RegisterHotKey (g_hwnd, HOTKEY_ID_MEDIA_STOP, 0 , VK_MEDIA_STOP);
43+ RegisterHotKey (g_hwnd, HOTKEY_ID_MEDIA_PREV, 0 , VK_MEDIA_PREV_TRACK);
44+ RegisterHotKey (g_hwnd, HOTKEY_ID_MEDIA_NEXT, 0 , VK_MEDIA_NEXT_TRACK);
45+
46+ // Register user-defined hotkeys
47+ if (!g_hotkeysEnabled) return ;
3348 for (const auto & hk : g_hotkeys) {
3449 RegisterHotKey (g_hwnd, hk.id , hk.modifiers , hk.vk );
3550 }
@@ -38,6 +53,14 @@ void RegisterGlobalHotkeys() {
3853// Unregister all global hotkeys
3954void UnregisterGlobalHotkeys () {
4055 if (!g_hwnd) return ;
56+
57+ // Unregister media keys
58+ UnregisterHotKey (g_hwnd, HOTKEY_ID_MEDIA_PLAYPAUSE);
59+ UnregisterHotKey (g_hwnd, HOTKEY_ID_MEDIA_STOP);
60+ UnregisterHotKey (g_hwnd, HOTKEY_ID_MEDIA_PREV);
61+ UnregisterHotKey (g_hwnd, HOTKEY_ID_MEDIA_NEXT);
62+
63+ // Unregister user-defined hotkeys
4164 for (const auto & hk : g_hotkeys) {
4265 UnregisterHotKey (g_hwnd, hk.id );
4366 }
0 commit comments