diff options
Diffstat (limited to 'win32')
| -rw-r--r-- | win32/main.c | 32 | 
1 files changed, 32 insertions, 0 deletions
| diff --git a/win32/main.c b/win32/main.c index 07ef1bd..5add23f 100644 --- a/win32/main.c +++ b/win32/main.c @@ -500,6 +500,34 @@ static LRESULT on_copydata(HWND hwnd, HWND hwndfrom, COPYDATASTRUCT *cds) {    return TRUE;  } +static void on_syskey(HWND hwnd, UINT vk, BOOL down, int repeat, UINT scan) { +  if (down) { +    if (vk == VK_F10) { +      if (GetKeyState(VK_CONTROL) & 0x8000U) { +        fmdsp_palette_set(&g.fmdsp, 9); +        return; +      } +    } +    FORWARD_WM_SYSKEYDOWN(hwnd, vk, repeat, scan, DefWindowProc); +  } else { +    FORWARD_WM_SYSKEYUP(hwnd, vk, repeat, scan, DefWindowProc); +  } +} + +static void on_key(HWND hwnd, UINT vk, BOOL down, int repeat, UINT scan) { +  if (down) { +    if (VK_F1 <= vk && vk <= VK_F12) { +      if (GetKeyState(VK_CONTROL) & 0x8000U) { +        fmdsp_palette_set(&g.fmdsp, vk - VK_F1); +        return; +      } +    } +    FORWARD_WM_KEYDOWN(hwnd, vk, repeat, scan, DefWindowProc); +  } else { +    FORWARD_WM_KEYUP(hwnd, vk, repeat, scan, DefWindowProc); +  } +} +  static LRESULT CALLBACK wndproc(    HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam  ) { @@ -514,6 +542,10 @@ static LRESULT CALLBACK wndproc(  #ifdef ENABLE_WM_DROPFILES    HANDLE_MSG(hwnd, WM_DROPFILES, on_dropfiles);  #endif // ENABLE_WM_DROPFILES +  HANDLE_MSG(hwnd, WM_KEYDOWN, on_key); +  HANDLE_MSG(hwnd, WM_KEYUP, on_key); +  HANDLE_MSG(hwnd, WM_SYSKEYDOWN, on_syskey); +  HANDLE_MSG(hwnd, WM_SYSKEYUP, on_syskey);    }    return DefWindowProc(hwnd, msg, wParam, lParam);  } | 
