Mercurial > games > semicongine
changeset 1456:af7754b983d3 default tip
add: some code for windows
author | sam <sam@basx.dev> |
---|---|
date | Sat, 22 Mar 2025 01:01:40 +0700 |
parents | 4a06e29d1a27 |
children | |
files | semicongine/platform/windows/rendering.nim |
diffstat | 1 files changed, 18 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/semicongine/platform/windows/rendering.nim Sat Mar 22 00:35:13 2025 +0700 +++ b/semicongine/platform/windows/rendering.nim Sat Mar 22 01:01:40 2025 +0700 @@ -123,6 +123,8 @@ else: key +var unicodeData: array[WCHAR, 16] + proc windowHandler( hwnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM ): LRESULT {.stdcall.} = @@ -131,19 +133,25 @@ currentEvents.add(Event(eventType: Quit)) of WM_KEYDOWN, WM_SYSKEYDOWN: let key = mapLeftRightKeys(INT(wParam), lParam) - currentEvents.add( + var event = Event(eventType: KeyPressed, key: KeyTypeMap.getOrDefault(key, Key.UNKNOWN)) + let len = ToUnicode( + wParam, (lParam shr 16) and 0xff, nil, addr(unicodeData[0]), unicodeData.len, 0 ) + # if len > 0: + # TODO: convert to utf32 + # newWideCString() --> stuff + # event.char = unicodeData + currentEvents.add(event) #[ - proc ToUnicodeEx*( - wVirtKey: UINT, - wScanCode: UINT, - lpKeyState: ptr BYTE, - pwszBuff: LPWSTR, - cchBuff: int32, - wFlags: UINT, - dwhkl: HKL, - ): int32 {.winapi, stdcall, dynlib: "user32", importc.} + proc ToUnicode*( + wVirtKey: UINT, + wScanCode: UINT, + lpKeyState: ptr BYTE, + pwszBuff: LPWSTR, + cchBuff: int32, + wFlags: UINT, + ): int32 ]# of WM_KEYUP, WM_SYSKEYUP: let key = mapLeftRightKeys(INT(wParam), lParam)