Refreshed the code to compile without warning.
[universe.git] / simple_window.cc
index 3ab3c81..7fee9c2 100644 (file)
@@ -2,6 +2,9 @@
 // Written and (C) by Francois Fleuret
 // Contact <francois.fleuret@idiap.ch> for comments & bug reports
 
 // Written and (C) by Francois Fleuret
 // Contact <francois.fleuret@idiap.ch> for comments & bug reports
 
+#include <string.h>
+#include <stdlib.h>
+
 #include "simple_window.h"
 
 SimpleEvent::SimpleEvent() : type(UNDEFINED) {}
 #include "simple_window.h"
 
 SimpleEvent::SimpleEvent() : type(UNDEFINED) {}
@@ -183,17 +186,24 @@ SimpleEvent SimpleWindow::event() {
       break;
 
     case KeyPress:
       break;
 
     case KeyPress:
+      KeySym mykey;
+      mykey = XkbKeycodeToKeysym(_display,
+                                 event.xkey.keycode, 0,
+                                 event.xkey.state & ShiftMask ? 1 : 0);
+
       se.type = SimpleEvent::KEY_PRESS;
       se.type = SimpleEvent::KEY_PRESS;
-      strncpy(se.key,
-              XKeysymToString(XKeycodeToKeysym(_display, event.xkey.keycode, 0)),
-              (sizeof(se.key)/sizeof(char) - 1));
+      strncpy(se.key, XKeysymToString(mykey), (sizeof(se.key)/sizeof(char) - 1));
+
       break;
 
     case KeyRelease:
       break;
 
     case KeyRelease:
+      KeySym mykey;
+      mykey = XkbKeycodeToKeysym(_display,
+                                 event.xkey.keycode, 0,
+                                 event.xkey.state & ShiftMask ? 1 : 0);
+
       se.type = SimpleEvent::KEY_RELEASE;
       se.type = SimpleEvent::KEY_RELEASE;
-      strncpy(se.key,
-              XKeysymToString(XKeycodeToKeysym(_display, event.xkey.keycode, 0)),
-              (sizeof(se.key)/sizeof(char) - 1));
+      strncpy(se.key, XKeysymToString(mykey), (sizeof(se.key)/sizeof(char) - 1));
       break;
 
     default:
       break;
 
     default: