lkml.org 
[lkml]   [2003]   [Sep]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Subject[PATCH 8/8] Add BTN_TOUCH to Synaptics driver. Update mousedev.
Date
From
You can pull this changeset from:
bk://kernel.bkbits.net/vojtech/input

===================================================================
ChangeSet@1.1348, 2003-09-25 18:32:35+02:00, vojtech@mail.parknet.co.jp
input: Add BTN_TOUCH to Synaptics pad driver. This fixes the joydev
grabbing of the pads, as well as simplifies the mousedev driver.


mouse/synaptics.c | 4 ++
mousedev.c | 77 ++++++++++++++++++++++--------------------------------
2 files changed, 36 insertions(+), 45 deletions(-)
===================================================================
diff -Nru a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
--- a/drivers/input/mouse/synaptics.c Thu Sep 25 18:36:58 2003
+++ b/drivers/input/mouse/synaptics.c Thu Sep 25 18:36:58 2003
@@ -333,6 +333,7 @@
set_bit(ABS_TOOL_WIDTH, dev->absbit);

set_bit(EV_KEY, dev->evbit);
+ set_bit(BTN_TOUCH, dev->keybit);
set_bit(BTN_TOOL_FINGER, dev->keybit);
set_bit(BTN_TOOL_DOUBLETAP, dev->keybit);
set_bit(BTN_TOOL_TRIPLETAP, dev->keybit);
@@ -531,6 +532,9 @@
input_report_abs(dev, ABS_Y, YMAX_NOMINAL + YMIN_NOMINAL - hw.y);
}
input_report_abs(dev, ABS_PRESSURE, hw.z);
+
+ if (hw.z > 30) input_report_key(dev, BTN_TOUCH, 1);
+ if (hw.z < 25) input_report_key(dev, BTN_TOUCH, 0);

input_report_abs(dev, ABS_TOOL_WIDTH, finger_width);
input_report_key(dev, BTN_TOOL_FINGER, num_fingers == 1);
diff -Nru a/drivers/input/mousedev.c b/drivers/input/mousedev.c
--- a/drivers/input/mousedev.c Thu Sep 25 18:36:58 2003
+++ b/drivers/input/mousedev.c Thu Sep 25 18:36:58 2003
@@ -83,59 +83,40 @@
return;

/* Handle touchpad data */
- if (test_bit(BTN_TOOL_FINGER, handle->dev->keybit) &&
- test_bit(ABS_PRESSURE, handle->dev->absbit) &&
- test_bit(ABS_TOOL_WIDTH, handle->dev->absbit)) {
+ if (test_bit(BTN_TOOL_FINGER, handle->dev->keybit)) {
+
+ if (list->finger && list->finger < 3)
+ list->finger++;
+
switch (code) {
- case ABS_PRESSURE:
- if (!list->finger) {
- if (value > 30)
- list->finger = 1;
- } else {
- if (value < 25)
- list->finger = 0;
- else if (list->finger < 3)
- list->finger++;
- }
- break;
- case ABS_X:
- if (list->finger >= 3) {
- list->dx += (value - list->oldx) / 8;
- }
- list->oldx = value;
- break;
- case ABS_Y:
- if (list->finger >= 3) {
- list->dy -= (value - list->oldy) / 8;
- }
- list->oldy = value;
- break;
+ case ABS_X:
+ if (list->finger == 3)
+ list->dx += (value - list->oldx) / 8;
+ list->oldx = value;
+ return;
+ case ABS_Y:
+ if (list->finger == 3)
+ list->dy -= (value - list->oldy) / 8;
+ list->oldy = value;
+ return;
}
return;
}

- /* Handle tablet like devices */
+ /* Handle tablet data */
switch (code) {
- case ABS_X:
- size = handle->dev->absmax[ABS_X] - handle->dev->absmin[ABS_X];
- if (size != 0) {
+ case ABS_X:
+ size = handle->dev->absmax[ABS_X] - handle->dev->absmin[ABS_X];
+ if (size == 0) size = xres;
list->dx += (value * xres - list->oldx) / size;
list->oldx += list->dx * size;
- } else {
- list->dx += value - list->oldx;
- list->oldx += list->dx;
- }
- break;
- case ABS_Y:
- size = handle->dev->absmax[ABS_Y] - handle->dev->absmin[ABS_Y];
- if (size != 0) {
+ return;
+ case ABS_Y:
+ size = handle->dev->absmax[ABS_Y] - handle->dev->absmin[ABS_Y];
+ if (size == 0) size = yres;
list->dy -= (value * yres - list->oldy) / size;
list->oldy -= list->dy * size;
- } else {
- list->dy -= value - list->oldy;
- list->oldy -= list->dy;
- }
- break;
+ return;
}
}

@@ -166,8 +147,13 @@

case EV_KEY:
switch (code) {
+ case BTN_TOUCH: /* Handle touchpad data */
+ if (test_bit(BTN_TOOL_FINGER, handle->dev->keybit)) {
+ list->finger = value;
+ return;
+ }
case BTN_0:
- case BTN_TOUCH:
+ case BTN_FORWARD:
case BTN_LEFT: index = 0; break;
case BTN_4:
case BTN_EXTRA: if (list->mode == 2) { index = 4; break; }
@@ -175,6 +161,7 @@
case BTN_1:
case BTN_RIGHT: index = 1; break;
case BTN_3:
+ case BTN_BACK:
case BTN_SIDE: if (list->mode == 2) { index = 3; break; }
case BTN_2:
case BTN_STYLUS2:
@@ -333,7 +320,7 @@
{
struct mousedev_list *list = file->private_data;
unsigned char c;
- int i;
+ unsigned int i;

for (i = 0; i < count; i++) {

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:48    [from the cache]
©2003-2011 Jasper Spaans. Advertise on this site