}
lightpen_enabled = true;
if (flags & HANDLE_IE_FLAG_ABSOLUTE) {
+ if (ie->data & IE_INVERT) {
+ if (extra >= 0) {
+ extra = 65535 - extra;
+ }
+ }
lastmxy_abs[lpnum][unit] = extra;
if (!unit)
return 1;
max -= deadzone;
delta = state * currprefs.input_joymouse_multiplier / (10 * max);
}
- if (ie->data)
+ if (ie->data & IE_INVERT)
+ delta = -delta;
+ if (unit)
lightpen_y[lpnum] += delta;
else
lightpen_x[lpnum] += delta;
} else {
if (state) {
int delta = currprefs.input_joymouse_speed;
+ if (ie->data & IE_INVERT)
+ delta = -delta;
if (ie->data & DIR_LEFT)
lightpen_x[lpnum] -= delta;
if (ie->data & DIR_RIGHT)
DEFEVENT(LIGHTPEN_HORIZ,_T("Lightpen Horizontal"),AM_MOUSE_AXIS|AM_JOY_AXIS,0,5,0)
DEFEVENT(LIGHTPEN_VERT,_T("Lightpen Vertical"),AM_MOUSE_AXIS|AM_JOY_AXIS,0,5,1)
+DEFEVENT(LIGHTPEN_HORIZ_INV,_T("Lightpen Horizontal (inverted)"),AM_MOUSE_AXIS|AM_JOY_AXIS,0,5,0|IE_INVERT)
+DEFEVENT(LIGHTPEN_VERT_INV,_T("Lightpen Vertical (inverted)"),AM_MOUSE_AXIS|AM_JOY_AXIS,0,5,1|IE_INVERT)
DEFEVENT(LIGHTPEN_LEFT,_T("Lightpen Left"),AM_K,1,5,DIR_LEFT)
DEFEVENT(LIGHTPEN_RIGHT,_T("Lightpen Right"),AM_K,1,5,DIR_RIGHT)
DEFEVENT(LIGHTPEN_UP,_T("Lightpen Up"),AM_K,1,5,DIR_UP)
DEFEVENT(LIGHTPEN_DOWN,_T("Lightpen Down"),AM_K,1,5,DIR_DOWN)
DEFEVENT(LIGHTPEN_HORIZ2,_T("Dual Lightpen Horizontal #2"),AM_MOUSE_AXIS|AM_JOY_AXIS,0,6,0)
DEFEVENT(LIGHTPEN_VERT2,_T("Dual Lightpen Vertical #2"),AM_MOUSE_AXIS|AM_JOY_AXIS,0,6,1)
+DEFEVENT(LIGHTPEN_HORIZ2_INV,_T("Dual Lightpen Horizontal #2 (inverted)"),AM_MOUSE_AXIS|AM_JOY_AXIS,0,6,0|IE_INVERT)
+DEFEVENT(LIGHTPEN_VERT2_INV,_T("Dual Lightpen Vertical #2 (inverted)"),AM_MOUSE_AXIS|AM_JOY_AXIS,0,6,1|IE_INVERT)
DEFEVENT(LIGHTPEN_LEFT2,_T("Dual Lightpen Left #2"),AM_K,1,6,DIR_LEFT)
DEFEVENT(LIGHTPEN_RIGHT2,_T("Dual Lightpen Right #2"),AM_K,1,6,DIR_RIGHT)
DEFEVENT(LIGHTPEN_UP2,_T("Dual Lightpen Up #2"),AM_K,1,6,DIR_UP)