This patch adds support for the pad buttons and dial in the bluetooth version
of Intuos4.

Signed-off-by: Aristeu Rozanski <[email protected]>

---
 drivers/hid/hid-wacom.c |   38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

--- linus-2.6.orig/drivers/hid/hid-wacom.c      2012-02-01 11:54:09.000000000 
-0500
+++ linus-2.6/drivers/hid/hid-wacom.c   2012-02-01 12:17:46.166583951 -0500
@@ -363,6 +363,35 @@            input_report_key(input, BTN_STYLUS2, d
        return;
 }
 
+static void wacom_i4_parse_pad_report(struct wacom_data *wdata,
+                       struct input_dev *input, unsigned char *data)
+{
+       input_report_key(input, BTN_0, (data[2] & 0x01));
+       input_report_key(input, BTN_1, (data[3] & 0x01));
+       input_report_key(input, BTN_2, (data[3] & 0x02));
+       input_report_key(input, BTN_3, (data[3] & 0x04));
+       input_report_key(input, BTN_4, (data[3] & 0x08));
+       input_report_key(input, BTN_5, (data[3] & 0x10));
+       input_report_key(input, BTN_6, (data[3] & 0x20));
+       input_report_key(input, BTN_7, (data[3] & 0x40));
+       input_report_key(input, BTN_8, (data[3] & 0x80));
+
+       if (data[1] & 0x80)
+               input_report_abs(input, ABS_WHEEL, (data[1] & 0x7f));
+       else
+               /* Out of proximity, clear wheel value. */
+               input_report_abs(input, ABS_WHEEL, 0);
+
+       if (data[1] | (data[2] & 0x01) | data[3]) {
+               input_report_key(input, wdata->tool, 1);
+               input_report_key(input, BTN_TOOL_FINGER, 1);
+       } else {
+               input_report_key(input, wdata->tool, 0);
+               input_report_abs(input, BTN_TOOL_FINGER, 0);
+       }
+       input_sync(input);
+}
+
 static void wacom_i4_parse_report(struct hid_device *hdev,
                        struct wacom_data *wdata,
                        struct input_dev *input, unsigned char *data)
@@ -377,6 +406,7 @@     case 0x03: /* Features Report */
                wdata->features = data[2];
                break;
        case 0x0C: /* Button report */
+               wacom_i4_parse_pad_report(wdata, input, data);
                break;
        default:
                hid_err(hdev, "Unknown report: %d,%d\n", data[0], data[1]);
@@ -474,6 +504,14 @@            input_set_abs_params(input, ABS_DISTAN
                input_set_abs_params(input, ABS_X, 0, 40640, 4, 0);
                input_set_abs_params(input, ABS_Y, 0, 25400, 4, 0);
                input_set_abs_params(input, ABS_PRESSURE, 0, 2047, 0, 0);
+               input_set_abs_params(input, ABS_WHEEL, 0, 71, 0, 0);
+               __set_bit(BTN_2, input->keybit);
+               __set_bit(BTN_3, input->keybit);
+               __set_bit(BTN_4, input->keybit);
+               __set_bit(BTN_5, input->keybit);
+               __set_bit(BTN_6, input->keybit);
+               __set_bit(BTN_7, input->keybit);
+               __set_bit(BTN_8, input->keybit);
                break;
        }
 

------------------------------------------------------------------------------
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d
_______________________________________________
Linuxwacom-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to