X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=simple_window.cc;h=7fee9c2b45ec5d89c8e1c7e12a8563a4f5e6b36b;hb=d5b909fd8dd3d0ebc6d1bd107abb5383e2cbeca1;hp=3ab3c81f3925ea40754cf3799a9066f6839cc325;hpb=3caf13085a6ae1ae41d6f489c8b69206b0ffa48d;p=universe.git diff --git a/simple_window.cc b/simple_window.cc index 3ab3c81..7fee9c2 100644 --- a/simple_window.cc +++ b/simple_window.cc @@ -2,6 +2,9 @@ // Written and (C) by Francois Fleuret // Contact for comments & bug reports +#include +#include + #include "simple_window.h" SimpleEvent::SimpleEvent() : type(UNDEFINED) {} @@ -183,17 +186,24 @@ SimpleEvent SimpleWindow::event() { break; case KeyPress: + KeySym mykey; + mykey = XkbKeycodeToKeysym(_display, + event.xkey.keycode, 0, + event.xkey.state & ShiftMask ? 1 : 0); + 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: + KeySym mykey; + mykey = XkbKeycodeToKeysym(_display, + event.xkey.keycode, 0, + event.xkey.state & ShiftMask ? 1 : 0); + 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: