[Linuxwacom-devel] [PATCH 2/2] HID: wacom: Add reporting of wheel for Intuos4 WL

2012-03-15 Thread Przemo Firszt
This patch adds reporting of ABS_WHEEL event. Raported walues are 0..71
and are related to absolute location of the finger on the wheel.

Signed-off-by: Przemo Firszt prz...@firszt.eu
Reviewed-by: Jason Gerecke killert...@gmail.com
---
 drivers/hid/hid-wacom.c |   24 
 1 files changed, 24 insertions(+), 0 deletions(-)

diff --git a/drivers/hid/hid-wacom.c b/drivers/hid/hid-wacom.c
index d04e2aa..067e296 100644
--- a/drivers/hid/hid-wacom.c
+++ b/drivers/hid/hid-wacom.c
@@ -36,6 +36,7 @@
 struct wacom_data {
__u16 tool;
__u16 butstate;
+   __u8 whlstate;
__u8 features;
__u32 id;
__u32 serial;
@@ -322,6 +323,23 @@ static void wacom_i4_parse_button_report(struct wacom_data 
*wdata,
struct input_dev *input, unsigned char *data)
 {
__u16 new_butstate;
+   __u8 new_whlstate;
+   __u8 sync = 0;
+
+   new_whlstate = data[1];
+   if (new_whlstate != wdata-whlstate) {
+   wdata-whlstate = new_whlstate;
+   if (new_whlstate  0x80) {
+   input_report_key(input, BTN_TOUCH, 1);
+   input_report_abs(input, ABS_WHEEL, (new_whlstate  
0x7f));
+   input_report_key(input, BTN_TOOL_FINGER, 1);
+   } else {
+   input_report_key(input, BTN_TOUCH, 0);
+   input_report_abs(input, ABS_WHEEL, 0);
+   input_report_key(input, BTN_TOOL_FINGER, 0);
+   }
+   sync = 1;
+   }
 
new_butstate = (data[3]  1) | (data[2]  0x01);
if (new_butstate != wdata-butstate) {
@@ -336,6 +354,10 @@ static void wacom_i4_parse_button_report(struct wacom_data 
*wdata,
input_report_key(input, BTN_7, new_butstate  0x080);
input_report_key(input, BTN_8, new_butstate  0x100);
input_report_key(input, BTN_TOOL_FINGER, 1);
+   sync = 1;
+   }
+
+   if (sync) {
input_report_abs(input, ABS_MISC, PAD_DEVICE_ID);
input_event(input, EV_MSC, MSC_SERIAL, 0x);
input_sync(input);
@@ -510,6 +532,7 @@ static int wacom_input_mapped(struct hid_device *hdev, 
struct hid_input *hi,
input_set_abs_params(input, ABS_DISTANCE, 0, 32, 0, 0);
break;
case USB_DEVICE_ID_WACOM_INTUOS4_BLUETOOTH:
+   __set_bit(ABS_WHEEL, input-absbit);
__set_bit(ABS_MISC, input-absbit);
__set_bit(BTN_2, input-keybit);
__set_bit(BTN_3, input-keybit);
@@ -518,6 +541,7 @@ static int wacom_input_mapped(struct hid_device *hdev, 
struct hid_input *hi,
__set_bit(BTN_6, input-keybit);
__set_bit(BTN_7, input-keybit);
__set_bit(BTN_8, input-keybit);
+   input_set_abs_params(input, ABS_WHEEL, 0, 71, 0, 0);
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);
-- 
1.7.6.4


--
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
___
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel


[Linuxwacom-devel] [PATCH 2/2] HID: wacom: Add reporting of wheel for Intuos4 WL

2012-03-09 Thread Przemo Firszt
This patch adds reporting of ABS_WHEEL event. Raported walues are 0..71
and are related to absolute location of the finger on the wheel.

Signed-off-by: Przemo Firszt prz...@firszt.eu
---
 drivers/hid/hid-wacom.c |   19 +++
 1 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/drivers/hid/hid-wacom.c b/drivers/hid/hid-wacom.c
index 5c25036..6f65514 100644
--- a/drivers/hid/hid-wacom.c
+++ b/drivers/hid/hid-wacom.c
@@ -36,6 +36,7 @@
 struct wacom_data {
__u16 tool;
__u16 butstate;
+   __u8 whlstate;
__u8 features;
__u32 id;
__u32 serial;
@@ -322,6 +323,16 @@ static void wacom_i4_parse_button_report(struct wacom_data 
*wdata,
struct input_dev *input, unsigned char *data)
 {
__u16 new_butstate;
+   __u8 new_whlstate;
+   __u8 sync = 0;
+
+   new_whlstate = data[1]  0x7f;
+   if (new_whlstate != wdata-whlstate) {
+   wdata-whlstate = new_whlstate;
+   input_report_key(input, BTN_TOUCH, 1);
+   input_report_abs(input, ABS_WHEEL, new_whlstate);
+   sync = 1;
+   }
 
new_butstate = (data[3]  1) | (data[2]  0x01);
if (new_butstate != wdata-butstate) {
@@ -335,6 +346,10 @@ static void wacom_i4_parse_button_report(struct wacom_data 
*wdata,
input_report_key(input, BTN_6, new_butstate  0x040);
input_report_key(input, BTN_7, new_butstate  0x080);
input_report_key(input, BTN_8, new_butstate  0x100);
+   sync = 1;
+   }
+
+   if (sync) {
input_report_key(input, BTN_TOOL_FINGER, 1);
input_report_abs(input, ABS_MISC, PAD_DEVICE_ID);
input_event(input, EV_MSC, MSC_SERIAL, 0x);
@@ -354,6 +369,7 @@ static void wacom_i4_parse_pen_report(struct wacom_data 
*wdata,
input_report_abs(input, ABS_PRESSURE, 0);
input_report_key(input, BTN_STYLUS, 0);
input_report_key(input, BTN_STYLUS2, 0);
+   input_report_abs(input, ABS_WHEEL, 0);
input_report_key(input, wdata-tool, 0);
input_report_abs(input, ABS_MISC, 0);
input_event(input, EV_MSC, MSC_SERIAL, wdata-serial);
@@ -512,6 +528,9 @@ static int wacom_input_mapped(struct hid_device *hdev, 
struct hid_input *hi,
input_set_abs_params(input, ABS_DISTANCE, 0, 32, 0, 0);
break;
case USB_DEVICE_ID_WACOM_INTUOS4_BLUETOOTH:
+   __set_bit(ABS_WHEEL, input-absbit);
+   input_set_abs_params(input, ABS_WHEEL, 0, 71, 0, 0);
+   input_set_capability(input, EV_MSC, MSC_SERIAL);
__set_bit(ABS_MISC, input-absbit);
__set_bit(BTN_2, input-keybit);
__set_bit(BTN_3, input-keybit);
-- 
1.7.6.4


--
Virtualization  Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing 
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
___
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel


Re: [Linuxwacom-devel] [PATCH 2/2] HID: wacom: Add reporting of wheel for Intuos4 WL

2012-03-09 Thread Jason Gerecke
On Fri, Mar 9, 2012 at 5:20 AM, Przemo Firszt prz...@firszt.eu wrote:
 This patch adds reporting of ABS_WHEEL event. Raported walues are 0..71
 and are related to absolute location of the finger on the wheel.

 Signed-off-by: Przemo Firszt prz...@firszt.eu
 ---
  drivers/hid/hid-wacom.c |   19 +++
  1 files changed, 19 insertions(+), 0 deletions(-)

 diff --git a/drivers/hid/hid-wacom.c b/drivers/hid/hid-wacom.c
 index 5c25036..6f65514 100644
 --- a/drivers/hid/hid-wacom.c
 +++ b/drivers/hid/hid-wacom.c
 @@ -36,6 +36,7 @@
  struct wacom_data {
        __u16 tool;
        __u16 butstate;
 +       __u8 whlstate;
        __u8 features;
        __u32 id;
        __u32 serial;
 @@ -322,6 +323,16 @@ static void wacom_i4_parse_button_report(struct 
 wacom_data *wdata,
                        struct input_dev *input, unsigned char *data)
  {
        __u16 new_butstate;
 +       __u8 new_whlstate;
 +       __u8 sync = 0;
 +
 +       new_whlstate = data[1]  0x7f;
 +       if (new_whlstate != wdata-whlstate) {
 +               wdata-whlstate = new_whlstate;
 +               input_report_key(input, BTN_TOUCH, 1);
 +               input_report_abs(input, ABS_WHEEL, new_whlstate);
 +               sync = 1;
 +       }

The highest bit of data[1] is a touched flag that you'll want to
check to determine if the wheel is being used. If its unset, you'll
want to reset ABS_WHEEL and BTN_TOUCH to zero here.

        new_butstate = (data[3]  1) | (data[2]  0x01);
        if (new_butstate != wdata-butstate) {
 @@ -335,6 +346,10 @@ static void wacom_i4_parse_button_report(struct 
 wacom_data *wdata,
                input_report_key(input, BTN_6, new_butstate  0x040);
                input_report_key(input, BTN_7, new_butstate  0x080);
                input_report_key(input, BTN_8, new_butstate  0x100);
 +               sync = 1;
 +       }
 +
 +       if (sync) {
                input_report_key(input, BTN_TOOL_FINGER, 1);
                input_report_abs(input, ABS_MISC, PAD_DEVICE_ID);
                input_event(input, EV_MSC, MSC_SERIAL, 0x);
 @@ -354,6 +369,7 @@ static void wacom_i4_parse_pen_report(struct wacom_data 
 *wdata,
                input_report_abs(input, ABS_PRESSURE, 0);
                input_report_key(input, BTN_STYLUS, 0);
                input_report_key(input, BTN_STYLUS2, 0);
 +               input_report_abs(input, ABS_WHEEL, 0);
                input_report_key(input, wdata-tool, 0);
                input_report_abs(input, ABS_MISC, 0);
                input_event(input, EV_MSC, MSC_SERIAL, wdata-serial);
As mentioned above, this should be in wacom_i4_parse_button_report.
The pen's loss of proximity has no bearing on the wheel's state.

 @@ -512,6 +528,9 @@ static int wacom_input_mapped(struct hid_device *hdev, 
 struct hid_input *hi,
                input_set_abs_params(input, ABS_DISTANCE, 0, 32, 0, 0);
                break;
        case USB_DEVICE_ID_WACOM_INTUOS4_BLUETOOTH:
 +               __set_bit(ABS_WHEEL, input-absbit);
 +               input_set_abs_params(input, ABS_WHEEL, 0, 71, 0, 0);
 +               input_set_capability(input, EV_MSC, MSC_SERIAL);
                __set_bit(ABS_MISC, input-absbit);
                __set_bit(BTN_2, input-keybit);
                __set_bit(BTN_3, input-keybit);
 --
 1.7.6.4


 --
 Virtualization  Cloud Management Using Capacity Planning
 Cloud computing makes use of virtualization - but cloud computing
 also focuses on allowing computing to be delivered as a service.
 http://www.accelacomm.com/jaw/sfnl/114/51521223/
 ___
 Linuxwacom-devel mailing list
 Linuxwacom-devel@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Jason

---
Day xee-nee-svsh duu-'ushtlh-ts'it;
nuu-wee-ya' duu-xan' 'vm-nvshtlh-ts'it.
Huu-chan xuu naa~-gha.

--
Virtualization  Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing 
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
___
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel


Re: [Linuxwacom-devel] [PATCH 2/2] HID: wacom: Add reporting of wheel for Intuos4 WL

2012-03-09 Thread Przemo Firszt
Dnia 2012-03-09, pią o godzinie 09:37 -0800, Jason Gerecke pisze:
 On Fri, Mar 9, 2012 at 5:20 AM, Przemo Firszt prz...@firszt.eu wrote:
  This patch adds reporting of ABS_WHEEL event. Raported walues are 0..71
  and are related to absolute location of the finger on the wheel.
 
  Signed-off-by: Przemo Firszt prz...@firszt.eu
  ---
   drivers/hid/hid-wacom.c |   19 +++
   1 files changed, 19 insertions(+), 0 deletions(-)
 
  diff --git a/drivers/hid/hid-wacom.c b/drivers/hid/hid-wacom.c
  index 5c25036..6f65514 100644
  --- a/drivers/hid/hid-wacom.c
  +++ b/drivers/hid/hid-wacom.c
  @@ -36,6 +36,7 @@
   struct wacom_data {
 __u16 tool;
 __u16 butstate;
  +   __u8 whlstate;
 __u8 features;
 __u32 id;
 __u32 serial;
  @@ -322,6 +323,16 @@ static void wacom_i4_parse_button_report(struct 
  wacom_data *wdata,
 struct input_dev *input, unsigned char *data)
   {
 __u16 new_butstate;
  +   __u8 new_whlstate;
  +   __u8 sync = 0;
  +
  +   new_whlstate = data[1]  0x7f;
  +   if (new_whlstate != wdata-whlstate) {
  +   wdata-whlstate = new_whlstate;
  +   input_report_key(input, BTN_TOUCH, 1);
  +   input_report_abs(input, ABS_WHEEL, new_whlstate);
  +   sync = 1;
  +   }
 
 The highest bit of data[1] is a touched flag that you'll want to
 check to determine if the wheel is being used. If its unset, you'll
 want to reset ABS_WHEEL and BTN_TOUCH to zero here.
 
Thanks!
A new patch is on the way...
-- 
Przemo


--
Virtualization  Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing 
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
___
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel