linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] HID: wacom: Reset stylus buttons - Intuos4 WL
@ 2012-03-09 13:20 Przemo Firszt
  2012-03-09 13:20 ` [PATCH 2/2] HID: wacom: Add reporting of wheel for " Przemo Firszt
       [not found] ` <1331299252-23699-1-git-send-email-przemo-q9SP4D9nreWHXe+LvDLADg@public.gmane.org>
  0 siblings, 2 replies; 8+ messages in thread
From: Przemo Firszt @ 2012-03-09 13:20 UTC (permalink / raw)
  To: jkosina, pinglinux, linux-input, linux-kernel, linuxwacom-devel
  Cc: Przemo Firszt

Stylus buttons have to be resetted when going out-of-prox.

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

diff --git a/drivers/hid/hid-wacom.c b/drivers/hid/hid-wacom.c
index 2a440a6..5c25036 100644
--- a/drivers/hid/hid-wacom.c
+++ b/drivers/hid/hid-wacom.c
@@ -352,6 +352,8 @@ static void wacom_i4_parse_pen_report(struct wacom_data *wdata,
 	case 0x80: /* Out of proximity report */
 		input_report_key(input, BTN_TOUCH, 0);
 		input_report_abs(input, ABS_PRESSURE, 0);
+		input_report_key(input, BTN_STYLUS, 0);
+		input_report_key(input, BTN_STYLUS2, 0);
 		input_report_key(input, wdata->tool, 0);
 		input_report_abs(input, ABS_MISC, 0);
 		input_event(input, EV_MSC, MSC_SERIAL, wdata->serial);
-- 
1.7.6.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/2] HID: wacom: Add reporting of wheel for Intuos4 WL
  2012-03-09 13:20 [PATCH 1/2] HID: wacom: Reset stylus buttons - Intuos4 WL Przemo Firszt
@ 2012-03-09 13:20 ` Przemo Firszt
  2012-03-09 17:37   ` [Linuxwacom-devel] " Jason Gerecke
       [not found] ` <1331299252-23699-1-git-send-email-przemo-q9SP4D9nreWHXe+LvDLADg@public.gmane.org>
  1 sibling, 1 reply; 8+ messages in thread
From: Przemo Firszt @ 2012-03-09 13:20 UTC (permalink / raw)
  To: jkosina, pinglinux, linux-input, linux-kernel, linuxwacom-devel
  Cc: 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 <przemo@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, 0xffffffff);
@@ -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

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/2] HID: wacom: Reset stylus buttons - Intuos4 WL
       [not found] ` <1331299252-23699-1-git-send-email-przemo-q9SP4D9nreWHXe+LvDLADg@public.gmane.org>
@ 2012-03-09 16:58   ` Jason Gerecke
  2012-03-12 14:52     ` Jiri Kosina
  0 siblings, 1 reply; 8+ messages in thread
From: Jason Gerecke @ 2012-03-09 16:58 UTC (permalink / raw)
  To: Przemo Firszt
  Cc: linuxwacom-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
	jkosina-AlSwsSmVLrQ, pinglinux-Re5JQEeQqe8AvxtiuMwx3w,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-input-u79uwXL29TY76Z2rM5mHXA

On Fri, Mar 9, 2012 at 5:20 AM, Przemo Firszt <przemo@firszt.eu> wrote:
> Stylus buttons have to be resetted when going out-of-prox.
>
> Signed-off-by: Przemo Firszt <przemo@firszt.eu>
> ---
>  drivers/hid/hid-wacom.c |    2 ++
>  1 files changed, 2 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/hid/hid-wacom.c b/drivers/hid/hid-wacom.c
> index 2a440a6..5c25036 100644
> --- a/drivers/hid/hid-wacom.c
> +++ b/drivers/hid/hid-wacom.c
> @@ -352,6 +352,8 @@ static void wacom_i4_parse_pen_report(struct wacom_data *wdata,
>        case 0x80: /* Out of proximity report */
>                input_report_key(input, BTN_TOUCH, 0);
>                input_report_abs(input, ABS_PRESSURE, 0);
> +               input_report_key(input, BTN_STYLUS, 0);
> +               input_report_key(input, BTN_STYLUS2, 0);
>                input_report_key(input, wdata->tool, 0);
>                input_report_abs(input, ABS_MISC, 0);
>                input_event(input, EV_MSC, MSC_SERIAL, wdata->serial);
> --
> 1.7.6.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-input" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reviewed-by: Jason Gerecke <killertofu@gmail.com>

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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Linuxwacom-devel] [PATCH 2/2] HID: wacom: Add reporting of wheel for Intuos4 WL
  2012-03-09 13:20 ` [PATCH 2/2] HID: wacom: Add reporting of wheel for " Przemo Firszt
@ 2012-03-09 17:37   ` Jason Gerecke
  2012-03-09 18:11     ` Przemo Firszt
  0 siblings, 1 reply; 8+ messages in thread
From: Jason Gerecke @ 2012-03-09 17:37 UTC (permalink / raw)
  To: Przemo Firszt
  Cc: jkosina, pinglinux, linux-input, linux-kernel, linuxwacom-devel

On Fri, Mar 9, 2012 at 5:20 AM, Przemo Firszt <przemo@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 <przemo@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, 0xffffffff);
> @@ -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.
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Linuxwacom-devel] [PATCH 2/2] HID: wacom: Add reporting of wheel for Intuos4 WL
  2012-03-09 17:37   ` [Linuxwacom-devel] " Jason Gerecke
@ 2012-03-09 18:11     ` Przemo Firszt
  0 siblings, 0 replies; 8+ messages in thread
From: Przemo Firszt @ 2012-03-09 18:11 UTC (permalink / raw)
  To: Jason Gerecke
  Cc: jkosina, pinglinux, linux-input, linux-kernel, linuxwacom-devel

Dnia 2012-03-09, pią o godzinie 09:37 -0800, Jason Gerecke pisze:
> On Fri, Mar 9, 2012 at 5:20 AM, Przemo Firszt <przemo@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 <przemo@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

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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/2] HID: wacom: Reset stylus buttons - Intuos4 WL
  2012-03-09 16:58   ` [PATCH 1/2] HID: wacom: Reset stylus buttons - " Jason Gerecke
@ 2012-03-12 14:52     ` Jiri Kosina
  0 siblings, 0 replies; 8+ messages in thread
From: Jiri Kosina @ 2012-03-12 14:52 UTC (permalink / raw)
  To: Jason Gerecke
  Cc: Przemo Firszt, pinglinux, linux-input, linux-kernel,
	linuxwacom-devel

On Fri, 9 Mar 2012, Jason Gerecke wrote:

> > Signed-off-by: Przemo Firszt <przemo@firszt.eu>
> > ---
> >  drivers/hid/hid-wacom.c |    2 ++
> >  1 files changed, 2 insertions(+), 0 deletions(-)
> >
> > diff --git a/drivers/hid/hid-wacom.c b/drivers/hid/hid-wacom.c
> > index 2a440a6..5c25036 100644
> > --- a/drivers/hid/hid-wacom.c
> > +++ b/drivers/hid/hid-wacom.c
> > @@ -352,6 +352,8 @@ static void wacom_i4_parse_pen_report(struct wacom_data *wdata,
> >        case 0x80: /* Out of proximity report */
> >                input_report_key(input, BTN_TOUCH, 0);
> >                input_report_abs(input, ABS_PRESSURE, 0);
> > +               input_report_key(input, BTN_STYLUS, 0);
> > +               input_report_key(input, BTN_STYLUS2, 0);
> >                input_report_key(input, wdata->tool, 0);
> >                input_report_abs(input, ABS_MISC, 0);
> >                input_event(input, EV_MSC, MSC_SERIAL, wdata->serial);
> > --
> > 1.7.6.4
> 
> Reviewed-by: Jason Gerecke <killertofu@gmail.com>

Applied, thanks.

-- 
Jiri Kosina
SUSE Labs
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 2/2] HID: wacom: Add reporting of wheel for Intuos4 WL
  2012-03-14 19:55 [PATCH 1/2] HID: wacom: Replace __set_bit with input_set_capability Przemo Firszt
@ 2012-03-14 19:55 ` Przemo Firszt
  2012-03-16  0:09   ` Chris Bagwell
  0 siblings, 1 reply; 8+ messages in thread
From: Przemo Firszt @ 2012-03-14 19:55 UTC (permalink / raw)
  To: jkosina, pinglinux, chris, killertofu
  Cc: linux-kernel, linux-input, linuxwacom-devel, 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 <przemo@firszt.eu>
Reviewed-by: Jason Gerecke <killertofu@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, 0xffffffff);
 		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

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/2] HID: wacom: Add reporting of wheel for Intuos4 WL
  2012-03-14 19:55 ` [PATCH 2/2] HID: wacom: Add reporting of wheel for Intuos4 WL Przemo Firszt
@ 2012-03-16  0:09   ` Chris Bagwell
  0 siblings, 0 replies; 8+ messages in thread
From: Chris Bagwell @ 2012-03-16  0:09 UTC (permalink / raw)
  To: Przemo Firszt
  Cc: jkosina, pinglinux, killertofu, linux-kernel, linux-input,
	linuxwacom-devel

For both patches:

Reviewed-by: Chris Bagwell <chris@cnpbagwell.com>

On Wed, Mar 14, 2012 at 2:55 PM, Przemo Firszt <przemo@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 <przemo@firszt.eu>
> Reviewed-by: Jason Gerecke <killertofu@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, 0xffffffff);
>                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
>

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2012-03-16  0:09 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-03-09 13:20 [PATCH 1/2] HID: wacom: Reset stylus buttons - Intuos4 WL Przemo Firszt
2012-03-09 13:20 ` [PATCH 2/2] HID: wacom: Add reporting of wheel for " Przemo Firszt
2012-03-09 17:37   ` [Linuxwacom-devel] " Jason Gerecke
2012-03-09 18:11     ` Przemo Firszt
     [not found] ` <1331299252-23699-1-git-send-email-przemo-q9SP4D9nreWHXe+LvDLADg@public.gmane.org>
2012-03-09 16:58   ` [PATCH 1/2] HID: wacom: Reset stylus buttons - " Jason Gerecke
2012-03-12 14:52     ` Jiri Kosina
  -- strict thread matches above, loose matches on Subject: below --
2012-03-14 19:55 [PATCH 1/2] HID: wacom: Replace __set_bit with input_set_capability Przemo Firszt
2012-03-14 19:55 ` [PATCH 2/2] HID: wacom: Add reporting of wheel for Intuos4 WL Przemo Firszt
2012-03-16  0:09   ` Chris Bagwell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).