From fc38e999c4aa91f8160e82637ffc44d58c258dfe Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Thu, 26 Sep 2019 08:00:19 +1000 Subject: [PATCH] Get key presses (i.e. actual characters in chat input) working --- src/Window.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/Window.c b/src/Window.c index 2fae9b6fe..4e4032c24 100644 --- a/src/Window.c +++ b/src/Window.c @@ -3778,6 +3778,24 @@ static int Window_MapMouse(int button) { return 0; } +static void Window_ProcessKeyChars(id ev) { + char buffer[128]; + const char* src; + String str; + id chars; + int i, len; + + chars = objc_msgSend(ev, sel_registerName("charactersIgnoringModifiers")); + src = objc_msgSend(chars, sel_registerName("UTF8String")); + len = String_CalcLen(src, UInt16_MaxValue); + String_InitArray(str, buffer); + + String_AppendUtf8(&str, src, len); + for (i = 0; i < str.length; i++) { + Event_RaiseInt(&InputEvents.Press, str.buffer[i]); + } +} + void Window_ProcessEvents(void) { id ev; int key, type, mouseX, mouseY; @@ -3811,6 +3829,7 @@ void Window_ProcessEvents(void) { // TODO: don't intercept keys when dialog box open key = Window_MapKey((int)objc_msgSend(ev, sel_registerName("keyCode"))); if (key) Input_SetPressed(key, true); + Window_ProcessKeyChars(ev); break; case 11: /* NSKeyUp */