| plan 9 kernel history: overview | file list | diff list |
1991/0706/pc/kbd.c (diff list | history)
| 1991/0705/sys/src/9/pc/kbd.c:1,9 – 1991/0706/sys/src/9/pc/kbd.c:1,9 (short | long | prev | next) | ||
| 1991/0702 | #include "u.h" #include "lib.h" | |
| 1991/0706 | #include "mem.h" | |
| 1991/0702 | #include "dat.h" #include "fns.h" | |
| 1991/0703 | #include "io.h" | |
| 1991/0702 | enum { Data= 0x60, /* data port */ | |
| 1991/0705/sys/src/9/pc/kbd.c:241,268 – 1991/0706/sys/src/9/pc/kbd.c:241,251 | ||
| 1991/0703 | setvec(Kbdvec, kbdintr, SEGIG); } | |
| 1991/0702 |
| |
| 1991/0703 |
| |
| 1991/0702 |
| |
| 1991/0703 |
| |
| 1991/0706 | if(c==0x10) panic("^p"); | |
| 1991/0703 | putc(q, c); } | |
| 1991/0705/sys/src/9/pc/kbd.c:270,276 – 1991/0706/sys/src/9/pc/kbd.c:253,259 | ||
| 1991/0703 | * keyboard interrupt */ void | |
| 1991/0706 | kbdintr(Ureg *ur) | |
| 1991/0703 | { int c, nc; static int esc1, esc2; | |
| 1991/0705/sys/src/9/pc/kbd.c:291,297 – 1991/0706/sys/src/9/pc/kbd.c:274,280 | ||
| 1991/0703 | if(c > sizeof kbtab){ print("unknown key %ux\n", c|keyup); kbdputc(&kbdq, k1); | |
| 1991/0706 | return; | |
| 1991/0703 | } /* | |
| 1991/0705/sys/src/9/pc/kbd.c:299,308 – 1991/0706/sys/src/9/pc/kbd.c:282,291 | ||
| 1991/0703 | */ if(c == 0xe0){ esc1 = 1; | |
| 1991/0706 | return; | |
| 1991/0703 | } else if(c == 0xe1){ esc2 = 2; | |
| 1991/0706 | return; | |
| 1991/0703 | } if(esc1){ | |
| 1991/0705/sys/src/9/pc/kbd.c:310,316 – 1991/0706/sys/src/9/pc/kbd.c:293,299 | ||
| 1991/0703 | esc1 = 0; } else if(esc2){ esc2--; | |
| 1991/0706 | return; | |
| 1991/0703 | } else if(shift) c = kbtabshift[c]; else | |
| 1991/0705/sys/src/9/pc/kbd.c:331,337 – 1991/0706/sys/src/9/pc/kbd.c:314,320 | ||
| 1991/0703 | ctl = 0; break; } | |
| 1991/0706 | return; | |
| 1991/0703 | } /* | |
| 1991/0705/sys/src/9/pc/kbd.c:361,383 – 1991/0706/sys/src/9/pc/kbd.c:344,364 | ||
| 1991/0703 | switch(c){ case Caps: caps ^= 1; | |
| 1991/0706 | return; | |
| 1991/0703 | case Num: num ^= 1; | |
| 1991/0706 | return; | |
| 1991/0703 | case Shift: shift = 1; | |
| 1991/0706 | return; | |
| 1991/0703 | case Latin: lstate = 1; | |
| 1991/0706 | return; | |
| 1991/0703 | case Ctrl: ctl = 1; | |
| 1991/0706 | return; | |
| 1991/0703 | } } kbdputc(&kbdq, c); | |
| 1991/0705 |
| |
| 1991/0703 | return; } | |