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

1993/1008/port/devmouse.c (diff list | history)

1993/1006/sys/src/9/port/devmouse.c:251,2571993/1008/sys/src/9/port/devmouse.c:251,257 (short | long | prev | next)
1993/1006    
long 
mouseread(Chan *c, void *va, long n, ulong offset) 
{ 
	uchar *p; 
1993/1008    
	char buf[4*12+1]; 
1993/1006    
 
	USED(offset); 
	if(c->qid.path & CHDIR) 
1993/1006/sys/src/9/port/devmouse.c:258,2841993/1008/sys/src/9/port/devmouse.c:258,275
1993/1006    
		return devdirread(c, va, n, mousedir, NMOUSE, devgen); 
 
	if(c->qid.path == Qmouse){ 
		/* 
		 * mouse: 
		 *	'm'		1 
		 *	buttons		1 
		 * 	point		8 
		 * 	msec		4 
		 */ 
		if(n < 14) 
			error(Eshort); 
		while(mousechanged(0) == 0) 
			sleep(&mouse.r, mousechanged, 0); 
		lock(&cursor); 
		p = va; 
		p[0] = 'm'; 
		p[1] = mouse.buttons; 
		BPLONG(p+2, mouse.xy.x); 
		BPLONG(p+6, mouse.xy.y); 
		BPLONG(p+10, TK2MS(MACHP(0)->ticks)); 
1993/1008    
		sprint(buf, "%11d %11d %11d %11d", 
			mouse.xy.x, mouse.xy.y, mouse.buttons, 
			TK2MS(MACHP(0)->ticks)); 
1993/1006    
		mouse.lastcounter = mouse.counter; 
		unlock(&cursor); 
		return 14; 
1993/1008    
		if(n > 4*12) 
			n = 4*12; 
		memmove(va, buf, n); 
		return n; 
1993/1006    
	} 
	return 0; 
} 
1993/1006/sys/src/9/port/devmouse.c:286,2921993/1008/sys/src/9/port/devmouse.c:277,283
1993/1006    
long 
mousewrite(Chan *c, void *va, long n, ulong offset) 
{ 
	uchar *p; 
1993/1008    
	char *p; 
1993/1006    
	Point pt; 
	char buf[64]; 
 
1993/1006/sys/src/9/port/devmouse.c:305,3161993/1008/sys/src/9/port/devmouse.c:296,311
1993/1006    
		return n; 
 
	case Qmouse: 
		if(n != 9) 
1993/1008    
		if(n > sizeof buf-1) 
			n = sizeof buf -1; 
		memmove(buf, va, n); 
		buf[n] = 0; 
		p = 0; 
		pt.x = strtoul(buf, &p, 0); 
		if(p == 0) 
1993/1006    
			error(Eshort); 
1993/1008    
		pt.y = strtoul(p, 0, 0); 
1993/1006    
		qlock(&mouse); 
		p = va; 
		pt.x = BGLONG(p+1); 
		pt.y = BGLONG(p+5); 
		if(ptinrect(pt, gscreen.r)){ 
			mouse.xy = pt; 
			mouse.redraw = 1; 


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