aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/PalmOS/Src/base_event.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'backends/platform/PalmOS/Src/base_event.cpp')
-rw-r--r--backends/platform/PalmOS/Src/base_event.cpp225
1 files changed, 146 insertions, 79 deletions
diff --git a/backends/platform/PalmOS/Src/base_event.cpp b/backends/platform/PalmOS/Src/base_event.cpp
index d28fd913c0..a3913529b6 100644
--- a/backends/platform/PalmOS/Src/base_event.cpp
+++ b/backends/platform/PalmOS/Src/base_event.cpp
@@ -93,73 +93,137 @@ bool OSystem_PalmBase::pollEvent(Common::Event &event) {
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 (!(keyCurrentState & _keyExtraMask)) {
- _lastKeyRepeat = 0;
-
- } else if (getMillis() >= (_keyExtraRepeat + _keyExtraDelay)) {
- _keyExtraRepeat = getMillis();
-
- 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_LBUTTONUP;
- event.mouse.x = _mouseCurState.x;
- event.mouse.y = _mouseCurState.y;
- return true;
- }
- }
-
- if (_keyExtraPressed & _keyExtra.bitActionB) {
- if (!(keyCurrentState & _keyExtra.bitActionB)) {
- _keyExtraPressed &= ~_keyExtra.bitActionB;
-
- event.type = Common::EVENT_RBUTTONUP;
- event.mouse.x = _mouseCurState.x;
- event.mouse.y = _mouseCurState.y;
- return true;
- }
- }
+ if (_keyExtraPressed) {
+ if (gVars->arrowKeys) {
+ if (_keyExtraPressed & _keyExtra.bitLeft) {
+ if (!(keyCurrentState & _keyExtra.bitLeft)) {
+ _keyExtraPressed &= ~_keyExtra.bitLeft;
+
+ event.type = Common::EVENT_KEYUP;
+ event.kbd.keycode = Common::KEYCODE_LEFT;
+ event.kbd.ascii = event.kbd.keycode;
+ event.kbd.flags = 0;
+ return true;
+ }
+ }
+ if (_keyExtraPressed & _keyExtra.bitRight) {
+ if (!(keyCurrentState & _keyExtra.bitRight)) {
+ _keyExtraPressed &= ~_keyExtra.bitRight;
+
+ event.type = Common::EVENT_KEYUP;
+ event.kbd.keycode = Common::KEYCODE_RIGHT;
+ event.kbd.ascii = event.kbd.keycode;
+ event.kbd.flags = 0;
+ return true;
+ }
+ }
+ if (_keyExtraPressed & _keyExtra.bitUp) {
+ if (!(keyCurrentState & _keyExtra.bitUp)) {
+ _keyExtraPressed &= ~_keyExtra.bitUp;
+
+ event.type = Common::EVENT_KEYUP;
+ event.kbd.keycode = Common::KEYCODE_UP;
+ 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_KEYUP;
+ event.kbd.keycode = Common::KEYCODE_DOWN;
+ event.kbd.ascii = event.kbd.keycode;
+ event.kbd.flags = 0;
+ return true;
}
+ }
+ }
- 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);
+ if (_keyExtraPressed & _keyExtra.bitActionA) {
+ if (!(keyCurrentState & _keyExtra.bitActionA)) {
+ _keyExtraPressed &= ~_keyExtra.bitActionA;
- return true;
- }
+ event.type = Common::EVENT_LBUTTONUP;
+ event.mouse.x = _mouseCurState.x;
+ event.mouse.y = _mouseCurState.y;
+ return true;
+ }
+ }
+
+ if (_keyExtraPressed & _keyExtra.bitActionB) {
+ if (!(keyCurrentState & _keyExtra.bitActionB)) {
+ _keyExtraPressed &= ~_keyExtra.bitActionB;
+
+ event.type = Common::EVENT_RBUTTONUP;
+ event.mouse.x = _mouseCurState.x;
+ event.mouse.y = _mouseCurState.y;
+ return true;
}
}
+
+ // no more event till up is raised
+ return false;
+ }
+
+ 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 = Common::KEYCODE_LEFT;
+
+ } else if (keyCurrentState & _keyExtra.bitRight) {
+ _keyExtraPressed |= _keyExtra.bitRight;
+ event.kbd.keycode = Common::KEYCODE_RIGHT;
+
+ } else if (keyCurrentState & _keyExtra.bitUp) {
+ _keyExtraPressed |= _keyExtra.bitUp;
+ event.kbd.keycode = Common::EVENT_KEYUP;
+
+ } else if (keyCurrentState & _keyExtra.bitDown) {
+ _keyExtraPressed |= _keyExtra.bitDown;
+ event.kbd.keycode = Common::KEYCODE_DOWN;
+ }
+
+ 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;
+ }
+ }
}
#if defined(COMPILE_OS5) && defined(PALMOS_ARM)
@@ -174,13 +238,13 @@ bool OSystem_PalmBase::pollEvent(Common::Event &event) {
// arrow keys
case chrUpArrow:
- k = 273; break;
+ k = Common::KEYCODE_UP; break;
case chrDownArrow:
- k = 274; break;
- case chrLeftArrow:
- k = 275; break;
+ k = Common::KEYCODE_DOWN; break;
case chrRightArrow:
- k = 276; break;
+ k = Common::KEYCODE_RIGHT; break;
+ case chrLeftArrow:
+ k = Common::KEYCODE_LEFT; break;
}
if (k) {
@@ -197,16 +261,16 @@ bool OSystem_PalmBase::pollEvent(Common::Event &event) {
// ESC key
case vchrLaunch:
event.type = Common::EVENT_KEYDOWN;
- event.kbd.keycode = 27;
- event.kbd.ascii = 27;
+ event.kbd.keycode = Common::KEYCODE_ESCAPE;
+ event.kbd.ascii = Common::ASCII_ESCAPE;
event.kbd.flags = 0;
return true;
// F5 = menu
case vchrMenu:
event.type = Common::EVENT_KEYDOWN;
- event.kbd.keycode = 319;
- event.kbd.ascii = 319;
+ event.kbd.keycode = Common::KEYCODE_F5;
+ event.kbd.ascii = Common::ASCII_F5;
event.kbd.flags = 0;
return true;
@@ -222,13 +286,13 @@ bool OSystem_PalmBase::pollEvent(Common::Event &event) {
// arrow keys
case chrUpArrow:
- k = 273; break;
+ k = Common::KEYCODE_UP; break;
case chrDownArrow:
- k = 274; break;
- case chrLeftArrow:
- k = 275; break;
+ k = Common::KEYCODE_DOWN; break;
case chrRightArrow:
- k = 276; break;
+ k = Common::KEYCODE_RIGHT; break;
+ case chrLeftArrow:
+ k = Common::KEYCODE_LEFT; break;
}
if (k) {
@@ -249,13 +313,11 @@ bool OSystem_PalmBase::pollEvent(Common::Event &event) {
((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);
@@ -349,8 +411,13 @@ bool OSystem_PalmBase::pollEvent(Common::Event &event) {
// F1 -> F10 key
if (key >= '0' && key <= '9' && mask == (Common::KBD_CTRL|Common::KBD_ALT)) {
- key = (key == '0') ? 324 : (315 + key - '1');
- mask = 0;
+ key = (key - '0' + 10 - 1) % 10; // '0' -> 9, '1' -> 0, '2' -> 1, ...
+ _wasKey = true;
+ event.type = Common::EVENT_KEYDOWN;
+ event.kbd.keycode = Common::KEYCODE_F1 + key;
+ event.kbd.ascii = Common::ASCII_F1 + key;
+ event.kbd.flags = 0;
+ return true;
#ifdef STDLIB_TRACE_MEMORY
// print memory