| 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,197 – 1991/1211/sys/src/9/pc/kbd.c:191,197 (short | long | prev | next) | ||
| 1991/1210 | outready(); outb(Cmd, 0xD1); outready(); | |
| 1991/1211 | outb(Data, 0x0); | |
| 1991/1210 | outready(); } | |
| 1991/1210/sys/src/9/pc/kbd.c:299,311 – 1991/1211/sys/src/9/pc/kbd.c:299,312 | ||
| 1991/0731 | int kbdintr0(void) | |
| 1991/0703 | { | |
| 1991/0730 |
| |
| 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; | |
| 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,349 – 1991/1211/sys/src/9/pc/kbd.c:344,349 | ||
| 1991/0822 | c &= 0x7f; if(c > sizeof kbtab){ print("unknown key %ux\n", c|keyup); | |
| 1991/1210/sys/src/9/pc/kbd.c:390,410 – 1991/1211/sys/src/9/pc/kbd.c:390,427 | ||
| 1991/0703 | c &= 0x1f; switch(lstate){ case 1: | |
| 1991/1211 | kc[0] = c; | |
| 1991/0703 | lstate = 2; | |
| 1991/0731 |
| |
| 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) 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: | |