|
@@ -31,6 +31,12 @@
|
|
|
static int SDL_num_touch = 0;
|
|
|
static SDL_Touch **SDL_touchDevices = NULL;
|
|
|
|
|
|
+/* for mapping touch events to mice */
|
|
|
+#define DUPLICATE_TO_MOUSE_EVENT
|
|
|
+#if defined(DUPLICATE_TO_MOUSE_EVENT)
|
|
|
+static SDL_bool finger_touching = SDL_FALSE;
|
|
|
+static SDL_FingerID first_finger;
|
|
|
+#endif
|
|
|
|
|
|
/* Public functions */
|
|
|
int
|
|
@@ -241,6 +247,29 @@ SDL_SendTouch(SDL_TouchID id, SDL_FingerID fingerid,
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
+#if defined(DUPLICATE_TO_MOUSE_EVENT)
|
|
|
+ {
|
|
|
+ SDL_Window *window = SDL_GetMouseFocus();
|
|
|
+ if (window) {
|
|
|
+ if (down) {
|
|
|
+ if (finger_touching == SDL_FALSE) {
|
|
|
+ int pos_x = x * window->w;
|
|
|
+ int pos_y = y * window->y;
|
|
|
+ finger_touching = SDL_TRUE;
|
|
|
+ first_finger = fingerid;
|
|
|
+ SDL_SendMouseMotion(window, SDL_TOUCH_MOUSEID, 0, pos_x, pos_y);
|
|
|
+ SDL_SendMouseButton(window, SDL_TOUCH_MOUSEID, SDL_PRESSED, SDL_BUTTON_LEFT);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (finger_touching == SDL_TRUE && first_finger == fingerid) {
|
|
|
+ SDL_SendMouseButton(window, SDL_TOUCH_MOUSEID, SDL_RELEASED, SDL_BUTTON_LEFT);
|
|
|
+ finger_touching = SDL_FALSE;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+#endif
|
|
|
+
|
|
|
finger = SDL_GetFinger(touch, fingerid);
|
|
|
if (down) {
|
|
|
if (finger) {
|
|
@@ -305,6 +334,19 @@ SDL_SendTouchMotion(SDL_TouchID id, SDL_FingerID fingerid,
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
+#if defined(DUPLICATE_TO_MOUSE_EVENT)
|
|
|
+ {
|
|
|
+ SDL_Window *window = SDL_GetMouseFocus();
|
|
|
+ if (window) {
|
|
|
+ if (finger_touching == SDL_TRUE && first_finger == fingerid) {
|
|
|
+ int pos_x = x * window->w;
|
|
|
+ int pos_y = y * window->y;
|
|
|
+ SDL_SendMouseMotion(window, SDL_TOUCH_MOUSEID, 0, pos_x, pos_y);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+#endif
|
|
|
+
|
|
|
finger = SDL_GetFinger(touch,fingerid);
|
|
|
if (!finger) {
|
|
|
return SDL_SendTouch(id, fingerid, SDL_TRUE, x, y, pressure);
|