diff options
author | Chris Apers | 2006-06-05 19:17:30 +0000 |
---|---|---|
committer | Chris Apers | 2006-06-05 19:17:30 +0000 |
commit | f54bf6759fe437400c6115e9d9571f2aa3c62bc4 (patch) | |
tree | 2f367184b31831a5f831bfba0c3959b310e2b5d6 /backends/PalmOS/Src/base_event.cpp | |
parent | 61737da11580b495e35097f8f39974132349cd2d (diff) | |
download | scummvm-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.cpp | 86 |
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) { |