Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d7ed5d88 authored by Ulrich Dangel's avatar Ulrich Dangel Committed by Dmitry Torokhov
Browse files

Input: ALPS - handle touchpoints buttons correctly



When pressing any button belonging to the touchpoint, the generated
click events don't belong to the touchpoint but to the touchpad.
This patch fixes this behaviour, the events will be sent via the
correct device, so scrolling with touchpoint is possible.

Signed-off-by: default avatarUlrich Dangel <uli@spamt.net>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent 0b346838
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -132,18 +132,23 @@ static void alps_process_packet(struct psmouse *psmouse)
	ges = packet[2] & 1;
	fin = packet[2] & 2;

	input_report_key(dev, BTN_LEFT, left);
	input_report_key(dev, BTN_RIGHT, right);
	input_report_key(dev, BTN_MIDDLE, middle);

	if ((priv->i->flags & ALPS_DUALPOINT) && z == 127) {
		input_report_rel(dev2, REL_X,  (x > 383 ? (x - 768) : x));
		input_report_rel(dev2, REL_Y, -(y > 255 ? (y - 512) : y));

		input_report_key(dev2, BTN_LEFT, left);
		input_report_key(dev2, BTN_RIGHT, right);
		input_report_key(dev2, BTN_MIDDLE, middle);

		input_sync(dev);
		input_sync(dev2);
		return;
	}

	input_report_key(dev, BTN_LEFT, left);
	input_report_key(dev, BTN_RIGHT, right);
	input_report_key(dev, BTN_MIDDLE, middle);

	/* Convert hardware tap to a reasonable Z value */
	if (ges && !fin) z = 40;