tslib: merge patch from openmoko:
authorKoen Kooi <koen@openembedded.org>
Sun, 18 Feb 2007 11:46:19 +0000 (11:46 +0000)
committerKoen Kooi <koen@openembedded.org>
Sun, 18 Feb 2007 11:46:19 +0000 (11:46 +0000)
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>
packages/tslib/tslib-1.0/.mtn2git_empty [new file with mode: 0644]
packages/tslib/tslib-1.0/ts.conf [new file with mode: 0644]
packages/tslib/tslib-1.0/tslib-input_raw-grab_events.patch [new file with mode: 0644]
packages/tslib/tslib_1.0.bb

diff --git a/packages/tslib/tslib-1.0/.mtn2git_empty b/packages/tslib/tslib-1.0/.mtn2git_empty
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/packages/tslib/tslib-1.0/ts.conf b/packages/tslib/tslib-1.0/ts.conf
new file mode 100644 (file)
index 0000000..82f712e
--- /dev/null
@@ -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 (file)
index 0000000..4bd0a05
--- /dev/null
@@ -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);
+ }
index 0ece5b0..4ba53f0 100644 (file)
@@ -4,9 +4,10 @@ AUTHOR = "Russell King w/ plugins by Chris Larson et. al."
 SECTION = "base"
 LICENSE = "LGPL"
 
-PR = "r7"
+PR = "r8"
 
 SRC_URI = "http://download.berlios.de/tslib/tslib-1.0.tar.bz2 \
+           file://tslib-input_raw-grab_events.patch;patch=1 \
            file://ts.conf \
            file://ts.conf-simpad-2.4 \
            file://ts.conf-collie-2.4 \