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

1994/0503/pc/kbd.c (diff list | history)

1994/0413/sys/src/9/pc/kbd.c:359,3701994/0503/sys/src/9/pc/kbd.c:359,370 (short | long | prev | next)
1992/1017    
static void 
1993/1124    
kbdintr(Ureg *ur, void *arg) 
1992/0904    
{ 
1992/0711    
	int s, c, i, nk; 
1994/0503    
	int s, c, i; 
1991/0703    
	static int esc1, esc2; 
	static int caps; 
	static int ctl; 
	static int num; 
1991/1211    
	static int lstate; 
1994/0503    
	static int collecting, nk; 
1991/1211    
	static uchar kc[5]; 
1991/0703    
	int keyup; 
1991/0702    
 
1994/0413/sys/src/9/pc/kbd.c:444,4821994/0503/sys/src/9/pc/kbd.c:444,464
1991/0703    
	if(!(c & Spec)){ 
		if(ctl) 
			c &= 0x1f; 
		switch(lstate){ 
		case 1: 
1991/1211    
			kc[0] = c; 
1991/0703    
			lstate = 2; 
1991/1211    
			if(c == 'X') 
				lstate = 3; 
			break; 
1991/0703    
		case 2: 
1991/1211    
			kc[1] = c; 
			c = latin1(kc); 
			nk = 2; 
		putit: 
1991/0703    
			lstate = 0; 
1991/1211    
			if(c != -1) 
1993/1113    
				kbdputc(kbdq, c); 
1991/1211    
			else for(i=0; i<nk; i++) 
1993/1113    
				kbdputc(kbdq, kc[i]); 
1991/1211    
			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: 
1994/0503    
		if(!collecting){ 
1993/1113    
			kbdputc(kbdq, c); 
1991/0703    
			break; 
1994/0503    
			return; 
1991/0703    
		} 
1994/0503    
		kc[nk++] = c; 
		c = latin1(kc, nk); 
		if(c < -1)	/* need more keystrokes */ 
			return; 
		if(c != -1)	/* valid sequence */ 
			kbdputc(kbdq, c); 
		else	/* dump characters */ 
			for(i=0; i<nk; i++) 
				kbdputc(kbdq, kc[i]); 
		nk = 0; 
		collecting = 0; 
1993/1124    
		return; 
1991/0703    
	} else { 
		switch(c){ 
1994/0413/sys/src/9/pc/kbd.c:490,4961994/0503/sys/src/9/pc/kbd.c:472,479
1992/1020    
			mouseshifted = shift = 1; 
1993/1124    
			return; 
1991/0703    
		case Latin: 
			lstate = 1; 
1994/0503    
			collecting = 1; 
			nk = 0; 
1993/1124    
			return; 
1991/0703    
		case Ctrl: 
			ctl = 1; 


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