Cleanup event code
Added key up for mouse buttons so that we can control Gobliiins and Touche properly svn-id: r25147
This commit is contained in:
parent
0147a83180
commit
dd03b8f84b
7 changed files with 79 additions and 107 deletions
|
@ -106,7 +106,9 @@ bool OSystem_PalmBase::pollEvent(Event &event) {
|
|||
if (getMillis() >= (_keyMouseRepeat + _keyMouseDelay)) {
|
||||
_keyMouseRepeat = getMillis();
|
||||
|
||||
if (gVars->arrowKeys) {
|
||||
if (gVars->arrowKeys) {
|
||||
event.kbd.keycode = 0;
|
||||
|
||||
if (keyCurrentState & _keyMouse.bitUp)
|
||||
event.kbd.keycode = 273;
|
||||
else if (keyCurrentState & _keyMouse.bitDown)
|
||||
|
@ -115,12 +117,13 @@ bool OSystem_PalmBase::pollEvent(Event &event) {
|
|||
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;
|
||||
if (event.kbd.keycode) {
|
||||
event.type = EVENT_KEYDOWN;
|
||||
event.kbd.ascii = event.kbd.keycode;
|
||||
event.kbd.flags = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
} else {
|
||||
Int8 sx = 0;
|
||||
|
@ -139,28 +142,13 @@ bool OSystem_PalmBase::pollEvent(Event &event) {
|
|||
if (sx || sy) {
|
||||
simulate_mouse(event, sx, sy, &x, &y);
|
||||
event.type = EVENT_MOUSEMOVE;
|
||||
_lastKey = kKeyMouseMove;
|
||||
event.mouse.x = x;
|
||||
event.mouse.y = y;
|
||||
warpMouse(x, y);
|
||||
|
||||
} 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;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
event.mouse.x = x;
|
||||
event.mouse.y = y;
|
||||
warpMouse(x, y);
|
||||
// updateCD();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -168,7 +156,6 @@ bool OSystem_PalmBase::pollEvent(Event &event) {
|
|||
switch (ev.data.keyDown.chr) {
|
||||
// ESC key
|
||||
case vchrLaunch:
|
||||
_lastKey = kKeyNone;
|
||||
event.type = EVENT_KEYDOWN;
|
||||
event.kbd.keycode = 27;
|
||||
event.kbd.ascii = 27;
|
||||
|
@ -177,7 +164,6 @@ bool OSystem_PalmBase::pollEvent(Event &event) {
|
|||
|
||||
// F5 = menu
|
||||
case vchrMenu:
|
||||
_lastKey = kKeyNone;
|
||||
event.type = EVENT_KEYDOWN;
|
||||
event.kbd.keycode = 319;
|
||||
event.kbd.ascii = 319;
|
||||
|
@ -192,14 +178,12 @@ bool OSystem_PalmBase::pollEvent(Event &event) {
|
|||
// case vchrBrightness: // volume control on Zodiac, let other backends disable it
|
||||
case vchrContrast:
|
||||
// do nothing
|
||||
_lastKey = kKeyNone;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (check_event(event, &ev))
|
||||
return true;
|
||||
_lastKey = kKeyNone;
|
||||
|
||||
// prevent crash when alarm is raised
|
||||
handled = ((ev.eType == keyDownEvent) &&
|
||||
|
@ -219,10 +203,9 @@ bool OSystem_PalmBase::pollEvent(Event &event) {
|
|||
if (y > _screenHeight || y < 0 || x > _screenWidth || x < 0)
|
||||
return false;
|
||||
|
||||
if (_lastEvent != penMoveEvent && (abs(y - event.mouse.y) <= 2 || abs(x - event.mouse.x) <= 2)) // move only if
|
||||
if (abs(y - event.mouse.y) <= 2 || abs(x - event.mouse.x) <= 2)
|
||||
return false;
|
||||
|
||||
_lastEvent = penMoveEvent;
|
||||
event.type = EVENT_MOUSEMOVE;
|
||||
event.mouse.x = x;
|
||||
event.mouse.y = y;
|
||||
|
@ -244,11 +227,10 @@ bool OSystem_PalmBase::pollEvent(Event &event) {
|
|||
event.kbd.ascii = num;
|
||||
event.kbd.flags = 0;
|
||||
|
||||
_lastEvent = keyDownEvent;
|
||||
_wasKey = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
_lastEvent = penDownEvent;
|
||||
if (y > _screenHeight || y < 0 || x > _screenWidth || x < 0)
|
||||
return false;
|
||||
|
||||
|
@ -329,7 +311,7 @@ bool OSystem_PalmBase::pollEvent(Event &event) {
|
|||
}
|
||||
|
||||
// other keys
|
||||
_lastEvent = keyDownEvent;
|
||||
_wasKey = true;
|
||||
event.type = EVENT_KEYDOWN;
|
||||
event.kbd.keycode = key;
|
||||
event.kbd.ascii = key;
|
||||
|
@ -337,9 +319,9 @@ bool OSystem_PalmBase::pollEvent(Event &event) {
|
|||
return true;
|
||||
|
||||
default:
|
||||
if (_lastEvent == keyDownEvent) {
|
||||
if (_wasKey) {
|
||||
event.type = EVENT_KEYUP;
|
||||
_lastEvent = nilEvent;
|
||||
_wasKey = false;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
|
@ -51,8 +51,7 @@ OSystem_PalmBase::OSystem_PalmBase() {
|
|||
_screenP = NULL;
|
||||
_screenPitch = gVars->screenPitch;
|
||||
|
||||
_lastEvent = nilEvent;
|
||||
_lastKey = kKeyNone;
|
||||
_wasKey = false;
|
||||
_lastKeyModifier = kModifierNone;
|
||||
_lastKeyRepeat = 100;
|
||||
_useNumPad = false;
|
||||
|
@ -89,13 +88,11 @@ void OSystem_PalmBase::initBackend() {
|
|||
|
||||
_keyMouse.bitUp = keyBitPageUp;
|
||||
_keyMouse.bitDown = keyBitPageDown;
|
||||
_keyMouse.bitLeft = keyBitHard1;
|
||||
_keyMouse.bitRight = keyBitHard2;
|
||||
_keyMouse.bitButLeft= keyBitHard3;
|
||||
_keyMouse.hasMore = false;
|
||||
_keyMouse.bitLeft = keyBitHard2;
|
||||
_keyMouse.bitRight = keyBitHard3;
|
||||
|
||||
int_initBackend();
|
||||
_keyMouseMask = (_keyMouse.bitUp | _keyMouse.bitDown | _keyMouse.bitLeft | _keyMouse.bitRight | _keyMouse.bitButLeft);
|
||||
_keyMouseMask = (_keyMouse.bitUp | _keyMouse.bitDown | _keyMouse.bitLeft | _keyMouse.bitRight);
|
||||
|
||||
// Create the savefile manager, if none exists yet (we check for this to
|
||||
// allow subclasses to provide their own).
|
||||
|
|
|
@ -109,14 +109,6 @@ private:
|
|||
protected:
|
||||
virtual void draw_osd(UInt16 id, Int32 x, Int32 y, Boolean show, UInt8 color = 0);
|
||||
|
||||
enum {
|
||||
kKeyNone = 0,
|
||||
kKeyMouseMove = 1 << 0,
|
||||
kKeyMouseLButton = 1 << 1,
|
||||
|
||||
kKeyCalc = 1 << 30,
|
||||
kKeyAny = 1 << 31
|
||||
};
|
||||
enum {
|
||||
MAX_MOUSE_W = 80,
|
||||
MAX_MOUSE_H = 80
|
||||
|
@ -159,8 +151,6 @@ protected:
|
|||
UInt32 bitDown;
|
||||
UInt32 bitLeft;
|
||||
UInt32 bitRight;
|
||||
UInt32 bitButLeft;
|
||||
Boolean hasMore;
|
||||
} _keyMouse;
|
||||
|
||||
bool _mouseVisible;
|
||||
|
@ -173,8 +163,7 @@ protected:
|
|||
byte *_mouseDataP, *_mouseBackupP;
|
||||
|
||||
|
||||
eventsEnum _lastEvent;
|
||||
WChar _lastKey;
|
||||
eventsEnum _wasKey;
|
||||
UInt8 _lastKeyModifier;
|
||||
UInt32 _lastKeyRepeat;
|
||||
Boolean _useNumPad, _showBatLow;
|
||||
|
|
|
@ -83,16 +83,12 @@ void OSystem_PalmOS5::int_initBackend() {
|
|||
_keyMouse.bitDown = keyBitPageDown;
|
||||
_keyMouse.bitLeft = keyBitNavLeft;
|
||||
_keyMouse.bitRight = keyBitNavRight;
|
||||
_keyMouse.bitButLeft= keyBitNavSelect;
|
||||
_keyMouse.hasMore = true;
|
||||
|
||||
} else if (OPTIONS_TST(kOpt5WayNavigatorV2)) {
|
||||
_keyMouse.bitUp = keyBitRockerUp|keyBitPageUp;
|
||||
_keyMouse.bitDown = keyBitRockerDown|keyBitPageDown;
|
||||
_keyMouse.bitLeft = keyBitRockerLeft;
|
||||
_keyMouse.bitRight = keyBitRockerRight;
|
||||
_keyMouse.bitButLeft= keyBitRockerCenter;
|
||||
_keyMouse.hasMore = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -33,12 +33,10 @@ OSystem_PalmZodiac::OSystem_PalmZodiac() : OSystem_PalmOS5Ex() {
|
|||
}
|
||||
|
||||
void OSystem_PalmZodiac::int_initBackend() {
|
||||
_keyMouse.bitUp = keyBitRockerUp;
|
||||
_keyMouse.bitDown = keyBitRockerDown;
|
||||
_keyMouse.bitLeft = keyBitRockerLeft;
|
||||
_keyMouse.bitRight = keyBitRockerRight;
|
||||
_keyMouse.bitButLeft= keyBitRockerCenter;
|
||||
_keyMouse.hasMore = true;
|
||||
_keyMouse.bitUp = keyBitRockerUp;
|
||||
_keyMouse.bitDown = keyBitRockerDown;
|
||||
_keyMouse.bitLeft = keyBitRockerLeft;
|
||||
_keyMouse.bitRight = keyBitRockerRight;
|
||||
}
|
||||
|
||||
void OSystem_PalmZodiac::calc_rect(Boolean fullscreen) {
|
||||
|
|
|
@ -38,41 +38,49 @@ void OSystem_PalmOS5::get_coordinates(EventPtr ev, Coord &x, Coord &y) {
|
|||
}
|
||||
|
||||
bool OSystem_PalmOS5::check_event(Event &event, EventPtr ev) {
|
||||
if (ev->eType == keyDownEvent) {
|
||||
if (ev->eType == keyUpEvent) {
|
||||
switch (ev->data.keyDown.chr) {
|
||||
case vchrHard3:
|
||||
event.type = EVENT_LBUTTONUP;
|
||||
event.mouse.x = _mouseCurState.x;
|
||||
event.mouse.y = _mouseCurState.y;
|
||||
return true;
|
||||
|
||||
case vchrHard4:
|
||||
event.type = EVENT_RBUTTONUP;
|
||||
event.mouse.x = _mouseCurState.x;
|
||||
event.mouse.y = _mouseCurState.y;
|
||||
return true;
|
||||
}
|
||||
|
||||
} else if (ev->eType == keyDownEvent) {
|
||||
switch (ev->data.keyDown.chr) {
|
||||
|
||||
// hot swap gfx
|
||||
// case 0x1B04:
|
||||
case vchrHard1:
|
||||
printf("swap\n");
|
||||
if (OPTIONS_TST(kOptCollapsible))
|
||||
hotswap_gfx_mode(_mode == GFX_WIDE ? GFX_NORMAL: GFX_WIDE);
|
||||
return false; // not a key
|
||||
|
||||
// case 0x1B05:
|
||||
case vchrHard2:
|
||||
setFeatureState(kFeatureAspectRatioCorrection, 0);
|
||||
return false; // not a key
|
||||
|
||||
case vchrHard3:
|
||||
event.type = EVENT_RBUTTONDOWN;
|
||||
event.mouse.x = _mouseCurState.x;
|
||||
event.mouse.y = _mouseCurState.y;
|
||||
return true;
|
||||
|
||||
case vchrHard4:
|
||||
_lastKey = kKeyNone;
|
||||
event.type = EVENT_RBUTTONDOWN;
|
||||
event.mouse.x = _mouseCurState.x;
|
||||
event.mouse.y = _mouseCurState.y;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (_keyMouse.hasMore) {
|
||||
switch (ev->data.keyDown.chr) {
|
||||
// hot swap gfx
|
||||
// case 0x1B04:
|
||||
case vchrHard1:
|
||||
printf("swap\n");
|
||||
if (OPTIONS_TST(kOptCollapsible))
|
||||
hotswap_gfx_mode(_mode == GFX_WIDE ? GFX_NORMAL: GFX_WIDE);
|
||||
return false; // not a key
|
||||
|
||||
// case 0x1B05:
|
||||
case vchrHard2:
|
||||
setFeatureState(kFeatureAspectRatioCorrection, 0);
|
||||
return false; // not a key
|
||||
|
||||
// F5 = menu
|
||||
case vchrHard3:
|
||||
_lastKey = kKeyNone;
|
||||
event.type = EVENT_KEYDOWN;
|
||||
event.kbd.keycode = 319;
|
||||
event.kbd.ascii = 319;
|
||||
event.kbd.flags = 0;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
|
|
|
@ -25,11 +25,25 @@
|
|||
#include "be_zodiac.h"
|
||||
|
||||
bool OSystem_PalmZodiac::check_event(Event &event, EventPtr ev) {
|
||||
if (ev->eType == keyDownEvent) {
|
||||
if (ev->eType == keyUpEvent) {
|
||||
switch (ev->data.keyDown.chr) {
|
||||
case vchrActionLeft:
|
||||
event.type = EVENT_LBUTTONUP;
|
||||
event.mouse.x = _mouseCurState.x;
|
||||
event.mouse.y = _mouseCurState.y;
|
||||
return true;
|
||||
|
||||
case vchrActionRight:
|
||||
event.type = EVENT_RBUTTONUP;
|
||||
event.mouse.x = _mouseCurState.x;
|
||||
event.mouse.y = _mouseCurState.y;
|
||||
return true;
|
||||
}
|
||||
|
||||
} else if (ev->eType == keyDownEvent) {
|
||||
switch (ev->data.keyDown.chr) {
|
||||
// F5 = menu
|
||||
case vchrThumbWheelBack:
|
||||
_lastKey = kKeyNone;
|
||||
event.type = EVENT_KEYDOWN;
|
||||
event.kbd.keycode = 319;
|
||||
event.kbd.ascii = 319;
|
||||
|
@ -45,14 +59,12 @@ bool OSystem_PalmZodiac::check_event(Event &event, EventPtr ev) {
|
|||
return false; // not a key
|
||||
|
||||
case vchrActionLeft:
|
||||
_lastKey = kKeyMouseLButton;
|
||||
event.type = EVENT_LBUTTONDOWN;
|
||||
event.mouse.x = _mouseCurState.x;
|
||||
event.mouse.y = _mouseCurState.y;
|
||||
return true;
|
||||
|
||||
case vchrActionRight:
|
||||
_lastKey = kKeyNone;
|
||||
event.type = EVENT_RBUTTONDOWN;
|
||||
event.mouse.x = _mouseCurState.x;
|
||||
event.mouse.y = _mouseCurState.y;
|
||||
|
@ -81,16 +93,6 @@ bool OSystem_PalmZodiac::check_event(Event &event, EventPtr ev) {
|
|||
break;
|
||||
}
|
||||
|
||||
} else if (_overlayVisible) {
|
||||
switch (_lastKey) {
|
||||
case kKeyMouseLButton:
|
||||
_lastKey = kKeyNone;
|
||||
event.type = EVENT_LBUTTONUP;
|
||||
event.mouse.x = _mouseCurState.x;
|
||||
event.mouse.y = _mouseCurState.y;
|
||||
return true;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue