瀏覽代碼

Input: wacom - send proper tablet state info when pen leaves proximity

The EMR sensor of Intuos4 and newer devices can send a packet with
0x20 in its second byte which contains only location information.
This packet is sent when the pen is too far away to reliably obtain
other information. Because only the location is updated userspace
will continue to see stale information for other values, most notably
TOUCH, PRESSURE, and DISTANCE.

This patch ensures userspace is not left with stale device state
information when the pen re-enters proximity (possibly leading to
the assumption the pen is still in contact even though it is
actually hovering).

Signed-off-by: Jason Gerecke <killertofu@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Jason Gerecke 12 年之前
父節點
當前提交
4eb1830b49
共有 1 個文件被更改,包括 7 次插入0 次删除
  1. 7 0
      drivers/input/tablet/wacom_wac.c

+ 7 - 0
drivers/input/tablet/wacom_wac.c

@@ -427,6 +427,13 @@ static int wacom_intuos_inout(struct wacom_wac *wacom)
 			(features->type == WACOM_21UX2))
 			(features->type == WACOM_21UX2))
 		return 1;
 		return 1;
 
 
+	/* Range Report */
+	if ((data[1] & 0xfe) == 0x20) {
+		input_report_key(input, BTN_TOUCH, 0);
+		input_report_abs(input, ABS_PRESSURE, 0);
+		input_report_abs(input, ABS_DISTANCE, wacom->features.distance_max);
+	}
+
 	/* Exit report */
 	/* Exit report */
 	if ((data[1] & 0xfe) == 0x80) {
 	if ((data[1] & 0xfe) == 0x80) {
 		if (features->quirks == WACOM_QUIRK_MULTI_INPUT)
 		if (features->quirks == WACOM_QUIRK_MULTI_INPUT)