diff options
author | Koen Kooi <koen@openembedded.org> | 2007-02-18 11:46:19 +0000 |
---|---|---|
committer | Koen Kooi <koen@openembedded.org> | 2007-02-18 11:46:19 +0000 |
commit | ebdcad30d1ca7dedf4f9643ff233480ec82d437e (patch) | |
tree | 7e92e211e6cc3593b95380dc51c2623c20220282 /packages/tslib/tslib-1.0 | |
parent | 8c7cf3fc473b8c65bc972028ae4ce581b7b4bce8 (diff) |
tslib: merge patch from openmoko:
This patch adds support for "EVIOCGRAB" on the input device, which
tells the kernel _not_ to deliver events of the touchscreen to
/dev/input/mice.
This is probably what most people want, since unprocessed raw touchscreen
events should not be converted to emulated PS/2 mouse movements.
Signed-off-by: Harald Welte <laforge@openmoko.org>
Diffstat (limited to 'packages/tslib/tslib-1.0')
-rw-r--r-- | packages/tslib/tslib-1.0/.mtn2git_empty | 0 | ||||
-rw-r--r-- | packages/tslib/tslib-1.0/ts.conf | 25 | ||||
-rw-r--r-- | packages/tslib/tslib-1.0/tslib-input_raw-grab_events.patch | 120 |
3 files changed, 145 insertions, 0 deletions
diff --git a/packages/tslib/tslib-1.0/.mtn2git_empty b/packages/tslib/tslib-1.0/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/tslib/tslib-1.0/.mtn2git_empty diff --git a/packages/tslib/tslib-1.0/ts.conf b/packages/tslib/tslib-1.0/ts.conf new file mode 100644 index 0000000000..82f712ef41 --- /dev/null +++ b/packages/tslib/tslib-1.0/ts.conf @@ -0,0 +1,25 @@ +# Uncomment if you wish to use the linux input layer event interface +module_raw input grab_events=1 + +# Uncomment if you're using a Sharp Zaurus SL-5500/SL-5000d +# module_raw collie + +# Uncomment if you're using a Sharp Zaurus SL-C700/C750/C760/C860 +# module_raw corgi + +# Uncomment if you're using a device with a UCB1200/1300/1400 TS interface +# module_raw ucb1x00 + +# Uncomment if you're using an HP iPaq h3600 or similar +# module_raw h3600 + +# Uncomment if you're using a Hitachi Webpad +# module_raw mk712 + +# Uncomment if you're using an IBM Arctic II +# module_raw arctic2 + +module pthres pmin=1 +module variance delta=30 +module dejitter delta=100 +module linear diff --git a/packages/tslib/tslib-1.0/tslib-input_raw-grab_events.patch b/packages/tslib/tslib-1.0/tslib-input_raw-grab_events.patch new file mode 100644 index 0000000000..4bd0a05531 --- /dev/null +++ b/packages/tslib/tslib-1.0/tslib-input_raw-grab_events.patch @@ -0,0 +1,120 @@ +This patch adds support for "EVIOCGRAB" on the input device, which +tells the kernel _not_ to deliver events of the touchscreen to +/dev/input/mice. + +This is probably what most people want, since unprocessed raw touchscreen +events should not be converted to emulated PS/2 mouse movements. + +Signed-off-by: Harald Welte <laforge@openmoko.org> + +Index: a/plugins/input-raw.c +=================================================================== +--- a/plugins/input-raw.c (revision 49) ++++ b/plugins/input-raw.c (working copy) +@@ -18,6 +18,7 @@ + + #include <errno.h> + #include <stdio.h> ++#include <limits.h> + + #include <stdlib.h> + #ifdef HAVE_UNISTD_H +@@ -33,6 +34,9 @@ + + #include "tslib-private.h" + ++#define GRAB_EVENTS_WANTED 1 ++#define GRAB_EVENTS_ACTIVE 2 ++ + struct tslib_input { + struct tslib_module_info module; + +@@ -42,6 +46,7 @@ + + int sane_fd; + int using_syn; ++ int grab_events; + }; + + static int check_fd(struct tslib_input *i) +@@ -64,6 +69,14 @@ + + if (bit & (1 << EV_SYN)) + i->using_syn = 1; ++ ++ if (i->grab_events == GRAB_EVENTS_WANTED) { ++ if (ioctl(ts->fd, EVIOCGRAB, (void *)1)) { ++ fprintf(stderr, "Unable to grab selected input device\n"); ++ return -1; ++ } ++ i->grab_events = GRAB_EVENTS_ACTIVE; ++ } + + return 0; + } +@@ -222,6 +235,15 @@ + + static int ts_input_fini(struct tslib_module_info *inf) + { ++ struct tslib_input *i = (struct tslib_input *)inf; ++ struct tsdev *ts = inf->dev; ++ ++ if (i->grab_events == GRAB_EVENTS_ACTIVE) { ++ if (ioctl(ts->fd, EVIOCGRAB, (void *)0)) { ++ fprintf(stderr, "Unable to un-grab selected input device\n"); ++ } ++ } ++ + free(inf); + return 0; + } +@@ -231,6 +253,36 @@ + .fini = ts_input_fini, + }; + ++static int parse_raw_grab(struct tslib_module_info *inf, char *str, void *data) ++{ ++ struct tslib_input *i = (struct tslib_input *)inf; ++ unsigned long v; ++ int err = errno; ++ ++ v = strtoul(str, NULL, 0); ++ ++ if (v == ULONG_MAX && errno == ERANGE) ++ return -1; ++ ++ errno = err; ++ switch ((int)data) { ++ case 1: ++ if (v) ++ i->grab_events = GRAB_EVENTS_WANTED; ++ break; ++ default: ++ return -1; ++ } ++ return 0; ++} ++ ++static const struct tslib_vars raw_vars[] = ++{ ++ { "grab_events", (void *)1, parse_raw_grab }, ++}; ++ ++#define NR_VARS (sizeof(raw_vars) / sizeof(raw_vars[0])) ++ + TSAPI struct tslib_module_info *mod_init(struct tsdev *dev, const char *params) + { + struct tslib_input *i; +@@ -245,5 +297,12 @@ + i->current_p = 0; + i->sane_fd = 0; + i->using_syn = 0; ++ i->grab_events = 0; ++ ++ if (tslib_parse_vars(&i->module, raw_vars, NR_VARS, params)) { ++ free(i); ++ return NULL; ++ } ++ + return &(i->module); + } |