HID: wacom: Only report rotation for art pen
The generic routine, wacom_wac_pen_event, turns rotation value 90 degree anti-clockwise before posting the events. This non-zero event trggers a non-zero ABS_Z event for non art pen tools. However, HID_DG_TWIST is only supported by art pen. [jkosina@suse.cz: fix build: add missing brace] Cc: stable@vger.kernel.org Signed-off-by: Ping Cheng <ping.cheng@wacom.com> Reviewed-by: Jason Gerecke <jason.gerecke@wacom.com> -- Hi Jiri, This is kind of a version 2 of the last one I posted two days ago. I updated the logic so it has less changed lines: 29 vs 158! Hopefully, the logic is easier to follow now. Please ignore the last one. Thank you! Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
parent
aa051d36ce
commit
7ccced33a0
|
@ -638,9 +638,26 @@ static int wacom_intuos_id_mangle(int tool_id)
|
|||
return (tool_id & ~0xFFF) << 4 | (tool_id & 0xFFF);
|
||||
}
|
||||
|
||||
static bool wacom_is_art_pen(int tool_id)
|
||||
{
|
||||
bool is_art_pen = false;
|
||||
|
||||
switch (tool_id) {
|
||||
case 0x885: /* Intuos3 Marker Pen */
|
||||
case 0x804: /* Intuos4/5 13HD/24HD Marker Pen */
|
||||
case 0x10804: /* Intuos4/5 13HD/24HD Art Pen */
|
||||
is_art_pen = true;
|
||||
break;
|
||||
}
|
||||
return is_art_pen;
|
||||
}
|
||||
|
||||
static int wacom_intuos_get_tool_type(int tool_id)
|
||||
{
|
||||
int tool_type;
|
||||
int tool_type = BTN_TOOL_PEN;
|
||||
|
||||
if (wacom_is_art_pen(tool_id))
|
||||
return tool_type;
|
||||
|
||||
switch (tool_id) {
|
||||
case 0x812: /* Inking pen */
|
||||
|
@ -655,12 +672,9 @@ static int wacom_intuos_get_tool_type(int tool_id)
|
|||
case 0x852:
|
||||
case 0x823: /* Intuos3 Grip Pen */
|
||||
case 0x813: /* Intuos3 Classic Pen */
|
||||
case 0x885: /* Intuos3 Marker Pen */
|
||||
case 0x802: /* Intuos4/5 13HD/24HD General Pen */
|
||||
case 0x804: /* Intuos4/5 13HD/24HD Marker Pen */
|
||||
case 0x8e2: /* IntuosHT2 pen */
|
||||
case 0x022:
|
||||
case 0x10804: /* Intuos4/5 13HD/24HD Art Pen */
|
||||
case 0x10842: /* MobileStudio Pro Pro Pen slim */
|
||||
case 0x14802: /* Intuos4/5 13HD/24HD Classic Pen */
|
||||
case 0x16802: /* Cintiq 13HD Pro Pen */
|
||||
|
@ -718,10 +732,6 @@ static int wacom_intuos_get_tool_type(int tool_id)
|
|||
case 0x10902: /* Intuos4/5 13HD/24HD Airbrush */
|
||||
tool_type = BTN_TOOL_AIRBRUSH;
|
||||
break;
|
||||
|
||||
default: /* Unknown tool */
|
||||
tool_type = BTN_TOOL_PEN;
|
||||
break;
|
||||
}
|
||||
return tool_type;
|
||||
}
|
||||
|
@ -2336,6 +2346,9 @@ static void wacom_wac_pen_event(struct hid_device *hdev, struct hid_field *field
|
|||
}
|
||||
return;
|
||||
case HID_DG_TWIST:
|
||||
/* don't modify the value if the pen doesn't support the feature */
|
||||
if (!wacom_is_art_pen(wacom_wac->id[0])) return;
|
||||
|
||||
/*
|
||||
* Userspace expects pen twist to have its zero point when
|
||||
* the buttons/finger is on the tablet's left. HID values
|
||||
|
|
Loading…
Reference in New Issue