Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Synaptics touchpad misdetected as clickpad [with patch]



On Wed 04 Mar 2015 at 22:16:28 +0000, Christos Zoulas wrote:
> Sure why don't you send a full patch that also has the above comment
> reproduced...

Here it is. I adjusted the comment to zero-based.
I also gave it a quick test and worked the same as the previous patch.

Index: synaptics.c
===================================================================
RCS file: /cvsroot/src/sys/dev/pckbport/synaptics.c,v
retrieving revision 1.32
diff -u -r1.32 synaptics.c
--- synaptics.c	23 May 2014 01:11:29 -0000	1.32
+++ synaptics.c	4 Mar 2015 22:42:41 -0000
@@ -197,18 +197,46 @@
 		cmd[0] = PMS_SEND_DEV_STATUS;
 		res |= pckbport_poll_cmd(psc->sc_kbctag,
 		    psc->sc_kbcslot, cmd, 1, 3, resp, 0);
+/*
+ * The following describes response for the
+ * SYNAPTICS_CONTINUED_CAPABILITIES query.
+ *
+ * byte	mask	name			meaning
+ * ----	----	-------			------------
+ * 0	0x01	adjustable threshold	capacitive button sensitivity
+ *					can be adjusted
+ * 0	0x02	report max		query 0x0d gives max coord reported
+ * 0	0x04	clearpad		sensor is ClearPad product
+ * 0	0x08	advanced gesture	not particularly meaningful
+ * 0	0x10	clickpad bit 0		1-button ClickPad
+ * 0	0x60	multifinger mode	identifies firmware finger counting
+ *					(not reporting!) algorithm.
+ *					Not particularly meaningful
+ * 0	0x80	covered pad		W clipped to 14, 15 == pad mostly covered
+ * 1	0x01	clickpad bit 1		2-button ClickPad
+ * 1	0x02	deluxe LED controls	touchpad support LED commands
+ *					ala multimedia control bar
+ * 1	0x04	reduced filtering	firmware does less filtering on
+ *					position data, driver should watch
+ *					for noise.
+ * 1	0x08	image sensor		image sensor tracks 5 fingers, but only
+ *					reports 2.
+ * 1	0x01	uniform clickpad	whole clickpad moves instead of being
+ *					hinged at the top.
+ * 1	0x20	report min		query 0x0f gives min coord reported
+ */
 		if (res == 0) {
-			u_char clickpad_type = (resp[1] & 0x1);
-			clickpad_type |= ((resp[0] >> 4) & 0x1);
+			u_char clickpad_type = (resp[0] & 0x10);
+			clickpad_type |=       (resp[1] & 0x01);
 
 			aprint_debug_dev(psc->sc_dev, "%s: Continued "
 			    "Capabilities 0x%02x 0x%02x 0x%02x.\n", __func__,
 			    resp[0], resp[1], resp[2]);
 			switch (clickpad_type) {
-			case 1:
+			case 0x10:
 				sc->flags |= SYN_FLAG_HAS_ONE_BUTTON_CLICKPAD;
 				break;
-			case 2:
+			case 0x01:
 				sc->flags |= SYN_FLAG_HAS_TWO_BUTTON_CLICKPAD;
 				break;
 			default:
> christos
-Olaf.
-- 
___ Olaf 'Rhialto' Seibert  -- The Doctor: No, 'eureka' is Greek for
\X/ rhialto/at/xs4all.nl    -- 'this bath is too hot.'

Attachment: pgp5G2dm3Qchn.pgp
Description: PGP signature



Home | Main Index | Thread Index | Old Index