summaryrefslogtreecommitdiff
path: root/packages/tslib/tslib-1.0
diff options
context:
space:
mode:
authorKoen Kooi <koen@openembedded.org>2007-02-18 11:46:19 +0000
committerKoen Kooi <koen@openembedded.org>2007-02-18 11:46:19 +0000
commitebdcad30d1ca7dedf4f9643ff233480ec82d437e (patch)
tree7e92e211e6cc3593b95380dc51c2623c20220282 /packages/tslib/tslib-1.0
parent8c7cf3fc473b8c65bc972028ae4ce581b7b4bce8 (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_empty0
-rw-r--r--packages/tslib/tslib-1.0/ts.conf25
-rw-r--r--packages/tslib/tslib-1.0/tslib-input_raw-grab_events.patch120
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);
+ }