lkml.org 
[lkml]   [2007]   [Mar]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
SubjectInvert X or Y axis options for usbtouchscreen
Date
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
--- 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);
\
 
 \ /
  Last update: 2007-03-24 15:31    [from the cache]
©2003-2014 Jasper Spaans. Advertise on this site