changeset 1463:f9d86889e018 default tip

did: final windows input fix
author sam <sam@basx.dev>
date Mon, 24 Mar 2025 00:15:08 +0700
parents 9e27438ed96f
children
files semicongine/core/types.nim semicongine/platform/windows/rendering.nim
diffstat 2 files changed, 6 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/semicongine/core/types.nim	Sun Mar 23 23:05:30 2025 +0700
+++ b/semicongine/core/types.nim	Mon Mar 24 00:15:08 2025 +0700
@@ -299,8 +299,8 @@
   Event* = object
     case eventType*: EventType
     of KeyPressed, KeyReleased:
-      key*: Key
-      char*: Rune
+      key*: Key = Key.UNKNOWN
+      char*: Rune = Rune(-1)
     of MousePressed, MouseReleased:
       button*: MouseButton
     of MouseWheel:
--- a/semicongine/platform/windows/rendering.nim	Sun Mar 23 23:05:30 2025 +0700
+++ b/semicongine/platform/windows/rendering.nim	Mon Mar 24 00:15:08 2025 +0700
@@ -131,14 +131,15 @@
   of WM_DESTROY:
     currentEvents.add(Event(eventType: Quit))
   of WM_CHAR:
-    var event = Event(eventType: KeyPressed, key: Key.UNKNOWN)
+    let key = mapLeftRightKeys(INT(wParam), lParam)
     var ws = newWideCString(1)
     ws[0] = Utf16Char(wParam)
     var s = $ws
     for r in s.runes():
-      event.char = r
+      currentEvents.add(
+        Event(eventType: KeyPressed, key: KeyTypeMap.getOrDefault(key, Key.UNKNOWN), char: r)
+      )
       break
-    currentEvents.add(event)
   of WM_KEYDOWN, WM_SYSKEYDOWN:
     let key = mapLeftRightKeys(INT(wParam), lParam)
     currentEvents.add(