Source-Changes-HG archive

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

[src/trunk]: src/sys/dev/adb make Kensington Turbo Mouse ( actually a trackba...



details:   https://anonhg.NetBSD.org/src/rev/06608d420bb1
branches:  trunk
changeset: 459201:06608d420bb1
user:      macallan <macallan%NetBSD.org@localhost>
date:      Fri Aug 30 19:24:03 2019 +0000

description:
make Kensington Turbo Mouse ( actually a trackball ) work:
- this thing speaks EMP, act like it
- adjust the *way* excessive timeout for trying to enable EMP mode on mice -
  for some reason this trackball shows up as two devices - the trackball and a
  non-functional non-EMP mouse
- map both buttons to button 0 - one is an on/off switch for button 0, the
  other shows up as regular button 1

diffstat:

 sys/dev/adb/adb_ms.c |  23 +++++++++++++++++++----
 1 files changed, 19 insertions(+), 4 deletions(-)

diffs (65 lines):

diff -r b373f79b41d2 -r 06608d420bb1 sys/dev/adb/adb_ms.c
--- a/sys/dev/adb/adb_ms.c      Fri Aug 30 18:52:00 2019 +0000
+++ b/sys/dev/adb/adb_ms.c      Fri Aug 30 19:24:03 2019 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: adb_ms.c,v 1.16 2014/10/29 00:48:12 macallan Exp $     */
+/*     $NetBSD: adb_ms.c,v 1.17 2019/08/30 19:24:03 macallan Exp $     */
 
 /*
  * Copyright (C) 1998  Colin Wood
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: adb_ms.c,v 1.16 2014/10/29 00:48:12 macallan Exp $");
+__KERNEL_RCSID(0, "$NetBSD: adb_ms.c,v 1.17 2019/08/30 19:24:03 macallan Exp $");
 
 #include <sys/param.h>
 #include <sys/device.h>
@@ -337,6 +337,17 @@
        adbms_send_sync(sc, ADBLISTEN(addr, 2), 8, data1);
        adbms_send_sync(sc, ADBFLUSH(addr), 0, NULL);
        adbms_send_sync(sc, ADBLISTEN(addr, 2), 8, data2);
+
+#ifdef ADBMS_DEBUG
+       int i, reg;
+       for (reg = 1; reg < 4; reg++) {
+               adbms_send_sync(sc, ADBTALK(addr, reg), 0, NULL);
+               printf("reg %d", reg);
+               for (i = 0; i < sc->sc_msg_len; i++)
+                       printf(" %02x", sc->sc_buffer[i]);
+               printf("\n");
+       }
+#endif
 }
 
 static void
@@ -564,7 +575,8 @@
                        break;
        }
 
-       if (sc->sc_adbdev->handler_id != ADBMS_EXTENDED) {
+       if ((sc->sc_adbdev->handler_id != ADBMS_EXTENDED) &&
+           (sc->sc_adbdev->handler_id != ADBMS_TURBO)) {
                dx = ((int)(buffer[1] & 0x3f)) - ((buffer[1] & 0x40) ? 64 : 0);
                dy = ((int)(buffer[0] & 0x3f)) - ((buffer[0] & 0x40) ? 64 : 0);
        } else {
@@ -595,6 +607,9 @@
 #ifdef ADBMS_DEBUG
                printf("%d %d %08x %d\n", dx, dy, smask, shift);
 #endif
+               if (sc->sc_adbdev->handler_id == ADBMS_TURBO) {
+                       buttons = (buttons != 0) ? 1 : 0;
+               }
        }
 
        if (sc->sc_class == MSCLASS_TRACKPAD) {
@@ -806,7 +821,7 @@
                DPRINTF(" %02x", msg[i]);
        DPRINTF("\n");
        sc->sc_ops->send(sc->sc_ops->cookie, sc->sc_poll, cmd, len, msg);
-       adbms_wait(sc, 1000);
+       adbms_wait(sc, 3);
        return (sc->sc_msg_len != -1);
 }
 



Home | Main Index | Thread Index | Old Index