diff options
Diffstat (limited to 'src/frame-mtdev.c')
| -rw-r--r-- | src/frame-mtdev.c | 29 |
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 | ||
| 28 | static 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 | |||
| 28 | int utouch_frame_is_supported_mtdev(const struct evemu_device *dev) | 38 | int 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); |
