nusb/kb: add support for evoluent vertical mouse
This commit is contained in:
parent
8b7897b57a
commit
3f25f69718
1 changed files with 23 additions and 9 deletions
|
@ -222,11 +222,18 @@ sethipri(void)
|
||||||
close(fd);
|
close(fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static short
|
||||||
|
s16(void *p)
|
||||||
|
{
|
||||||
|
uchar *b = p;
|
||||||
|
return b[0] | b[1]<<8;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ptrwork(void* a)
|
ptrwork(void* a)
|
||||||
{
|
{
|
||||||
static char maptab[] = {0x0, 0x1, 0x4, 0x5, 0x2, 0x3, 0x6, 0x7};
|
static char maptab[] = {0x0, 0x1, 0x4, 0x5, 0x2, 0x3, 0x6, 0x7};
|
||||||
int x, y, b, c, nerrs, skiplead;
|
int x, y, z, b, c, nerrs, skiplead;
|
||||||
char err[ERRMAX], buf[64];
|
char err[ERRMAX], buf[64];
|
||||||
char mbuf[80];
|
char mbuf[80];
|
||||||
KDev* f = a;
|
KDev* f = a;
|
||||||
|
@ -272,20 +279,27 @@ ptrwork(void* a)
|
||||||
skiplead = 0;
|
skiplead = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(f->accel){
|
z = 0;
|
||||||
x = scale(f, buf[1]);
|
if(c == 6 && f->dev->usb->vid == 0x1a7c){
|
||||||
y = scale(f, buf[2]);
|
/* Evoluent vertical mouse */
|
||||||
}else{
|
x = s16(&buf[1]);
|
||||||
|
y = s16(&buf[3]);
|
||||||
|
z = buf[5];
|
||||||
|
} else {
|
||||||
x = buf[1];
|
x = buf[1];
|
||||||
y = buf[2];
|
y = buf[2];
|
||||||
|
if(c > 3)
|
||||||
|
z = buf[3];
|
||||||
|
}
|
||||||
|
if(f->accel){
|
||||||
|
x = scale(f, x);
|
||||||
|
y = scale(f, y);
|
||||||
}
|
}
|
||||||
b = maptab[buf[0] & 0x7];
|
b = maptab[buf[0] & 0x7];
|
||||||
if(c > 3 && buf[3] > 0){ /* up */
|
if(z > 0) /* up */
|
||||||
b |= 0x08;
|
b |= 0x08;
|
||||||
}
|
if(z < 0) /* down */
|
||||||
if(c > 3 && buf[3] < 0){ /* down */
|
|
||||||
b |= 0x10;
|
b |= 0x10;
|
||||||
}
|
|
||||||
if(kbdebug > 1)
|
if(kbdebug > 1)
|
||||||
fprint(2, "%s: m%11d %11d %11d\n", argv0, x, y, b);
|
fprint(2, "%s: m%11d %11d %11d\n", argv0, x, y, b);
|
||||||
seprint(mbuf, mbuf+sizeof(mbuf), "m%11d %11d %11d", x, y,b);
|
seprint(mbuf, mbuf+sizeof(mbuf), "m%11d %11d %11d", x, y,b);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue