Mercurial > games > semicongine
changeset 1461:33529c504264
merge
author | sam <sam@basx.dev> |
---|---|
date | Sun, 23 Mar 2025 22:38:04 +0700 |
parents | 852897af1dd0 (diff) f4897367fa79 (current diff) |
children | 9e27438ed96f |
files | semicongine/platform/windows/rendering.nim |
diffstat | 1 files changed, 10 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- 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(