plan 9 kernel history: overview | file list | diff list

2001/1121/pc/mouse.c (diff list | history)

2001/1121/sys/src/9/pc/mouse.c:21,262002/0503/sys/src/9/pc/mouse.c:21,28 (short | long | prev)
1997/1101    
	Mouseserial=	1, 
	MousePS2=	2, 
}; 
2002/0503    
 
static QLock mousectlqlock; 
1997/1101    
static int mousetype; 
2000/1012    
static int intellimouse; 
static int packetsize; 
2001/1121/sys/src/9/pc/mouse.c:55,882002/0503/sys/src/9/pc/mouse.c:57,62
2001/1120    
}; 
 
1997/0327    
/* 
 *  setup a serial mouse 
 */ 
static void 
serialmouse(int port, char *type, int setspeed) 
{ 
2001/0527    
#ifdef notdef 
1997/0327    
	if(mousetype == Mouseserial) 
		error(Emouseset); 
                 
	if(port >= 3 || port < 0) 
		error(Ebadarg); 
                 
	/* set up /dev/eia? as the mouse */ 
	if(setspeed) 
		setspeed = 1200; 
	if(type && *type == 'M') 
2001/0527    
		uartspecial(port, setspeed, 0, 0, m3mouseputc); 
1997/0327    
	else 
2001/0527    
		uartspecial(port, setspeed, 0, 0, mouseputc); 
1997/0327    
	mousetype = Mouseserial; 
2000/1012    
	packetsize = 3; 
2001/0527    
#else 
	error("serial mouse not supported yet"); 
	USED(port, type, setspeed); 
#endif /* notdef */ 
1997/0327    
} 
                 
/* 
 *  ps/2 mouse message is three bytes 
 * 
 *	byte 0 -	0 0 SDY SDX 1 M R L 
2001/1121/sys/src/9/pc/mouse.c:275,2802002/0503/sys/src/9/pc/mouse.c:249,260
1997/0327    
{ 
2001/1120    
	Cmdtab *ct; 
 
2002/0503    
	qlock(&mousectlqlock); 
	if(waserror()){ 
		qunlock(&mousectlqlock); 
		nexterror(); 
	} 
 
2001/1120    
	ct = lookupcmd(cb, mousectlmsg, nelem(mousectlmsg)); 
	switch(ct->index){ 
	case CMaccelerated: 
2001/1121/sys/src/9/pc/mouse.c:309,3262002/0503/sys/src/9/pc/mouse.c:289,304
1999/0225    
			setintellimouse(); 
2001/1120    
		break; 
	case CMserial: 
		switch(cb->nf){ 
		case 1: 
			serialmouse(atoi(cb->f[0]+6), 0, 1); 
			break; 
		case 2: 
			serialmouse(atoi(cb->f[1]), 0, 0); 
			break; 
		case 3: 
		default: 
			serialmouse(atoi(cb->f[1]), cb->f[2], 0); 
			break; 
		} 
2002/0503    
		if(mousetype == Mouseserial) 
			error(Emouseset); 
 
		if(cb->nf > 2 && *cb->f[2] == 'M') 
			i8250mouse(cb->f[1], m3mouseputc, 0); 
		else 
			i8250mouse(cb->f[1], mouseputc, cb->nf == 1); 
 
		mousetype = Mouseserial; 
		packetsize = 3; 
2001/1120    
		break; 
2001/1121    
	case CMhwaccel: 
		if(strcmp(cb->f[1], "on")==0) 
2001/1121/sys/src/9/pc/mouse.c:330,3332002/0503/sys/src/9/pc/mouse.c:308,314
2001/1121    
		else 
			cmderror(cb, "bad mouse control message"); 
1998/0417    
	} 
2002/0503    
 
	qunlock(&mousectlqlock); 
	poperror(); 
1997/0327    
} 


source code copyright © 1990-2005 Lucent Technologies; see license
Plan 9 distribution
comments to russ cox (rsc@swtch.com)