Skip to contentSkip to conversation

input: wacom - remove pressure for touch devices

PATCH In review Ping Cheng 3 participants 4 messages Aug 13, 2011 – Aug 17, 2011 2 messages not in the archive

Subsystems (2)
lore
Share & tools
lore

Ping Cheng

author
#0 lore raw

PATCH 2/5 input: wacom - remove pressure for touch devices

Touch devices do not report valid pressure or capacitance.

---
 drivers/input/tablet/wacom_sys.c |   14 --------------
 drivers/input/tablet/wacom_wac.c |    6 +++---
 2 files changed, 3 insertions(+), 17 deletions(-)
drivers/input/tablet/wacom_sys.c +0 -14
index 449c0a4..36001eb 100644
@@ -228,13 +228,6 @@ static int wacom_parse_hid(struct usb_interface *intf, struct hid_descriptor *hi
 							get_unaligned_le16(&report[i + 3]);
 						i += 4;
 					}
-				} else if (usage == WCM_DIGITIZER) {
-					/* max pressure isn't reported
-					features->pressure_max = (unsigned short)
-							(report[i+4] << 8  | report[i + 3]);
-					*/
-					features->pressure_max = 255;
-					i += 4;
 				}
 				break;
 
@@ -290,13 +283,6 @@ static int wacom_parse_hid(struct usb_interface *intf, struct hid_descriptor *hi
 				pen = 1;
 				i++;
 				break;
-
-			case HID_USAGE_UNDEFINED:
-				if (usage == WCM_DESKTOP && finger) /* capacity */
-					features->pressure_max =
-						get_unaligned_le16(&report[i + 3]);
-				i += 4;
-				break;
 			}
 			break;
 
drivers/input/tablet/wacom_wac.c +3 -3
index c1c2f7b..3eccf21 100644
@@ -818,7 +818,6 @@ static int wacom_bpt_touch(struct wacom_wac *wacom)
 				x <<= 5;
 				y <<= 5;
 			}
-			input_report_abs(input, ABS_MT_PRESSURE, p);
 			input_report_abs(input, ABS_MT_POSITION_X, x);
 			input_report_abs(input, ABS_MT_POSITION_Y, y);
 		}
@@ -1056,10 +1055,11 @@ void wacom_setup_input_capabilities(struct input_dev *input_dev,
 			     features->x_fuzz, 0);
 	input_set_abs_params(input_dev, ABS_Y, 0, features->y_max,
 			     features->y_fuzz, 0);
-	input_set_abs_params(input_dev, ABS_PRESSURE, 0, features->pressure_max,
-			     features->pressure_fuzz, 0);
 
 	if (features->device_type == BTN_TOOL_PEN) {
+		input_set_abs_params(input_dev, ABS_PRESSURE, 0, features->pressure_max,
+			     features->pressure_fuzz, 0);
+
 		/* penabled devices have fixed resolution for each model */
 		input_abs_set_res(input_dev, ABS_X, features->x_resolution);
 		input_abs_set_res(input_dev, ABS_Y, features->y_resolution);
Signature · 1 line
1.7.6
#1 lore raw
Quoted 4 lines · Ping Cheng

Touch devices do not report valid pressure or capacitance.

---

I'd prefer if we kept pressure support. At least for Bamboo's with product ID between 0xd0 and 0xd4.

In my testing of an 0xd1 device, pressure works fine (low pressure and high pressure work great. Not much middle pressure sensitivity. Multi-touch will increase pressure reading. All pretty common behaviour).

I don't use the pressure in day-to-day usage but do use it to drive testing of pressure features of some apps/drivers and so don't want to lose it.

Quoted 1 line

From looking at the touch data on Bamboo's > 0xd4 that people have

emailed me, it looks like pressure data was removed from firmware so a version of this patch will be useful for those. But that patch needs to also change the way it parses the touch data to reduce from 8-bits to 1-bit.

Chris

A message that is not in the archive (sent off-list or not yet received): CAF8JNh+90K2Qfpzu9Rwt_cdvqxTxaF8iJJ2-=nmWY8qLL6Wmzg@mail.gmail.com

maintainer
#3 lore raw
Quoted 20 lines · Ping Cheng
Quoted 6 lines · Chris Bagwell
Quoted 4 lines · Ping Cheng

Touch devices do not report valid pressure or capacitance.

---

Quoted 8 lines

I'd prefer if we kept pressure support. At least for Bamboo's with product ID between 0xd0 and 0xd4.

In my testing of an 0xd1 device, pressure works fine (low pressure and high pressure work great. Not much middle pressure sensitivity. Multi-touch will increase pressure reading. All pretty common behaviour).

Basically, there were three reasons to remove the pressure bit for all touch devices:

Quoted 9 lines

1. The value is not a pressure and it does not report valid capacitance
either;
2. The only valid use in the kernel driver is to decide if the finger is
touching the tablet or not, which has already been correctly reported by the firmware in the other bits. So, it is redundant to check the pressure for this purpose;
3. Passing the invalid "pressure" to the user land would only introduce
bad user experience since touch is not designed for drawing. We don't want to confuse user with that "pressure".

Not speaking about touch per se, but pressure is important for other things besides drawing. Different people prefer different device sensitivity and if userspace knows pressure it can adjust according to user preference, like synaptics X driver does with touchpads that actually report it. I believe tslib allows similar for touchscreens.

Thanks.

Signature · 1 line
Dmitry

A message that is not in the archive (sent off-list or not yet received): CAF8JNh+dpmh50ixyNKtVNL-ZGVZg3rfjbyvnVAi790nwvFCJVA@mail.gmail.com

maintainer
#5 lore raw
Quoted 40 lines · Ping Cheng

On Tue, Aug 16, 2011 at 11:50 PM, Dmitry Torokhov <[email protected]

Quoted 39 lines

wrote:

Quoted 1 line · Ping Cheng

On Sun, Aug 14, 2011 at 8:27 PM, Chris Bagwell <[email protected]>

Quoted 2 lines · wrote:
Quoted 2 lines

On Fri, Aug 12, 2011 at 7:08 PM, Ping Cheng <[email protected]>

Quoted 8 lines · wrote:
Quoted 8 lines
Quoted 4 lines

Touch devices do not report valid pressure or capacitance.

---

I'd prefer if we kept pressure support. At least for Bamboo's with product ID between 0xd0 and 0xd4.

Quoted 7 lines
Quoted 5 lines

In my testing of an 0xd1 device, pressure works fine (low pressure and high pressure work great. Not much middle pressure sensitivity. Multi-touch will increase pressure reading. All pretty common behaviour).

Basically, there were three reasons to remove the pressure bit for all

touch

Quoted 5 lines

devices:

1. The value is not a pressure and it does not report valid capacitance
either;
2. The only valid use in the kernel driver is to decide if the finger

is

Quoted 1 line

touching the tablet or not, which has already been correctly reported by

the

Quoted 4 lines

firmware in the other bits. So, it is redundant to check the pressure for this purpose;
3. Passing the invalid "pressure" to the user land would only introduce
bad user experience since touch is not designed for drawing. We don't

want

Quoted 1 line

to confuse user with that "pressure".

Quoted 8 lines
Quoted 6 lines

Not speaking about touch per se, but pressure is important for other things besides drawing. Different people prefer different device sensitivity and if userspace knows pressure it can adjust according to user preference, like synaptics X driver does with touchpads that actually report it. I believe tslib allows similar for touchscreens.

Your suggestion is based on the assumption that the value is pressure.

I did not make any assumptions, I was just making general observation that if pressure data is available it is useful not only for drawing applications.

Quoted 2 lines

But
that is not true. The value is not pressure and it is unreliable.

So what is this data then?

Thanks.

Signature · 1 line
Dmitry