Skip to contentSkip to conversation

input : wacom - Update Graphire4 and old Bamboo tablet buttons

PATCH Applied Ping Cheng 3 participants 3 messages Jul 5, 2011 – Jul 6, 2011

Subsystems (2)
lore
Share & tools
lore

Ping Cheng

author
#0 lore raw

PATCH v2 2/3 input : wacom - Update Graphire4 and old Bamboo tablet buttons

Bamboo touch sets BTN_BACK, BTN_FORWARD, BTN_LEFT, and BTN_RIGHT as the default button events for tablet buttons. Change Graphire4 and old Bamboo to the same settings.

---
 drivers/input/tablet/wacom_wac.c |   19 ++++++++-----------
 1 files changed, 8 insertions(+), 11 deletions(-)
drivers/input/tablet/wacom_wac.c +8 -11
index b93501a..19554a4 100644
@@ -275,8 +275,8 @@ static int wacom_graphire_irq(struct wacom_wac *wacom)
 		prox = data[7] & 0xf8;
 		if (prox || wacom->id[1]) {
 			wacom->id[1] = PAD_DEVICE_ID;
-			input_report_key(input, BTN_0, (data[7] & 0x40));
-			input_report_key(input, BTN_4, (data[7] & 0x80));
+			input_report_key(input, BTN_BACK, (data[7] & 0x40));
+			input_report_key(input, BTN_FORWARD, (data[7] & 0x80));
 			rw = ((data[7] & 0x18) >> 3) - ((data[7] & 0x20) >> 3);
 			input_report_rel(input, REL_WHEEL, rw);
 			if (!prox)
@@ -291,10 +291,10 @@ static int wacom_graphire_irq(struct wacom_wac *wacom)
 		prox = (data[7] & 0xf8) || data[8];
 		if (prox || wacom->id[1]) {
 			wacom->id[1] = PAD_DEVICE_ID;
-			input_report_key(input, BTN_0, (data[7] & 0x08));
-			input_report_key(input, BTN_1, (data[7] & 0x20));
-			input_report_key(input, BTN_4, (data[7] & 0x10));
-			input_report_key(input, BTN_5, (data[7] & 0x40));
+			input_report_key(input, BTN_BACK, (data[7] & 0x08));
+			input_report_key(input, BTN_LEFT, (data[7] & 0x20));
+			input_report_key(input, BTN_FORWARD, (data[7] & 0x10));
+			input_report_key(input, BTN_RIGHT, (data[7] & 0x40));
 			input_report_abs(input, ABS_WHEEL, (data[8] & 0x7f));
 			if (!prox)
 				wacom->id[1] = 0;
@@ -1076,17 +1076,14 @@ void wacom_setup_input_capabilities(struct input_dev *input_dev,
 
 	switch (wacom_wac->features.type) {
 	case WACOM_MO:
-		__set_bit(BTN_1, input_dev->keybit);
-		__set_bit(BTN_5, input_dev->keybit);
-
 		input_set_abs_params(input_dev, ABS_WHEEL, 0, 71, 0, 0);
 		/* fall through */
 
 	case WACOM_G4:
 		input_set_capability(input_dev, EV_MSC, MSC_SERIAL);
 
-		__set_bit(BTN_0, input_dev->keybit);
-		__set_bit(BTN_4, input_dev->keybit);
+		__set_bit(BTN_BACK, input_dev->keybit);
+		__set_bit(BTN_FORWARD, input_dev->keybit);
 		/* fall through */
 
 	case GRAPHIRE:
Signature · 1 line
1.7.5.4
Reviewed-by on v2 2/3
#1 lore raw
Quoted 3 lines · Ping Cheng

Bamboo touch sets BTN_BACK, BTN_FORWARD, BTN_LEFT, and BTN_RIGHT as the default button events for tablet buttons. Change Graphire4 and old Bamboo to the same settings.

This should make the tablets more useful out of the box.

At least with xf86-input-wacom, I believe today's default mapping causes an almost direct mapping to X button #'s so that means BTN_0 is dropped (X buttons start at 1), BTN_1 treated as LEFT and BTN_4/5 treated as BACK/FORWARD (it skips over buttons 4/5/6/7 when creating default mappings).

So for most people, its only the BTN_LEFT/RIGHT that would cause a visible difference and I'd think for the better.

I have one question below.

Quoted 39 lines

---
 drivers/input/tablet/wacom_wac.c |   19 ++++++++-----------

 1 files changed, 8 insertions(+), 11 deletions(-)
drivers/input/tablet/wacom_wac.c +6 -6
index b93501a..19554a4 100644
@@ -275,8 +275,8 @@ static int wacom_graphire_irq(struct wacom_wac *wacom)
                prox = data[7] & 0xf8;
                if (prox || wacom->id[1]) {
                        wacom->id[1] = PAD_DEVICE_ID;
-                       input_report_key(input, BTN_0, (data[7] & 0x40));
-                       input_report_key(input, BTN_4, (data[7] & 0x80));
+                       input_report_key(input, BTN_BACK, (data[7] & 0x40));
+                       input_report_key(input, BTN_FORWARD, (data[7] & 0x80));
                        rw = ((data[7] & 0x18) >> 3) - ((data[7] & 0x20) >> 3);
                        input_report_rel(input, REL_WHEEL, rw);
                        if (!prox)
@@ -291,10 +291,10 @@ static int wacom_graphire_irq(struct wacom_wac *wacom)
                prox = (data[7] & 0xf8) || data[8];
                if (prox || wacom->id[1]) {
                        wacom->id[1] = PAD_DEVICE_ID;
-                       input_report_key(input, BTN_0, (data[7] & 0x08));
-                       input_report_key(input, BTN_1, (data[7] & 0x20));
-                       input_report_key(input, BTN_4, (data[7] & 0x10));
-                       input_report_key(input, BTN_5, (data[7] & 0x40));
+                       input_report_key(input, BTN_BACK, (data[7] & 0x08));
+                       input_report_key(input, BTN_LEFT, (data[7] & 0x20));
+                       input_report_key(input, BTN_FORWARD, (data[7] & 0x10));
+                       input_report_key(input, BTN_RIGHT, (data[7] & 0x40));
                        input_report_abs(input, ABS_WHEEL, (data[8] & 0x7f));
                        if (!prox)
                                wacom->id[1] = 0;
@@ -1076,17 +1076,14 @@ void wacom_setup_input_capabilities(struct input_dev *input_dev,
 
        switch (wacom_wac->features.type) {
Quoted 4 lines

       case WACOM_MO:
-               __set_bit(BTN_1, input_dev->keybit);
-               __set_bit(BTN_5, input_dev->keybit); -

Can you add a message to commit on why this is deleted instead of changed? I'm guessing WACOM_MO series must support mice pucks and so already declare BTN_LEFT and BTN_RIGHT?

Other than that:

Quoted 12 lines

               input_set_abs_params(input_dev, ABS_WHEEL, 0, 71, 0, 0); /* fall through */

       case WACOM_G4:
               input_set_capability(input_dev, EV_MSC, MSC_SERIAL);

-               __set_bit(BTN_0, input_dev->keybit);
-               __set_bit(BTN_4, input_dev->keybit);
+               __set_bit(BTN_BACK, input_dev->keybit);
+               __set_bit(BTN_FORWARD, input_dev->keybit); /* fall through */

Quoted 9 lines

       case GRAPHIRE:
--
1.7.5.4

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

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

Reviewed-by Chris Bagwell
#2 lore raw

Chris,

Thank you for the review. BTN_LEFT/RIGHT is declared in the code inside the " case GRAPHIRE:" block if you take a look at the whole routine.

Ping

-----Original Message-----
From: Chris Bagwell [mailto:[email protected]]
Sent: Tuesday, July 05, 2011 7:32 PM
To: Ping Cheng
Cc: [email protected]; [email protected]; [email protected]; Ping Cheng
Subject: Re: [PATCH 2/3 v2] input : wacom - Update Graphire4 and old Bamboo tablet buttons

Quoted 3 lines · Ping Cheng

Bamboo touch sets BTN_BACK, BTN_FORWARD, BTN_LEFT, and BTN_RIGHT as the default button events for tablet buttons. Change Graphire4 and old Bamboo to the same settings.

This should make the tablets more useful out of the box.

At least with xf86-input-wacom, I believe today's default mapping causes an almost direct mapping to X button #'s so that means BTN_0 is dropped (X buttons start at 1), BTN_1 treated as LEFT and BTN_4/5 treated as BACK/FORWARD (it skips over buttons 4/5/6/7 when creating default mappings).

So for most people, its only the BTN_LEFT/RIGHT that would cause a visible difference and I'd think for the better.

I have one question below.

Quoted 55 lines

---
 drivers/input/tablet/wacom_wac.c |   19 ++++++++-----------

 1 files changed, 8 insertions(+), 11 deletions(-)
drivers/input/tablet/wacom_wac.c +4 -2
index b93501a..19554a4 100644
@@ -275,8 +275,8 @@ static int wacom_graphire_irq(struct wacom_wac 
 *wacom)
                prox = data[7] & 0xf8;
                if (prox || wacom->id[1]) {
                        wacom->id[1] = PAD_DEVICE_ID;
-                       input_report_key(input, BTN_0, (data[7] & 
 0x40));
-                       input_report_key(input, BTN_4, (data[7] & 
 0x80));
+                       input_report_key(input, BTN_BACK, (data[7] & 
+ 0x40));
+                       input_report_key(input, BTN_FORWARD, (data[7] 
+ & 0x80));

                       rw = ((data[7] & 0x18) >> 3) - ((data[7] & 0x20) >> 3);
                       input_report_rel(input, REL_WHEEL, rw); if (!prox)

drivers/input/tablet/wacom_wac.c +0 -4
@@ -291,10 +291,10 @@ static int wacom_graphire_irq(struct wacom_wac 
 *wacom)
                prox = (data[7] & 0xf8) || data[8];
                if (prox || wacom->id[1]) {
                        wacom->id[1] = PAD_DEVICE_ID;
-                       input_report_key(input, BTN_0, (data[7] & 
 0x08));
-                       input_report_key(input, BTN_1, (data[7] & 
 0x20));
-                       input_report_key(input, BTN_4, (data[7] & 
 0x10));
-                       input_report_key(input, BTN_5, (data[7] & 

0x40));
+                       input_report_key(input, BTN_BACK, (data[7] &
+ 0x08));
+                       input_report_key(input, BTN_LEFT, (data[7] &
+ 0x20));
+                       input_report_key(input, BTN_FORWARD, (data[7]
+ & 0x10));
+                       input_report_key(input, BTN_RIGHT, (data[7] &
+ 0x40));
                       input_report_abs(input, ABS_WHEEL, (data[8] & 0x7f));
                       if (!prox)
                               wacom->id[1] = 0; @@ -1076,17 +1076,14 @@ void wacom_setup_input_capabilities(struct input_dev *input_dev,

Quoted 5 lines

       switch (wacom_wac->features.type) { case WACOM_MO:
-               __set_bit(BTN_1, input_dev->keybit);
-               __set_bit(BTN_5, input_dev->keybit); -

Can you add a message to commit on why this is deleted instead of changed? I'm guessing WACOM_MO series must support mice pucks and so already declare BTN_LEFT and BTN_RIGHT?

Other than that:

Quoted 13 lines

               input_set_abs_params(input_dev, ABS_WHEEL, 0, 71, 0, 0);
               /* fall through */

       case WACOM_G4:
               input_set_capability(input_dev, EV_MSC, MSC_SERIAL);

-               __set_bit(BTN_0, input_dev->keybit);
-               __set_bit(BTN_4, input_dev->keybit);
+               __set_bit(BTN_BACK, input_dev->keybit);
+               __set_bit(BTN_FORWARD, input_dev->keybit); /* fall through */

Quoted 9 lines

       case GRAPHIRE:
--
1.7.5.4

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

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