input : wacom - Update Graphire and old Bamboo tablet buttons
Subsystems (2)
PATCH 4/4 input : wacom - Update Graphire and old Bamboo tablet buttons
With the removal of BTN_TOOL_FINGER for tablet buttons and expresskeys, serial number is needed to distingush if the events were from a regular tool (stylus, eraser, or mouse) or the attribures (buttons, strips, or wheels) on the tablet since there are overlapped events between the tools and the tablet attributes.
--- drivers/input/tablet/wacom_wac.c | 22 ++++++++++------------ 1 files changed, 10 insertions(+), 12 deletions(-)
drivers/input/tablet/wacom_wac.c +10 -12
@@ -265,6 +265,7 @@ static int wacom_graphire_irq(struct wacom_wac *wacom) wacom->id[0 ] =0 ;input_report_abs (input,ABS_MISC , wacom->id[0 ]);/* report tool id */ input_report_key (input, wacom->tool[0 ], prox); +input_event (input,EV_MSC ,MSC_SERIAL ,1 );input_sync (input);/* sync last event */ }
@@ -274,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)
@@ -290,17 +291,17 @@ 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 ;input_report_abs (input,ABS_MISC , wacom->id[1 ]);input_event (input,EV_MSC ,MSC_SERIAL ,0xf0 ); + retval =1 ; } - retval =1 ;break ; } exit:
@@ -1075,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
Quoted 9 lines · Ping Cheng
With the removal of
BTN_TOOL_FINGERfor tablet buttons and expresskeys, serial number is needed to distingush if the events were from a regular tool (stylus, eraser, or mouse) or the attribures (buttons, strips, or wheels) on the tablet since there are overlapped events between the tools and the tablet attributes.Signed-off-by Ping Cheng <[email protected]>---
This patch seems to do three things; 1) the change described in the text, 2) changing button events, and 3) fix a problem with return value in the WACOM_MO case. Perhaps a more suitable patch split can be arranged?
Quoted 60 lines
drivers/input/tablet/wacom_wac.c | 22 ++++++++++------------ 1 files changed, 10 insertions(+), 12 deletions(-)drivers/input/tablet/wacom_wac.c +8
-10@@ -265,6 +265,7 @@ static int wacom_graphire_irq(struct wacom_wac *wacom) wacom->id[0 ] =0 ;input_report_abs (input,ABS_MISC , wacom->id[0 ]);/* report tool id */ input_report_key (input, wacom->tool[0 ], prox); +input_event (input,EV_MSC ,MSC_SERIAL ,1 );input_sync (input);/* sync last event */ }@@ -274,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)@@ -290,17 +291,17 @@ 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 ;input_report_abs (input,ABS_MISC , wacom->id[1 ]);input_event (input,EV_MSC ,MSC_SERIAL ,0xf0 ); + retval =1 ; } - retval =1 ;break ; } exit:@@ -1075,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 */
drivers/input/tablet/wacom_wac.c void wacom_setup_input_capabilities(struct input_dev *input_dev, · line 1089
Quoted 10 lines
drivers/input/tablet/wacom_wac.c +2
-2case 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 :
Thanks,
Henrik