| plan 9 kernel history: overview | file list | diff list |
1995/1216/carrera/kbd.c (diff list | history)
| 1993/0907/sys/src/9/carrera/kbd.c:152,158 – 1993/0908/sys/src/9/carrera/kbd.c:152,158 (short | long) | ||
| 1993/0907 | { int i; | |
| 1993/0908 | l *= 21; /* experimentally determined */ | |
| 1993/0907 | for(i=0; i<l; i++) ; } | |
| 1993/0907/sys/src/9/carrera/kbd.c:167,173 – 1993/0908/sys/src/9/carrera/kbd.c:167,172 | ||
| 1993/0907 | for(tries = 0; tries < 2000; tries++){ if(KBDCTL & Sobf){ | |
| 1993/0907/sys/src/9/carrera/kbd.c:193,198 – 1993/0908/sys/src/9/carrera/kbd.c:192,198 | ||
| 1993/0907 | uchar ch, code; static uchar kc[5]; static int shifted, ctrled, lstate; | |
| 1993/0908 | static int upcode; | |
| 1993/0907 | kbdwait(); code = KBDDAT; | |
| 1993/0907/sys/src/9/carrera/kbd.c:201,218 – 1993/0908/sys/src/9/carrera/kbd.c:201,224 | ||
| 1993/0907 | * key has gone up */ if(code == Up) { | |
| 1993/0908 | upcode = 1; return 0; } if(code > 0x87) return 1; if(upcode){ ch = keymap[code]; | |
| 1993/0907 | if(ch == Ctrl) ctrled = 0; else if(ch == Shift) shifted = 0; | |
| 1993/0908 | upcode = 0; | |
| 1993/0907 | return 0; } | |
| 1993/0908 | upcode = 0; | |
| 1993/0907 |
| |
| 1993/0907/sys/src/9/carrera/kbd.c:220,226 – 1993/0908/sys/src/9/carrera/kbd.c:226,231 | ||
| 1993/0907 | ch = skeymap[code]; else ch = keymap[code]; | |
| 1993/0908/sys/src/9/carrera/kbd.c:166,174 – 1993/1001/sys/src/9/carrera/kbd.c:166,173 (short | long) | ||
| 1993/0907 | int tries; for(tries = 0; tries < 2000; tries++){ | |
| 1993/1001 | if(KBDCTL & Sobf) | |
| 1993/0907 | return 1; | |
| 1993/0908/sys/src/9/carrera/kbd.c:183,188 – 1993/1001/sys/src/9/carrera/kbd.c:182,197 | ||
| 1993/0907 | if(kbdintr()) return KBDDAT; return 0; | |
| 1993/1001 | } void mouseintr(void) { uchar code; kbdwait(); code = KBDDAT; print("mouse intr %d\n", code); | |
| 1993/0907 | } int | |
| 1993/1001/sys/src/9/carrera/kbd.c:19,24 – 1993/1003/sys/src/9/carrera/kbd.c:19,25 (short | long) | ||
| 1993/0907 | Ktest= 0xAB, /* keyboard test */ Kdisable= 0xAD, /* disable keyboard */ Kenable= 0xAE, /* enable keyboard */ | |
| 1993/1003 | Kmseena= 0xA8, /* enable mouse */ | |
| 1993/0907 | Krdin= 0xC0, /* read input port */ Krdout= 0xD0, /* read output port */ Kwrout= 0xD1, /* write output port */ | |
| 1993/1001/sys/src/9/carrera/kbd.c:46,51 – 1993/1003/sys/src/9/carrera/kbd.c:47,53 | ||
| 1993/0907 | * command register bits */ Cintena= 1<<0, /* enable output interrupt */ | |
| 1993/1003 | Cmseint= 1<<1, /* enable mouse interrupt */ | |
| 1993/0907 | Csystem= 1<<2, /* set system */ Cinhibit= 1<<3, /* inhibit override */ Cdisable= 1<<4, /* disable keyboard */ | |
| 1993/1001/sys/src/9/carrera/kbd.c:187,197 – 1993/1003/sys/src/9/carrera/kbd.c:189,222 | ||
| 1993/1001 | void mouseintr(void) { | |
| 1993/1003 | uchar c; static int nb; int buttons, dx, dy; static short msg[3]; static uchar b[] = {0, 1, 4, 5, 2, 3, 6, 7, 0, 1, 2, 5, 2, 3, 6, 7 }; | |
| 1993/1001 | kbdwait(); | |
| 1993/1003 | c = KBDDAT; /* * check byte 0 for consistency */ if(nb==0 && (c&0xc8)!=0x08) return; msg[nb] = c; if(++nb == 3){ nb = 0; if(msg[0] & 0x10) msg[1] |= 0xFF00; if(msg[0] & 0x20) msg[2] |= 0xFF00; buttons = b[msg[0]&7]; dx = msg[1]; dy = -msg[2]; mousetrack(buttons, dx, dy); } | |
| 1993/0907 | } int | |
| 1993/1001/sys/src/9/carrera/kbd.c:342,347 – 1993/1003/sys/src/9/carrera/kbd.c:367,401 | ||
| 1993/0907 | } } | |
| 1993/1003 | /* * send a command to the mouse */ static int mousecmd(int cmd) { int tries; unsigned int c; c = 0; tries = 0; do{ if(tries++ > 2) break; OUTWAIT; KBDCTL = 0xD4; OUTWAIT; KBDDAT = cmd; OUTWAIT; kbdwait(); c = KBDDAT; } while(c == 0xFE || c == 0); if(c != 0xFA){ print("mouse returns %2.2ux to the %2.2ux command\n", c, cmd); return -1; } return 0; } | |
| 1993/0907 | int kbdinit(void) { | |
| 1993/1001/sys/src/9/carrera/kbd.c:387,396 – 1993/1003/sys/src/9/carrera/kbd.c:441,455 | ||
| 1993/0907 | OUTWAIT; KBDCTL = Kwrcmd; OUTWAIT; | |
| 1993/1003 | KBDDAT = Csystem | Cinhibit | Cintena | Cmseint; | |
| 1993/0907 | OUTWAIT; KBDCTL = Kenable; | |
| 1993/1003 | OUTWAIT; KBDCTL = Kmseena; | |
| 1993/0907 | empty(); | |
| 1993/1003 | mousecmd(0xEA); mousecmd(0xF4); | |
| 1993/0907 | return 1; } | |
| 1993/1003/sys/src/9/carrera/kbd.c:448,455 – 1994/0201/sys/src/9/carrera/kbd.c:448,457 (short | long) | ||
| 1993/1003 | KBDCTL = Kmseena; | |
| 1993/0907 | empty(); | |
| 1993/1003 |
| |
| 1994/0201 | mousecmd(0xEA); /* streaming */ mousecmd(0xE8); /* set resolution */ mousecmd(3); mousecmd(0xF4); /* enabled */ | |
| 1993/0907 | return 1; } | |
| 1994/0201/sys/src/9/carrera/kbd.c:10,40 – 1994/0306/sys/src/9/carrera/kbd.c:10,24 (short | long) | ||
| 1993/0907 | enum { | |
| 1994/0306 | /* controller command byte */ Cscs1= (1<<6), /* scan code set 1 */ Cmousedis= (1<<5), /* mouse disable */ Ckbddis= (1<<4), /* kbd disable */ Csf= (1<<2), /* system flag */ Cmouseint= (1<<1), /* mouse interrupt enable */ Ckbdint= (1<<0), /* kbd interrupt enable */ | |
| 1993/0907 | /* | |
| 1993/1003 |
| |
| 1993/0907 |
| |
| 1994/0201/sys/src/9/carrera/kbd.c:43,66 – 1994/0306/sys/src/9/carrera/kbd.c:27,34 | ||
| 1993/0907 | Rfail= 0xFC, /* self test failed */ Rresend= 0xFE, /* ??? */ Rovfl= 0xFF, /* input overflow */ | |
| 1994/0306 | ||
| 1993/0907 | /* | |
| 1993/1003 |
| |
| 1993/0907 |
| |
| 1994/0201/sys/src/9/carrera/kbd.c:71,82 – 1994/0306/sys/src/9/carrera/kbd.c:39,70 | ||
| 1993/0907 | Stxtimeout= 1<<5, /* transmit to kybd has timed out */ Srxtimeout= 1<<6, /* receive from kybd has timed out */ Sparity= 1<<7, /* parity on byte was even */ | |
| 1994/0306 | Spec= 0x80, PF= Spec|0x20, /* num pad function key */ View= Spec|0x00, /* view (shift window up) */ KF= Spec|0x40, /* function key */ Shift= Spec|0x60, Break= Spec|0x61, Ctrl= Spec|0x62, Latin= Spec|0x63, Caps= Spec|0x64, Num= Spec|0x65, Middle= Spec|0x66, No= 0x00, /* peter */ Home= KF|13, Up= KF|14, Pgup= KF|15, Print= KF|16, Left= View, Right= View, End= '\r', Down= View, Pgdown= View, Ins= KF|20, Del= 0x7F, | |
| 1993/0907 | }; #define KBDCTL (*(uchar*)(KeyboardIO+Keyctl)) | |
| 1994/0201/sys/src/9/carrera/kbd.c:85,153 – 1994/0306/sys/src/9/carrera/kbd.c:73,132 | ||
| 1993/0907 | #define INWAIT while(!(KBDCTL & Sobf)); kdbdly(1) #define ACKWAIT INWAIT ; if(KBDDAT != Rack) print("bad response\n"); kdbdly(1) | |
| 1994/0306 | uchar kbtab[] = | |
| 1993/0907 | { | |
| 1994/0306 | [0x00] No, 0x1b, '1', '2', '3', '4', '5', '6', [0x08] '7', '8', '9', '0', '-', '=', '\b', '\t', [0x10] 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', [0x18] 'o', 'p', '[', ']', '\n', Ctrl, 'a', 's', [0x20] 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', [0x28] '\'', '`', Shift, '\\', 'z', 'x', 'c', 'v', [0x30] 'b', 'n', 'm', ',', '.', '/', Shift, '*', [0x38] Latin, ' ', Ctrl, KF|1, KF|2, KF|3, KF|4, KF|5, [0x40] KF|6, KF|7, KF|8, KF|9, KF|10, Num, KF|12, '7', [0x48] '8', '9', '-', '4', '5', '6', '+', '1', [0x50] '2', '3', '0', '.', No, No, No, KF|11, [0x58] KF|12, No, No, No, No, No, No, No, | |
| 1993/0907 | }; | |
| 1994/0306 | uchar kbtabshift[] = { [0x00] No, 0x1b, '!', '@', '#', '$', '%', '^', [0x08] '&', '*', '(', ')', '_', '+', '\b', '\t', [0x10] 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', [0x18] 'O', 'P', '{', '}', '\n', Ctrl, 'A', 'S', [0x20] 'D', 'F', 'G', 'H', 'J', 'K', 'L', ':', [0x28] '"', '~', Shift, '|', 'Z', 'X', 'C', 'V', [0x30] 'B', 'N', 'M', '<', '>', '?', Shift, '*', [0x38] Latin, ' ', Ctrl, KF|1, KF|2, KF|3, KF|4, KF|5, [0x40] KF|6, KF|7, KF|8, KF|9, KF|10, Num, KF|12, '7', [0x48] '8', '9', '-', '4', '5', '6', '+', '1', [0x50] '2', '3', '0', '.', No, No, No, KF|11, [0x58] KF|12, No, No, No, No, No, No, No, | |
| 1993/0907 | }; | |
| 1994/0306 | uchar kbtabesc1[] = { [0x00] No, No, No, No, No, No, No, No, [0x08] No, No, No, No, No, No, No, No, [0x10] No, No, No, No, No, No, No, No, [0x18] No, No, No, No, '\n', Ctrl, No, No, [0x20] No, No, No, No, No, No, No, No, [0x28] No, No, Shift, No, No, No, No, No, [0x30] No, No, No, No, No, '/', No, Print, [0x38] Latin, No, No, No, No, No, No, No, [0x40] No, No, No, No, No, No, Break, Home, [0x48] Up, Pgup, No, Left, No, Right, No, End, [0x50] Down, Pgdown, Ins, Del, No, No, No, No, [0x58] No, No, No, No, No, No, No, No, | |
| 1993/0907 | }; | |
| 1994/0306 | static uchar ccc; | |
| 1993/0907 | void kdbdly(int l) | |
| 1994/0201/sys/src/9/carrera/kbd.c:175,191 – 1994/0306/sys/src/9/carrera/kbd.c:154,159 | ||
| 1993/0907 | return 0; } | |
| 1993/1001 |
| |
| 1994/0201/sys/src/9/carrera/kbd.c:219,280 – 1994/0306/sys/src/9/carrera/kbd.c:187,271 | ||
| 1993/1003 | } | |
| 1993/0907 | } | |
| 1994/0306 | void | |
| 1993/0907 | kbdintr(void) { int c, i, nk; | |
| 1994/0306 | static int esc1, esc2; static int caps; static int ctl; static int num; static int lstate; | |
| 1993/0907 | static uchar kc[5]; | |
| 1993/0908 |
| |
| 1994/0306 | static int shift; int keyup; | |
| 1993/0907 | kbdwait(); | |
| 1994/0306 | c = KBDDAT; | |
| 1993/0907 | /* | |
| 1994/0306 | * e0's is the first of a 2 character sequence | |
| 1993/0907 | */ | |
| 1993/0908 |
| |
| 1994/0306 | if(c == 0xe0){ esc1 = 1; return; } else if(c == 0xe1){ esc2 = 2; return; | |
| 1993/0908 | } | |
| 1994/0306 | keyup = c&0x80; c &= 0x7f; if(c > sizeof kbtab){ print("unknown key %ux\n", c|keyup); return; } | |
| 1993/0908 |
| |
| 1993/0907 |
| |
| 1993/0908 |
| |
| 1993/0907 |
| |
| 1994/0306 | if(esc1){ c = kbtabesc1[c]; esc1 = 0; | |
| 1993/0907 | } | |
| 1993/0908 |
| |
| 1994/0306 | else if(esc2){ esc2--; return; } else if(shift) c = kbtabshift[c]; else c = kbtab[c]; | |
| 1993/0907 | ||
| 1994/0306 | if(caps && c<='z' && c>='a') c += 'A' - 'a'; | |
| 1993/0907 | /* | |
| 1994/0306 | * keyup only important for shifts | |
| 1993/0907 | */ | |
| 1994/0306 | if(keyup){ switch(c){ case Shift: shift = 0; break; case Ctrl: ctl = 0; break; } return; } | |
| 1993/0907 | /* * normal character */ | |
| 1994/0306 | if(!(c & Spec)){ if(ctl) c &= 0x1f; | |
| 1993/0907 | switch(lstate){ case 1: | |
| 1994/0306 | kc[0] = c; | |
| 1993/0907 | lstate = 2; | |
| 1994/0306 | if(c == 'X') | |
| 1993/0907 | lstate = 3; break; case 2: | |
| 1994/0306 | kc[1] = c; | |
| 1993/0907 | c = latin1(kc); nk = 2; putit: | |
| 1994/0201/sys/src/9/carrera/kbd.c:281,354 – 1994/0306/sys/src/9/carrera/kbd.c:272,323 | ||
| 1993/0907 | lstate = 0; if(c != -1) kbdputc(kbdq, c); | |
| 1994/0306 | else for(i=0; i<nk; i++) kbdputc(kbdq, kc[i]); | |
| 1993/0907 | break; case 3: case 4: case 5: | |
| 1994/0306 | kc[lstate-2] = c; | |
| 1993/0907 | lstate++; break; case 6: | |
| 1994/0306 | kc[4] = c; | |
| 1993/0907 | c = unicode(kc); nk = 5; goto putit; default: | |
| 1994/0306 | kbdputc(kbdq, c); | |
| 1993/0907 | break; } | |
| 1994/0306 | return; | |
| 1993/0907 | } | |
| 1994/0306 | else { switch(c){ case Caps: caps ^= 1; return; case Num: num ^= 1; return; case Shift: shift = 1; return; case Latin: lstate = 1; return; case Ctrl: ctl = 1; return; } | |
| 1993/0907 | } | |
| 1994/0306 | kbdputc(kbdq, c); | |
| 1993/0907 | } void lights(int l) { | |
| 1994/0306 | USED(l); | |
| 1993/0907 | } static void | |
| 1994/0201/sys/src/9/carrera/kbd.c:410,452 – 1994/0306/sys/src/9/carrera/kbd.c:379,402 | ||
| 1993/0907 | } | |
| 1994/0306 | /* wait for a quiescent controller */ | |
| 1993/0907 | OUTWAIT; | |
| 1994/0306 | KBDCTL = 0x20; if(kbdwait() == 0) { print("kbdinit: can't read ccc\n"); ccc = 0; } else ccc = KBDDAT; | |
| 1993/0907 |
| |
| 1994/0306 | /* enable kbd xfers and interrupts */ ccc &= ~Ckbddis; ccc |= Csf | Ckbdint | Cscs1 | Cmouseint; | |
| 1993/0907 |
| |
| 1994/0306 | KBDCTL = 0x60; | |
| 1993/0907 | OUTWAIT; | |
| 1993/1003 |
| |
| 1994/0306 | KBDDAT = ccc; | |
| 1993/0907 | OUTWAIT; | |
| 1993/1003 |
| |
| 1993/0907 |
| |
| 1993/1003 | ||
| 1994/0201 | mousecmd(0xEA); /* streaming */ mousecmd(0xE8); /* set resolution */ | |
| 1994/0306/sys/src/9/carrera/kbd.c:369,375 – 1994/0415/sys/src/9/carrera/kbd.c:369,375 (short | long) | ||
| 1993/0907 | kbdinit(void) { int i; | |
| 1994/0415 | return; | |
| 1993/0907 | /* * empty the buffer */ | |
| 1994/0415/sys/src/9/carrera/kbd.c:369,375 – 1994/0423/sys/src/9/carrera/kbd.c:369,375 (short | long) | ||
| 1993/0907 | kbdinit(void) { int i; | |
| 1994/0415 |
| |
| 1994/0423 | ||
| 1993/0907 | /* * empty the buffer */ | |
| 1994/0423/sys/src/9/carrera/kbd.c:369,375 – 1994/0427/sys/src/9/carrera/kbd.c:369,375 (short | long) | ||
| 1993/0907 | kbdinit(void) { int i; | |
| 1994/0423 | ||
| 1994/0427 | return 0; | |
| 1993/0907 | /* * empty the buffer */ | |
| 1994/0427/sys/src/9/carrera/kbd.c:369,375 – 1994/0428/sys/src/9/carrera/kbd.c:369,375 (short | long) | ||
| 1993/0907 | kbdinit(void) { int i; | |
| 1994/0427 |
| |
| 1994/0428 | ||
| 1993/0907 | /* * empty the buffer */ | |
| 1994/0428/sys/src/9/carrera/kbd.c:190,201 – 1994/0503/sys/src/9/carrera/kbd.c:190,201 (short | long) | ||
| 1994/0306 | void | |
| 1993/0907 | kbdintr(void) { | |
| 1994/0503 | int c, i; | |
| 1994/0306 | static int esc1, esc2; static int caps; static int ctl; static int num; | |
| 1994/0503 | static int collecting, nk; | |
| 1993/0907 | static uchar kc[5]; | |
| 1994/0306 | static int shift; int keyup; | |
| 1994/0428/sys/src/9/carrera/kbd.c:257,295 – 1994/0503/sys/src/9/carrera/kbd.c:257,277 | ||
| 1994/0306 | if(!(c & Spec)){ if(ctl) c &= 0x1f; | |
| 1993/0907 |
| |
| 1994/0306 |
| |
| 1993/0907 |
| |
| 1994/0306 |
| |
| 1993/0907 |
| |
| 1994/0306 |
| |
| 1993/0907 |
| |
| 1994/0306 |
| |
| 1993/0907 |
| |
| 1994/0306 |
| |
| 1993/0907 |
| |
| 1994/0306 |
| |
| 1993/0907 |
| |
| 1994/0503 | if(!collecting){ | |
| 1994/0306 | kbdputc(kbdq, c); | |
| 1993/0907 |
| |
| 1994/0503 | return; | |
| 1993/0907 | } | |
| 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; | |
| 1994/0306 | return; | |
| 1993/0907 | } | |
| 1994/0306 | else { | |
| 1994/0428/sys/src/9/carrera/kbd.c:304,310 – 1994/0503/sys/src/9/carrera/kbd.c:286,293 | ||
| 1994/0306 | shift = 1; return; case Latin: | |
| 1994/0503 | collecting = 1; nk = 0; | |
| 1994/0306 | return; case Ctrl: ctl = 1; | |
| 1994/0428/sys/src/9/carrera/kbd.c:369,374 – 1994/0503/sys/src/9/carrera/kbd.c:352,358 | ||
| 1993/0907 | kbdinit(void) { int i; | |
| 1994/0503 | return 0; | |
| 1994/0428 | ||
| 1993/0907 | /* * empty the buffer | |
| 1994/0503/sys/src/9/carrera/kbd.c:352,358 – 1994/0504/sys/src/9/carrera/kbd.c:352,357 (short | long) | ||
| 1993/0907 | kbdinit(void) { int i; | |
| 1994/0503 |
| |
| 1994/0428 | ||
| 1993/0907 | /* * empty the buffer | |
| 1994/0504/sys/src/9/carrera/kbd.c:353,358 – 1994/0621/sys/src/9/carrera/kbd.c:353,360 (short | long) | ||
| 1993/0907 | { int i; | |
| 1994/0428 | ||
| 1994/0621 | kbdq = qopen(4*1024, 0, 0, 0); | |
| 1993/0907 | /* * empty the buffer */ | |
| 1994/0621/sys/src/9/carrera/kbd.c:354,359 – 1994/0902/sys/src/9/carrera/kbd.c:354,360 (short | long) | ||
| 1993/0907 | int i; | |
| 1994/0428 | ||
| 1994/0621 | kbdq = qopen(4*1024, 0, 0, 0); | |
| 1994/0902 | qnoblock(kbdq, 1); | |
| 1994/0621 | ||
| 1993/0907 | /* * empty the buffer | |
| 1994/0902/sys/src/9/carrera/kbd.c:391,393 – 1994/0910/sys/src/9/carrera/kbd.c:391,409 (short | long) | ||
| 1993/0907 | return 1; } | |
| 1994/0910 | void mousectl(char *cmd) { int s; if(strncmp(cmd, "reset", 5) == 0){ s = splhi(); mousecmd(0xF6); mousecmd(0xEA); /* streaming */ mousecmd(0xE8); /* set resolution */ mousecmd(3); mousecmd(0xF4); /* enabled */ splx(s); } } | |
| 1994/0910/sys/src/9/carrera/kbd.c:406,409 – 1995/0207/sys/src/9/carrera/kbd.c:406,411 (short | long) | ||
| 1994/0910 | mousecmd(0xF4); /* enabled */ splx(s); } | |
| 1995/0207 | else error(Ebadctl); | |
| 1994/0910 | } | |
| 1995/0207/sys/src/9/carrera/kbd.c:342,348 – 1995/1101/sys/src/9/carrera/kbd.c:342,348 (short | long) | ||
| 1993/1003 | c = KBDDAT; } while(c == 0xFE || c == 0); if(c != 0xFA){ | |
| 1995/1101 | /*print("mouse returns %2.2ux to the %2.2ux command\n", c, cmd);/**/ | |
| 1993/1003 | return -1; } return 0; | |
| 1995/1101/sys/src/9/carrera/kbd.c:406,411 – 1995/1216/sys/src/9/carrera/kbd.c:406,416 (short | long) | ||
| 1994/0910 | mousecmd(0xF4); /* enabled */ splx(s); } | |
| 1995/1216 | else if(strcmp(cmd, "accelerated") == 0){ s = splhi(); mousecmd(0xE7); splx(s); } | |
| 1995/0207 | else error(Ebadctl); | |
| 1994/0910 | } | |
| 1995/1216/sys/src/9/carrera/kbd.c:6,12 – 1996/0223/sys/src/9/carrera/kbd.c:6,11 (short | long) | ||
| 1993/0907 | #include "io.h" #include "../port/error.h" | |
| 1996/0223/sys/src/9/carrera/kbd.c:6,11 – 1997/0327/sys/src/9/carrera/kbd.c:6,13 (short | long) | ||
| 1993/0907 | #include "io.h" #include "../port/error.h" | |
| 1997/0327 | #include <libg.h> #include "screen.h" | |
| 1993/0907 | enum { | |
| 1997/0327/sys/src/9/carrera/kbd.c:6,12 – 1997/1101/sys/src/9/carrera/kbd.c:6,13 (short | long) | ||
| 1993/0907 | #include "io.h" #include "../port/error.h" | |
| 1997/0327 |
| |
| 1997/1101 | #define Image IMAGE #include <draw.h> | |
| 1997/0327 | #include "screen.h" | |
| 1993/0907 | enum | |
| 1997/1101/sys/src/9/carrera/kbd.c:356,361 – 1997/1105/sys/src/9/carrera/kbd.c:356,363 (short | long) | ||
| 1993/0907 | int i; | |
| 1994/0428 | ||
| 1994/0621 | kbdq = qopen(4*1024, 0, 0, 0); | |
| 1997/1105 | if(kbdq == nil) panic("kbdinit"); | |
| 1994/0902 | qnoblock(kbdq, 1); | |
| 1994/0621 | ||
| 1993/0907 | /* | |
| 1997/1105/sys/src/9/carrera/kbd.c:397,407 – 1998/0417/sys/src/9/carrera/kbd.c:397,407 (short | long) | ||
|
Change mousectl to accept list of fields.
rsc Fri Mar 4 12:44:25 2005 | ||
| 1993/0907 | } | |
| 1994/0910 | void | |
| 1998/0417 | mousectl(char* field[], int) | |
| 1994/0910 | { int s; | |
| 1998/0417 | if(strncmp(field[0], "reset", 5) == 0){ | |
| 1994/0910 | s = splhi(); mousecmd(0xF6); mousecmd(0xEA); /* streaming */ | |
| 1997/1105/sys/src/9/carrera/kbd.c:410,416 – 1998/0417/sys/src/9/carrera/kbd.c:410,416 | ||
| 1994/0910 | mousecmd(0xF4); /* enabled */ splx(s); } | |
| 1995/1216 |
| |
| 1998/0417 | else if(strcmp(field[0], "accelerated") == 0){ | |
| 1995/1216 | s = splhi(); mousecmd(0xE7); splx(s); | |
| 1998/0417/sys/src/9/carrera/kbd.c:8,13 – 1999/0119/sys/src/9/carrera/kbd.c:8,14 (short | long) | ||
| 1993/0907 | ||
| 1997/1101 | #define Image IMAGE #include <draw.h> | |
| 1999/0119 | #include <cursor.h> | |
| 1997/0327 | #include "screen.h" | |
| 1993/0907 | enum | |
| 1999/0119/sys/src/9/carrera/kbd.c:47,53 – 1999/1005/sys/src/9/carrera/kbd.c:47,53 (short | long) | ||
| 1994/0306 | PF= Spec|0x20, /* num pad function key */ View= Spec|0x00, /* view (shift window up) */ | |
| 1999/1005 | KF= 0xF000, /* function key (begin Unicode private space) */ | |
| 1994/0306 | Shift= Spec|0x60, Break= Spec|0x61, Ctrl= Spec|0x62, | |
| 1999/0119/sys/src/9/carrera/kbd.c:76,82 – 1999/1005/sys/src/9/carrera/kbd.c:76,82 | ||
| 1993/0907 | #define INWAIT while(!(KBDCTL & Sobf)); kdbdly(1) #define ACKWAIT INWAIT ; if(KBDDAT != Rack) print("bad response\n"); kdbdly(1) | |
| 1994/0306 |
| |
| 1999/1005 | Rune kbtab[] = | |
| 1993/0907 | { | |
| 1994/0306 | [0x00] No, 0x1b, '1', '2', '3', '4', '5', '6', [0x08] '7', '8', '9', '0', '-', '=', '\b', '\t', | |
| 1999/0119/sys/src/9/carrera/kbd.c:92,98 – 1999/1005/sys/src/9/carrera/kbd.c:92,98 | ||
| 1994/0306 | [0x58] KF|12, No, No, No, No, No, No, No, | |
| 1993/0907 | }; | |
| 1994/0306 |
| |
| 1999/1005 | Rune kbtabshift[] = | |
| 1994/0306 | { [0x00] No, 0x1b, '!', '@', '#', '$', '%', '^', [0x08] '&', '*', '(', ')', '_', '+', '\b', '\t', | |
| 1999/0119/sys/src/9/carrera/kbd.c:108,114 – 1999/1005/sys/src/9/carrera/kbd.c:108,114 | ||
| 1994/0306 | [0x58] KF|12, No, No, No, No, No, No, No, | |
| 1993/0907 | }; | |
| 1994/0306 |
| |
| 1999/1005 | Rune kbtabesc1[] = | |
| 1994/0306 | { [0x00] No, No, No, No, No, No, No, No, [0x08] No, No, No, No, No, No, No, No, | |
| 1999/0119/sys/src/9/carrera/kbd.c:199,205 – 1999/1005/sys/src/9/carrera/kbd.c:199,205 | ||
| 1994/0306 | static int ctl; static int num; | |
| 1994/0503 | static int collecting, nk; | |
| 1993/0907 |
| |
| 1999/1005 | static Rune kc[5]; | |
| 1994/0306 | static int shift; int keyup; | |
| 1993/0907 | ||
| 1999/1005/sys/src/9/carrera/kbd.c:61,71 – 1999/1104/sys/src/9/carrera/kbd.c:61,71 (short | long) | ||
| 1994/0306 | Up= KF|14, Pgup= KF|15, Print= KF|16, | |
| 1999/1104 | Left= KF|17, Right= KF|18, | |
| 1994/0306 | End= '\r', Down= View, | |
| 1999/1104 | Pgdown= KF|19, | |
| 1994/0306 | Ins= KF|20, Del= 0x7F, | |
| 1993/0907 | }; | |
| Too many diffs (26 > 25). Stopping. | ||