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

1991/1211/pc/kbd.c (diff list | history)

1991/1210/sys/src/9/pc/kbd.c:191,1971991/1211/sys/src/9/pc/kbd.c:191,197 (short | long | prev | next)
1991/1210    
	outready(); 
	outb(Cmd, 0xD1); 
	outready(); 
	outb(Data, 0xDE); 
1991/1211    
	outb(Data, 0x0); 
1991/1210    
	outready(); 
} 
 
1991/1210/sys/src/9/pc/kbd.c:299,3111991/1211/sys/src/9/pc/kbd.c:299,312
1991/0731    
int 
kbdintr0(void) 
1991/0703    
{ 
1991/0730    
	int s, c, nc; 
1991/1211    
	int s, c, i, nk, nc; 
1991/0703    
	static int esc1, esc2; 
	static int shift; 
	static int caps; 
	static int ctl; 
	static int num; 
	static int lstate, k1, k2; 
1991/1211    
	static int lstate; 
	static uchar kc[5]; 
1991/0703    
	int keyup; 
1991/0702    
 
1991/0703    
	/* 
1991/1210/sys/src/9/pc/kbd.c:343,3491991/1211/sys/src/9/pc/kbd.c:344,349
1991/0822    
	c &= 0x7f; 
	if(c > sizeof kbtab){ 
		print("unknown key %ux\n", c|keyup); 
		kbdputc(&kbdq, k1); 
		return 0; 
	} 
 
1991/1210/sys/src/9/pc/kbd.c:390,4101991/1211/sys/src/9/pc/kbd.c:390,427
1991/0703    
			c &= 0x1f; 
		switch(lstate){ 
		case 1: 
			k1 = c; 
1991/1211    
			kc[0] = c; 
1991/0703    
			lstate = 2; 
1991/0731    
			return 0; 
1991/1211    
			if(c == 'X') 
				lstate = 3; 
			break; 
1991/0703    
		case 2: 
			k2 = c; 
1991/1211    
			kc[1] = c; 
			c = latin1(kc); 
			nk = 2; 
		putit: 
1991/0703    
			lstate = 0; 
			c = latin1(k1, k2); 
			if(c == 0){ 
				kbdputc(&kbdq, k1); 
				c = k2; 
			} 
			/* fall through */ 
1991/1211    
			if(c != -1) 
				kbdputc(&kbdq, c); 
			else for(i=0; i<nk; i++) 
				kbdputc(&kbdq, kc[i]); 
			break; 
		case 3: 
		case 4: 
		case 5: 
			kc[lstate-2] = c; 
			lstate++; 
			break; 
		case 6: 
			kc[4] = c; 
			c = unicode(kc); 
			nk = 5; 
			goto putit; 
1991/0703    
		default: 
1991/1211    
			kbdputc(&kbdq, c); 
1991/0703    
			break; 
		} 
1991/1211    
		return 0; 
1991/0703    
	} else { 
		switch(c){ 
		case Caps: 


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