# HG changeset patch # User sam # Date 1742744284 -25200 # Node ID 33529c504264d730bf270ebb95ab829741995fbb # Parent 852897af1dd0354fd843c6fa705a453b66283e66# Parent f4897367fa79e7cff7a13d8779af167f788cd385 merge diff -r f4897367fa79 -r 33529c504264 semicongine/platform/windows/rendering.nim --- a/semicongine/platform/windows/rendering.nim Sat Mar 22 23:03:02 2025 +0700 +++ b/semicongine/platform/windows/rendering.nim Sun Mar 23 22:38:04 2025 +0700 @@ -124,36 +124,26 @@ else: key -var unicodeData: array[32, WCHAR] - proc windowHandler( hwnd: HWND, uMsg: UINT, wParam: WPARAM, lParam: LPARAM ): LRESULT {.stdcall.} = case uMsg of WM_DESTROY: currentEvents.add(Event(eventType: Quit)) + of WM_CHAR: + var event = Event(eventType: KeyPressed, key: Key.UNKNOWN) + var ws = newWideCString(1) + ws[0] = Utf16Char(wParam) + var s = $ws + for r in s.runes(): + event.char = r + break + currentEvents.add(event) of WM_KEYDOWN, WM_SYSKEYDOWN: let key = mapLeftRightKeys(INT(wParam), lParam) - var event = + currentEvents.add( Event(eventType: KeyPressed, key: KeyTypeMap.getOrDefault(key, Key.UNKNOWN)) - let len = ToUnicode( - UINT(wParam), - UINT((lParam shr 16) and 0xff), - nil, - addr(unicodeData[0]), - int32(unicodeData.len), - 0, ) - if len > 0: - let wcstr = newWideCString(len) - for i in 0 ..< len: - wcstr[i] = cast[Utf16Char](unicodeData[i]) - let s = $wcstr - echo s - for r in s.runes(): - event.char = r - break - currentEvents.add(event) of WM_KEYUP, WM_SYSKEYUP: let key = mapLeftRightKeys(INT(wParam), lParam) currentEvents.add(