aboutsummaryrefslogtreecommitdiff
path: root/backends/PalmOS/Src/base_event.cpp
diff options
context:
space:
mode:
authorChris Apers2006-06-05 19:17:30 +0000
committerChris Apers2006-06-05 19:17:30 +0000
commitf54bf6759fe437400c6115e9d9571f2aa3c62bc4 (patch)
tree2f367184b31831a5f831bfba0c3959b310e2b5d6 /backends/PalmOS/Src/base_event.cpp
parent61737da11580b495e35097f8f39974132349cd2d (diff)
downloadscummvm-rg350-f54bf6759fe437400c6115e9d9571f2aa3c62bc4.tar.gz
scummvm-rg350-f54bf6759fe437400c6115e9d9571f2aa3c62bc4.tar.bz2
scummvm-rg350-f54bf6759fe437400c6115e9d9571f2aa3c62bc4.zip
- Added arrow keys emulation
- Ajust mouse simulation so that there is no more hang while moving it svn-id: r22938
Diffstat (limited to 'backends/PalmOS/Src/base_event.cpp')
-rw-r--r--backends/PalmOS/Src/base_event.cpp86
1 files changed, 62 insertions, 24 deletions
diff --git a/backends/PalmOS/Src/base_event.cpp b/backends/PalmOS/Src/base_event.cpp
index 2b52fd4fdb..9a5e972bbd 100644
--- a/backends/PalmOS/Src/base_event.cpp
+++ b/backends/PalmOS/Src/base_event.cpp
@@ -96,30 +96,68 @@ bool OSystem_PalmBase::pollEvent(Event &event) {
keyCurrentState = KeyCurrentState();
// check_hard_keys();
- if ((keyCurrentState & _keyMouseMask)) {
- Int8 sx = 0;
- Int8 sy = 0;
-
- if (keyCurrentState & _keyMouse.bitUp)
- sy = -1;
- else if (keyCurrentState & _keyMouse.bitDown)
- sy = +1;
-
- if (keyCurrentState & _keyMouse.bitLeft)
- sx = -1;
- else if (keyCurrentState & _keyMouse.bitRight)
- sx = +1;
-
- simulate_mouse(event, sx, sy, &x, &y);
- warpMouse(x, y);
- updateScreen();
- // updateCD();
- event.type = EVENT_MOUSEMOVE;
- event.mouse.x = x;
- event.mouse.y = y;
-
- _lastKey = kKeyMouseMove;
- return true;
+ if (!(keyCurrentState & _keyMouseMask)) {
+ _lastKeyRepeat = 0;
+ } else {
+ if (getMillis() >= (_keyMouseRepeat + _keyMouseDelay)) {
+ _keyMouseRepeat = getMillis();
+
+ if (gVars->arrowKeys) {
+ if (keyCurrentState & _keyMouse.bitUp)
+ event.kbd.keycode = 273;
+ else if (keyCurrentState & _keyMouse.bitDown)
+ event.kbd.keycode = 274;
+ else if (keyCurrentState & _keyMouse.bitLeft)
+ event.kbd.keycode = 276;
+ else if (keyCurrentState & _keyMouse.bitRight)
+ event.kbd.keycode = 275;
+ else if (keyCurrentState & _keyMouse.bitButLeft)
+ event.kbd.keycode = chrLineFeed;
+
+ event.type = EVENT_KEYDOWN;
+ event.kbd.ascii = event.kbd.keycode;
+ event.kbd.flags = 0;
+
+ } else {
+ Int8 sx = 0;
+ Int8 sy = 0;
+
+ if (keyCurrentState & _keyMouse.bitUp)
+ sy = -1;
+ else if (keyCurrentState & _keyMouse.bitDown)
+ sy = +1;
+
+ if (keyCurrentState & _keyMouse.bitLeft)
+ sx = -1;
+ else if (keyCurrentState & _keyMouse.bitRight)
+ sx = +1;
+
+ if (sx || sy) {
+ simulate_mouse(event, sx, sy, &x, &y);
+ event.type = EVENT_MOUSEMOVE;
+ _lastKey = kKeyMouseMove;
+
+ } else {
+ x = _mouseCurState.x;
+ y = _mouseCurState.y;
+
+ if (keyCurrentState & _keyMouse.bitButLeft) {
+ event.type = EVENT_LBUTTONDOWN;
+ _lastKey = kKeyMouseLButton;
+
+ } else if (_lastKey == kKeyMouseLButton) {
+ event.type = EVENT_LBUTTONUP;
+ _lastKey = kKeyNone;
+ }
+ }
+
+ event.mouse.x = x;
+ event.mouse.y = y;
+ warpMouse(x, y);
+ // updateCD();
+ }
+ return true;
+ }
}
if (ev.eType == keyDownEvent) {