Fix missing text input on Windows with certain keyboard layouts
authorGermano Cavalcante <germano.costa@ig.com.br>
Thu, 26 Mar 2020 12:22:37 +0000 (09:22 -0300)
committerGermano Cavalcante <germano.costa@ig.com.br>
Thu, 26 Mar 2020 12:22:47 +0000 (09:22 -0300)
Events for keys specific to certain keyboard layouts unknown to Blender
were ignored. Now pass them along as unknown key events for which we
can still handle text input, like we already do for Linux and macOS.

Differential Revision: https://developer.blender.org/D7229

intern/ghost/intern/GHOST_SystemWin32.cpp

index 26d3aea403c81bf9814fa3d974b643f36ccb0e61..e31186bd6a5efe71a8ad0fd0362bf50a7c706a26 100644 (file)
@@ -1044,7 +1044,10 @@ GHOST_EventKey *GHOST_SystemWin32::processKeyEvent(GHOST_WindowWin32 *window, RA
   GHOST_TKey key = system->hardKey(raw, &keyDown, &vk);
   GHOST_EventKey *event;
 
-  if (key != GHOST_kKeyUnknown) {
+  /* We used to check `if (key != GHOST_kKeyUnknown)`, but since the message
+   * values `WM_SYSKEYUP`, `WM_KEYUP` and `WM_CHAR` are ignored, we capture
+   * those events here as well. */
+  {
     char utf8_char[6] = {0};
     char ascii = 0;
     bool is_repeat = false;
@@ -1102,9 +1105,6 @@ GHOST_EventKey *GHOST_SystemWin32::processKeyEvent(GHOST_WindowWin32 *window, RA
 
     // GHOST_PRINTF("%c\n", ascii); // we already get this info via EventPrinter
   }
-  else {
-    event = NULL;
-  }
   return event;
 }