# HG changeset patch # User sam # Date 1742580100 -25200 # Node ID af7754b983d379251acd780a768b3504c7bec321 # Parent 4a06e29d1a274eb46d362f7a2c64603670f417b8 add: some code for windows diff -r 4a06e29d1a27 -r af7754b983d3 semicongine/platform/windows/rendering.nim --- 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)