[Scummvm-cvs-logs] CVS: scummvm/backends/x11 x11.cpp,1.5,1.6
Lionel Ulmer
bbrox at users.sourceforge.net
Sat Nov 2 09:52:10 CET 2002
Update of /cvsroot/scummvm/scummvm/backends/x11
In directory usw-pr-cvs1:/tmp/cvs-serv23163/backends/x11
Modified Files:
x11.cpp
Log Message:
Fix key repeat in the GUI.
Index: x11.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/x11/x11.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- x11.cpp 2 Nov 2002 15:13:08 -0000 1.5
+++ x11.cpp 2 Nov 2002 17:44:06 -0000 1.6
@@ -842,19 +842,7 @@
}
break;
- case KeyPress:
- switch (event.xkey.keycode) {
- case 132:
- report_presses = 0;
- break;
-
- case 133:
- fake_right_mouse = 1;
- break;
- }
- break;
-
- case KeyRelease:{
+ case KeyPress:{
/* I am using keycodes here and NOT keysyms to be sure that even if the user
remaps his iPAQ's keyboard, it will still work.
*/
@@ -869,6 +857,7 @@
if (event.xkey.state & 0x08)
mode |= KBD_ALT;
switch (event.xkey.keycode) {
+
case 9: /* Escape on my PC */
case 130: /* Calendar on the iPAQ */
keycode = 27;
@@ -884,6 +873,48 @@
keycode = 32;
break;
+ case 132:
+ report_presses = 0;
+ break;
+
+ case 133:
+ fake_right_mouse = 1;
+ break;
+
+ default:{
+ KeySym xsym;
+ xsym = XKeycodeToKeysym(display, event.xkey.keycode, 0);
+ keycode = xsym;
+ if ((xsym >= 'a') && (xsym <= 'z') && (event.xkey.state & 0x01))
+ xsym &= ~0x20; /* Handle shifted keys */
+ ascii = xsym;
+ }
+ }
+ if (keycode != -1) {
+ scumm_event->event_code = EVENT_KEYDOWN;
+ scumm_event->kbd.keycode = keycode;
+ scumm_event->kbd.ascii = (ascii != -1 ? ascii : keycode);
+ scumm_event->kbd.flags = mode;
+ return true;
+ }
+ }
+ break;
+
+ case KeyRelease:{
+ /* I am using keycodes here and NOT keysyms to be sure that even if the user
+ remaps his iPAQ's keyboard, it will still work.
+ */
+ int keycode = -1;
+ int ascii = -1;
+ byte mode = 0;
+
+ if (event.xkey.state & 0x01)
+ mode |= KBD_SHIFT;
+ if (event.xkey.state & 0x04)
+ mode |= KBD_CTRL;
+ if (event.xkey.state & 0x08)
+ mode |= KBD_ALT;
+ switch (event.xkey.keycode) {
case 132: /* 'Q' on the iPAQ */
report_presses = 1;
break;
@@ -902,7 +933,7 @@
}
}
if (keycode != -1) {
- scumm_event->event_code = EVENT_KEYDOWN;
+ scumm_event->event_code = EVENT_KEYUP;
scumm_event->kbd.keycode = keycode;
scumm_event->kbd.ascii = (ascii != -1 ? ascii : keycode);
scumm_event->kbd.flags = mode;
More information about the Scummvm-git-logs
mailing list