[oe-commits] org.oe.dev tslib: merge patch from openmoko:

koen commit openembedded-commits at lists.openembedded.org
Sun Feb 18 11:46:55 UTC 2007


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 at openmoko.org>

Author: koen at openembedded.org
Branch: org.openembedded.dev
Revision: 04a1a2e0cc7e9b66f26b0c342d210418c07d6127
ViewMTN: http://monotone.openembedded.org/revision.psp?id=04a1a2e0cc7e9b66f26b0c342d210418c07d6127
Files:
1
packages/tslib/tslib-1.0
packages/tslib/tslib-1.0/ts.conf
packages/tslib/tslib-1.0/tslib-input_raw-grab_events.patch
packages/tslib/tslib_1.0.bb
Diffs:

#
# mt diff -re63a2eefb4ae9542b7ac7ee72c2f0aad1d534886 -r04a1a2e0cc7e9b66f26b0c342d210418c07d6127
#
# 
# 
# add_dir "packages/tslib/tslib-1.0"
# 
# add_file "packages/tslib/tslib-1.0/ts.conf"
#  content [7123e2647340fe6a95f41cd9f53f3307c08cd223]
# 
# add_file "packages/tslib/tslib-1.0/tslib-input_raw-grab_events.patch"
#  content [d5ff99352e46c02b008fd1e3b3e204bed5eb62d1]
# 
# patch "packages/tslib/tslib_1.0.bb"
#  from [85038c188dab56a0433f47451af0e48afde5c177]
#    to [3efd2a1616ee585dd50d734632f0b318c98f3165]
# 
============================================================
--- packages/tslib/tslib-1.0/ts.conf	7123e2647340fe6a95f41cd9f53f3307c08cd223
+++ packages/tslib/tslib-1.0/ts.conf	7123e2647340fe6a95f41cd9f53f3307c08cd223
@@ -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
============================================================
--- packages/tslib/tslib-1.0/tslib-input_raw-grab_events.patch	d5ff99352e46c02b008fd1e3b3e204bed5eb62d1
+++ packages/tslib/tslib-1.0/tslib-input_raw-grab_events.patch	d5ff99352e46c02b008fd1e3b3e204bed5eb62d1
@@ -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 at 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);
+ }
============================================================
--- packages/tslib/tslib_1.0.bb	85038c188dab56a0433f47451af0e48afde5c177
+++ packages/tslib/tslib_1.0.bb	3efd2a1616ee585dd50d734632f0b318c98f3165
@@ -1,12 +1,13 @@ LICENSE = "LGPL"
 DESCRIPTION = "tslib is a plugin-based flexible touchscreen access library."
 HOMEPAGE = "http://tslib.berlios.de/"
 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 \






More information about the Openembedded-commits mailing list