[Scummvm-cvs-logs] SF.net SVN: scummvm: [27453] scummvm/trunk/backends/platform/PalmOS/Src/ base_event.cpp
chrilith at users.sourceforge.net
chrilith at users.sourceforge.net
Sat Jun 16 12:33:50 CEST 2007
Revision: 27453
http://scummvm.svn.sourceforge.net/scummvm/?rev=27453&view=rev
Author: chrilith
Date: 2007-06-16 03:33:48 -0700 (Sat, 16 Jun 2007)
Log Message:
-----------
Fixed arrow keys (hard and emu)
Modified Paths:
--------------
scummvm/trunk/backends/platform/PalmOS/Src/base_event.cpp
Modified: scummvm/trunk/backends/platform/PalmOS/Src/base_event.cpp
===================================================================
--- scummvm/trunk/backends/platform/PalmOS/Src/base_event.cpp 2007-06-16 10:25:01 UTC (rev 27452)
+++ scummvm/trunk/backends/platform/PalmOS/Src/base_event.cpp 2007-06-16 10:33:48 UTC (rev 27453)
@@ -93,72 +93,136 @@
sound_handler();
for(;;) {
+ // check for hardkey repeat for mouse emulation
+ keyCurrentState = KeyCurrentState();
+
// if it was a key pressed, let the keyup event raise
- if (_wasKey) {
- // check for hardkey repeat for mouse emulation
- keyCurrentState = KeyCurrentState();
+ if (_keyExtraPressed) {
+ if (gVars->arrowKeys) {
+ if (_keyExtraPressed & _keyExtra.bitLeft) {
+ if (!(keyCurrentState & _keyExtra.bitLeft)) {
+ _keyExtraPressed &= ~_keyExtra.bitLeft;
- if (!(keyCurrentState & _keyExtraMask)) {
- _lastKeyRepeat = 0;
+ event.type = Common::EVENT_KEYUP;
+ event.kbd.keycode = 276;
+ event.kbd.ascii = event.kbd.keycode;
+ event.kbd.flags = 0;
+ return true;
+ }
+ }
+ if (_keyExtraPressed & _keyExtra.bitRight) {
+ if (!(keyCurrentState & _keyExtra.bitRight)) {
+ _keyExtraPressed &= ~_keyExtra.bitRight;
- } else if (getMillis() >= (_keyExtraRepeat + _keyExtraDelay)) {
- _keyExtraRepeat = getMillis();
+ event.type = Common::EVENT_KEYUP;
+ event.kbd.keycode = 275;
+ event.kbd.ascii = event.kbd.keycode;
+ event.kbd.flags = 0;
+ return true;
+ }
+ }
+ if (_keyExtraPressed & _keyExtra.bitUp) {
+ if (!(keyCurrentState & _keyExtra.bitUp)) {
+ _keyExtraPressed &= ~_keyExtra.bitUp;
- if (gVars->arrowKeys) {
-/* if HARD_KEY(Up, chrUpArrow)
- else if HARD_KEY(Down, chrDownArrow)
- else if HARD_KEY(Left, chrLeftArrow)
- else if HARD_KEY(Right, chrRightArrow)
-*/
- } else {
- // button released ?
- if (_keyExtraPressed) {
- if (_keyExtraPressed & _keyExtra.bitActionA) {
- if (!(keyCurrentState & _keyExtra.bitActionA)) {
- _keyExtraPressed &= ~_keyExtra.bitActionA;
+ event.type = Common::EVENT_KEYUP;
+ event.kbd.keycode = 273;
+ event.kbd.ascii = event.kbd.keycode;
+ event.kbd.flags = 0;
+ return true;
+ }
+ }
+ if (_keyExtraPressed & _keyExtra.bitDown) {
+ if (!(keyCurrentState & _keyExtra.bitDown)) {
+ _keyExtraPressed &= ~_keyExtra.bitDown;
- event.type = Common::EVENT_LBUTTONUP;
- event.mouse.x = _mouseCurState.x;
- event.mouse.y = _mouseCurState.y;
- return true;
- }
- }
+ event.type = Common::EVENT_KEYUP;
+ event.kbd.keycode = 274;
+ event.kbd.ascii = event.kbd.keycode;
+ event.kbd.flags = 0;
+ return true;
+ }
+ }
+ }
- if (_keyExtraPressed & _keyExtra.bitActionB) {
- if (!(keyCurrentState & _keyExtra.bitActionB)) {
- _keyExtraPressed &= ~_keyExtra.bitActionB;
+ if (_keyExtraPressed & _keyExtra.bitActionA) {
+ if (!(keyCurrentState & _keyExtra.bitActionA)) {
+ _keyExtraPressed &= ~_keyExtra.bitActionA;
- event.type = Common::EVENT_RBUTTONUP;
- event.mouse.x = _mouseCurState.x;
- event.mouse.y = _mouseCurState.y;
- return true;
- }
- }
- }
+ event.type = Common::EVENT_LBUTTONUP;
+ event.mouse.x = _mouseCurState.x;
+ event.mouse.y = _mouseCurState.y;
+ return true;
+ }
+ }
- Int8 sx = 0;
- Int8 sy = 0;
+ if (_keyExtraPressed & _keyExtra.bitActionB) {
+ if (!(keyCurrentState & _keyExtra.bitActionB)) {
+ _keyExtraPressed &= ~_keyExtra.bitActionB;
- if (keyCurrentState & _keyExtra.bitUp)
- sy = -1;
- else if (keyCurrentState & _keyExtra.bitDown)
- sy = +1;
-
- if (keyCurrentState & _keyExtra.bitLeft)
- sx = -1;
- else if (keyCurrentState & _keyExtra.bitRight)
- sx = +1;
+ event.type = Common::EVENT_RBUTTONUP;
+ event.mouse.x = _mouseCurState.x;
+ event.mouse.y = _mouseCurState.y;
+ return true;
+ }
+ }
- if (sx || sy) {
- simulate_mouse(event, sx, sy, &x, &y);
- event.type = Common::EVENT_MOUSEMOVE;
- event.mouse.x = x;
- event.mouse.y = y;
- warpMouse(x, y);
+ // no more event till up is raised
+ return false;
+ }
- return true;
- }
+ if (!(keyCurrentState & _keyExtraMask)) {
+ _lastKeyRepeat = 0;
+
+ } else if (getMillis() >= (_keyExtraRepeat + _keyExtraDelay)) {
+ _keyExtraRepeat = getMillis();
+
+ if (gVars->arrowKeys) {
+ if (keyCurrentState & _keyExtra.bitLeft) {
+ _keyExtraPressed |= _keyExtra.bitLeft;
+ event.kbd.keycode = 276;
+
+ } else if (keyCurrentState & _keyExtra.bitRight) {
+ _keyExtraPressed |= _keyExtra.bitRight;
+ event.kbd.keycode = 275;
+
+ } else if (keyCurrentState & _keyExtra.bitUp) {
+ _keyExtraPressed |= _keyExtra.bitUp;
+ event.kbd.keycode = 273;
+
+ } else if (keyCurrentState & _keyExtra.bitDown) {
+ _keyExtraPressed |= _keyExtra.bitDown;
+ event.kbd.keycode = 274;
}
+
+ event.type = Common::EVENT_KEYDOWN;
+ event.kbd.ascii = event.kbd.keycode;
+ event.kbd.flags = 0;
+ return true;
+
+ } else {
+ Int8 sx = 0;
+ Int8 sy = 0;
+
+ if (keyCurrentState & _keyExtra.bitUp)
+ sy = -1;
+ else if (keyCurrentState & _keyExtra.bitDown)
+ sy = +1;
+
+ if (keyCurrentState & _keyExtra.bitLeft)
+ sx = -1;
+ else if (keyCurrentState & _keyExtra.bitRight)
+ sx = +1;
+
+ if (sx || sy) {
+ simulate_mouse(event, sx, sy, &x, &y);
+ event.type = Common::EVENT_MOUSEMOVE;
+ event.mouse.x = x;
+ event.mouse.y = y;
+ warpMouse(x, y);
+
+ return true;
+ }
}
}
@@ -177,9 +241,9 @@
k = 273; break;
case chrDownArrow:
k = 274; break;
+ case chrRightArrow:
+ k = 275; break;
case chrLeftArrow:
- k = 275; break;
- case chrRightArrow:
k = 276; break;
}
@@ -225,9 +289,9 @@
k = 273; break;
case chrDownArrow:
k = 274; break;
+ case chrRightArrow:
+ k = 275; break;
case chrLeftArrow:
- k = 275; break;
- case chrRightArrow:
k = 276; break;
}
@@ -249,13 +313,11 @@
((ev.data.keyDown.chr == vchrAttnStateChanged) ||
(ev.data.keyDown.chr == vchrAttnUnsnooze)));
-
// graffiti strokes, auto-off, etc...
if (!handled)
if (SysHandleEvent(&ev))
continue;
-
switch(ev.eType) {
case penMoveEvent:
get_coordinates(&ev, x, y);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list