>From 32b686d4cb3b9297e9054d497727a6f7cdbaf9ac Mon Sep 17 00:00:00 2001
From: Rusty Lynch <rusty.ly...@intel.com>
Date: Thu, 25 Jul 2013 11:24:20 -0700
Subject: [PATCH 1/2] Add support for old style non-multitouch touchscreens

---
 src/evdev.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/src/evdev.c b/src/evdev.c
index 08aa727..b3c99b3 100644
--- a/src/evdev.c
+++ b/src/evdev.c
@@ -83,6 +83,11 @@ evdev_process_key(struct evdev_device *device, struct 
input_event *e, int time)
                                         WL_POINTER_BUTTON_STATE_RELEASED);
                break;
 
+       case BTN_TOUCH:
+               if (e->value == 0 && !device->is_mt)
+                       notify_touch(device->seat, time, device->mt.slot, 0, 0,
+                                    WL_TOUCH_UP);
+               break;
        default:
                notify_key(device->seat,
                           time, e->code,
@@ -292,7 +297,14 @@ evdev_flush_motion(struct evdev_device *device, uint32_t 
time)
                weston_output_transform_coordinate(device->output,
                                                   device->abs.x,
                                                   device->abs.y, &x, &y);
-               notify_motion_absolute(master, time, x, y);
+               if (device->caps & EVDEV_TOUCH) {
+                       if (master->num_tp == 0)
+                               notify_touch(master, time, 0, x, y, 
WL_TOUCH_DOWN);
+                       else
+                               notify_touch(master, time, 0, x, y, 
WL_TOUCH_MOTION);
+               } else
+                       notify_motion_absolute(master, time, x, y);
+
                device->pending_events &= ~EVDEV_ABSOLUTE_MOTION;
        }
 }
@@ -479,6 +491,11 @@ evdev_handle_device(struct evdev_device *device)
                                break;
                        }
                }
+               if (TEST_BIT(key_bits, BTN_TOUCH)) {
+                       device->caps |= EVDEV_TOUCH;
+                       device->caps &= ~EVDEV_MOTION_ABS;
+               }
+
        }
        if (TEST_BIT(ev_bits, EV_LED)) {
                device->caps |= EVDEV_KEYBOARD;
-- 
1.8.3.1



_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to