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(