* Invert X or Y axis options for usbtouchscreen
@ 2007-03-24 14:27 Ondrej Zary
0 siblings, 0 replies; only message in thread
From: Ondrej Zary @ 2007-03-24 14:27 UTC (permalink / raw)
To: daniel.ritz; +Cc: linux-kernel
[-- Attachment #1: Type: text/plain, Size: 270 bytes --]
Hello,
this patch adds support for inverting X or Y axis (or both) to the
usbtouchscreen driver. Invert Y is needed (together with swap XY) for
LeadingTouch screens (at least for some of them).
Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
--
Ondrej Zary
[-- Attachment #2: usbtouchscreen-invert.patch --]
[-- Type: text/x-diff, Size: 1558 bytes --]
--- linux-2.6.20-orig/drivers/usb/input/usbtouchscreen.c 2007-03-23 15:49:35.000000000 +0100
+++ linux/drivers/usb/input/usbtouchscreen.c 2007-03-23 15:52:02.000000000 +0100
@@ -54,6 +54,12 @@
static int swap_xy;
module_param(swap_xy, bool, 0644);
MODULE_PARM_DESC(swap_xy, "If set X and Y axes are swapped.");
+static int invert_x;
+module_param(invert_x, bool, 0644);
+MODULE_PARM_DESC(invert_x, "Invert X axis.");
+static int invert_y;
+module_param(invert_y, bool, 0644);
+MODULE_PARM_DESC(invert_y, "Invert Y axis.");
/* device specifc data/functions */
struct usbtouch_usb;
@@ -514,6 +520,7 @@
unsigned char *pkt, int len)
{
struct usbtouch_device_info *type = usbtouch->type;
+ int x, y;
if (!type->read_data(usbtouch, pkt))
return;
@@ -521,12 +528,20 @@
input_report_key(usbtouch->input, BTN_TOUCH, usbtouch->touch);
if (swap_xy) {
- input_report_abs(usbtouch->input, ABS_X, usbtouch->y);
- input_report_abs(usbtouch->input, ABS_Y, usbtouch->x);
+ x = usbtouch->y;
+ y = usbtouch->x;
} else {
- input_report_abs(usbtouch->input, ABS_X, usbtouch->x);
- input_report_abs(usbtouch->input, ABS_Y, usbtouch->y);
+ x = usbtouch->x;
+ y = usbtouch->y;
}
+ if (invert_x)
+ x = type->max_xc - x + type->min_xc;
+ if (invert_y)
+ y = type->max_yc - y + type->min_yc;
+
+ input_report_abs(usbtouch->input, ABS_X, x);
+ input_report_abs(usbtouch->input, ABS_Y, y);
+
if (type->max_press)
input_report_abs(usbtouch->input, ABS_PRESSURE, usbtouch->press);
input_sync(usbtouch->input);
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2007-03-24 14:27 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-03-24 14:27 Invert X or Y axis options for usbtouchscreen Ondrej Zary
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.