Thread (8 messages) 8 messages, 3 authors, 2020-03-24

Re: [PATCH v3 1/2] Input: goodix - Add support for more then one touch-key

From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date: 2020-03-24 18:51:25

Hi Dmitry,

On Mon, Mar 16, 2020 at 10:53:03AM +0300, Dmitry Mastykin wrote:
+static void goodix_ts_report_key(struct goodix_ts_data *ts, u8 *data)
+{
+	int touch_num;
+	u8 key_value;
+	int i;
+
+	if (data[0] & GOODIX_HAVE_KEY) {
+		touch_num = data[0] & 0x0f;
+		key_value = data[1 + ts->contact_size * touch_num];
+		for (i = 0; i < GOODIX_MAX_KEYS; ++i)
+			if (key_value & (1 << i))
+				input_report_key(ts->input_dev, ts->keymap[i], 1);
+	} else
+		for (i = 0; i < GOODIX_MAX_KEYS; ++i)
+			input_report_key(ts->input_dev, ts->keymap[i], 0);
Should this be written as:

	if (data[0] & GOODIX_HAVE_KEY) {
		touch_num = data[0] & 0x0f;
		key_value = data[1 + ts->contact_size * touch_num];
	} else {
		/* Release all keys */
		key_value = 0;
	}

	for (i = 0; i < GOODIX_MAX_KEYS; i++)
		input_report_key(ts->input_dev, ts->keymap[i],
				 key_value & BIT(i);

or the device may send incremental updates to the keys pressed without
resending currently pressed keys (sounds unlikely)?

Thanks.

-- 
Dmitry
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help