Merge pull request #4038 from Hyrtwol/core-sys-windows-rawinput-code

Core sys windows rawinput code
This commit is contained in:
Jeroen van Rijn
2024-08-08 18:23:02 +02:00
committed by GitHub
4 changed files with 28 additions and 4 deletions

View File

@@ -28,7 +28,7 @@ foreign gdi32 {
SetPixelFormat :: proc(hdc: HDC, format: INT, ppfd: ^PIXELFORMATDESCRIPTOR) -> BOOL ---
ChoosePixelFormat :: proc(hdc: HDC, ppfd: ^PIXELFORMATDESCRIPTOR) -> INT ---
DescribePixelFormat :: proc(hdc: HDC, iPixelFormat: INT, nBytes: UINT, ppfd: ^PIXELFORMATDESCRIPTOR) -> INT ---
DescribePixelFormat :: proc(hdc: HDC, iPixelFormat: INT, nBytes: UINT, ppfd: ^PIXELFORMATDESCRIPTOR) -> INT ---
SwapBuffers :: proc(hdc: HDC) -> BOOL ---
SetDCBrushColor :: proc(hdc: HDC, color: COLORREF) -> COLORREF ---

View File

@@ -2781,7 +2781,7 @@ CONTEXT :: struct {
PCONTEXT :: ^CONTEXT
LPCONTEXT :: ^CONTEXT
when size_of(uintptr) == 32 {
when size_of(uintptr) == 32 {
XSAVE_FORMAT :: struct #align(16) {
ControlWord: WORD,
StatusWord: WORD,

View File

@@ -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,

View File

@@ -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)
}