diff --git a/core/sys/windows/user32.odin b/core/sys/windows/user32.odin index 02cf0a54d..f1232c680 100644 --- a/core/sys/windows/user32.odin +++ b/core/sys/windows/user32.odin @@ -373,8 +373,9 @@ GET_XBUTTON_WPARAM :: #force_inline proc "contextless" (wParam: WPARAM) -> WORD return HIWORD(cast(DWORD)wParam) } -GET_RAWINPUT_CODE_WPARAM :: #force_inline proc "contextless" (wParam: WPARAM) -> BYTE { - return BYTE(wParam) & 0xFF +// Retrieves the input code from wParam in WM_INPUT message. +GET_RAWINPUT_CODE_WPARAM :: #force_inline proc "contextless" (wParam: WPARAM) -> RAWINPUT_CODE { + return RAWINPUT_CODE(wParam & 0xFF) } MAKEINTRESOURCEW :: #force_inline proc "contextless" (#any_int i: int) -> LPWSTR { @@ -398,6 +399,16 @@ DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE :: DPI_AWARENESS_CONTEXT(~uintptr(2)) DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 :: DPI_AWARENESS_CONTEXT(~uintptr(3)) // -4 DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED :: DPI_AWARENESS_CONTEXT(~uintptr(4)) // -5 +RAWINPUT_CODE :: enum { + // The input is in the regular message flow, + // the app is required to call DefWindowProc + // so that the system can perform clean ups. + RIM_INPUT = 0, + // The input is sink only. The app is expected + // to behave nicely. + RIM_INPUTSINK = 1, +} + RAWINPUTHEADER :: struct { dwType: DWORD, dwSize: DWORD, diff --git a/tests/core/sys/windows/test_user32.odin b/tests/core/sys/windows/test_user32.odin new file mode 100644 index 000000000..0778fdf41 --- /dev/null +++ b/tests/core/sys/windows/test_user32.odin @@ -0,0 +1,13 @@ +//+build windows +package test_core_sys_windows + +import "core:testing" +import win32 "core:sys/windows" + +@(test) +verify_rawinput_code :: proc(t: ^testing.T) { + testing.expect_value(t, win32.GET_RAWINPUT_CODE_WPARAM(0), win32.RAWINPUT_CODE.RIM_INPUT) + testing.expect_value(t, win32.GET_RAWINPUT_CODE_WPARAM(1), win32.RAWINPUT_CODE.RIM_INPUTSINK) + testing.expect_value(t, win32.GET_RAWINPUT_CODE_WPARAM(0x100), win32.RAWINPUT_CODE.RIM_INPUT) + testing.expect_value(t, win32.GET_RAWINPUT_CODE_WPARAM(0x101), win32.RAWINPUT_CODE.RIM_INPUTSINK) +}