summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenrik Rydberg <rydberg@euromail.se>2011-02-14 10:04:12 +0100
committerHenrik Rydberg <rydberg@euromail.se>2011-02-14 10:04:12 +0100
commit4be293e5efb9bedf841f46cbbfc0f53d3376e18b (patch)
treec78850d55ed8caead6ac222a0c46d5f82e2fcafa
parent49797f6d4bd5c622b0ab3e9c111a8f09ff35f35c (diff)
Use udev heuristic for non-property devices
Setup device properties based on udev heuristic for non-property, devices. This patch only treats the cases POINTER && !DIRECT and !POINTER && DIRECT the digitizer case, POINTER && DIRECT, is assumed to be handled properly by the kernel properties. Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
-rw-r--r--src/frame-mtdev.c29
1 files changed, 25 insertions, 4 deletions
diff --git a/src/frame-mtdev.c b/src/frame-mtdev.c
index ed5dc9e..9192510 100644
--- a/src/frame-mtdev.c
+++ b/src/frame-mtdev.c
@@ -25,6 +25,16 @@
25#include <errno.h> 25#include <errno.h>
26#include <math.h> 26#include <math.h>
27 27
28static int is_pointer(const struct evemu_device *dev)
29{
30 return evemu_has_event(dev, EV_REL, REL_X) ||
31 evemu_has_event(dev, EV_KEY, BTN_TOOL_FINGER) ||
32 evemu_has_event(dev, EV_KEY, BTN_TOOL_PEN) ||
33 evemu_has_event(dev, EV_KEY, BTN_STYLUS) ||
34 evemu_has_event(dev, EV_KEY, BTN_MOUSE) ||
35 evemu_has_event(dev, EV_KEY, BTN_LEFT);
36}
37
28int utouch_frame_is_supported_mtdev(const struct evemu_device *dev) 38int utouch_frame_is_supported_mtdev(const struct evemu_device *dev)
29{ 39{
30 40
@@ -52,11 +62,22 @@ int utouch_frame_init_mtdev(utouch_frame_handle fh,
52 if (!utouch_frame_is_supported_mtdev(dev)) 62 if (!utouch_frame_is_supported_mtdev(dev))
53 return -ENODEV; 63 return -ENODEV;
54 64
65 if (is_pointer(dev)) {
66 s->needs_pointer = 1;
67 s->is_direct = 0;
68 } else {
69 s->needs_pointer = 0;
70 s->is_direct = 1;
71 }
72
73 s->is_buttonpad = 0;
74 s->is_semi_mt = 0;
75
55#ifdef INPUT_PROP_POINTER 76#ifdef INPUT_PROP_POINTER
56 s->needs_pointer = evemu_has_prop(dev, INPUT_PROP_POINTER); 77 s->needs_pointer |= evemu_has_prop(dev, INPUT_PROP_POINTER);
57 s->is_direct = evemu_has_prop(dev, INPUT_PROP_DIRECT); 78 s->is_direct |= evemu_has_prop(dev, INPUT_PROP_DIRECT);
58 s->is_buttonpad = evemu_has_prop(dev, INPUT_PROP_BUTTONPAD); 79 s->is_buttonpad |= evemu_has_prop(dev, INPUT_PROP_BUTTONPAD);
59 s->is_semi_mt = evemu_has_prop(dev, INPUT_PROP_SEMI_MT); 80 s->is_semi_mt |= evemu_has_prop(dev, INPUT_PROP_SEMI_MT);
60#endif 81#endif
61 s->use_touch_major = evemu_has_event(dev, EV_ABS, ABS_MT_TOUCH_MAJOR); 82 s->use_touch_major = evemu_has_event(dev, EV_ABS, ABS_MT_TOUCH_MAJOR);
62 s->use_touch_minor = evemu_has_event(dev, EV_ABS, ABS_MT_TOUCH_MINOR); 83 s->use_touch_minor = evemu_has_event(dev, EV_ABS, ABS_MT_TOUCH_MINOR);