|
|
1.1 ! root 1: #include "curses.ext" ! 2: /* @(#) initkeypad.c: 1.1 10/15/83 (1.13 8/20/82) */ ! 3: ! 4: #ifdef KEYPAD ! 5: static struct map *_addone(); ! 6: /* ! 7: * Make up the needed array of map structures for dealing with the keypad. ! 8: */ ! 9: #define MAXKEYS 50 /* number of keys we understand */ ! 10: ! 11: struct map * ! 12: _init_keypad() ! 13: { ! 14: struct map *r, *p; ! 15: ! 16: r = (struct map *) calloc(MAXKEYS, sizeof (struct map)); ! 17: p = r; ! 18: ! 19: /* If down arrow key sends \n, don't map it. */ ! 20: if (key_down && strcmp(key_down, "\n")) ! 21: p = _addone(p, key_down, KEY_DOWN, "down"); ! 22: p = _addone(p, key_up, KEY_UP, "up"); ! 23: /* If left arrow key sends \b, don't map it. */ ! 24: if (key_left && strcmp(key_left, "\b")) ! 25: p = _addone(p, key_left, KEY_LEFT, "left"); ! 26: p = _addone(p, key_right, KEY_RIGHT, "right"); ! 27: p = _addone(p, key_home, KEY_HOME, "home"); ! 28: /* If backspace key sends \b, don't map it. */ ! 29: if (key_backspace && strcmp(key_backspace, "\b")) ! 30: p = _addone(p, key_backspace, KEY_BACKSPACE, "backspace"); ! 31: p = _addone(p, key_f0, KEY_F(0), lab_f0?lab_f0:"f0"); ! 32: p = _addone(p, key_f1, KEY_F(1), lab_f1?lab_f1:"f1"); ! 33: p = _addone(p, key_f2, KEY_F(2), lab_f2?lab_f2:"f2"); ! 34: p = _addone(p, key_f3, KEY_F(3), lab_f3?lab_f3:"f3"); ! 35: p = _addone(p, key_f4, KEY_F(4), lab_f4?lab_f4:"f4"); ! 36: p = _addone(p, key_f5, KEY_F(5), lab_f5?lab_f5:"f5"); ! 37: p = _addone(p, key_f6, KEY_F(6), lab_f6?lab_f6:"f6"); ! 38: p = _addone(p, key_f7, KEY_F(7), lab_f7?lab_f7:"f7"); ! 39: p = _addone(p, key_f8, KEY_F(8), lab_f8?lab_f8:"f8"); ! 40: p = _addone(p, key_f9, KEY_F(9), lab_f9?lab_f9:"f9"); ! 41: p = _addone(p, key_dl, KEY_DL, "dl"); ! 42: p = _addone(p, key_il, KEY_IL, "il"); ! 43: p = _addone(p, key_dc, KEY_DC, "dc"); ! 44: p = _addone(p, key_ic, KEY_IC, "ic"); ! 45: p = _addone(p, key_eic, KEY_EIC, "eic"); ! 46: p = _addone(p, key_clear, KEY_CLEAR, "clear"); ! 47: p = _addone(p, key_eos, KEY_EOS, "eos"); ! 48: p = _addone(p, key_eol, KEY_EOL, "eol"); ! 49: p = _addone(p, key_sf, KEY_SF, "sf"); ! 50: p = _addone(p, key_sr, KEY_SR, "sr"); ! 51: p = _addone(p, key_npage, KEY_NPAGE, "npage"); ! 52: p = _addone(p, key_ppage, KEY_PPAGE, "ppage"); ! 53: p = _addone(p, key_stab, KEY_STAB, "stab"); ! 54: p = _addone(p, key_ctab, KEY_CTAB, "ctab"); ! 55: p = _addone(p, key_catab, KEY_CATAB, "catab"); ! 56: p = _addone(p, key_ll, KEY_LL, "ll"); ! 57: p = _addone(p, key_a1, KEY_A1, "a1"); ! 58: p = _addone(p, key_a3, KEY_A3, "a3"); ! 59: p = _addone(p, key_b2, KEY_B2, "b2"); ! 60: p = _addone(p, key_c1, KEY_C1, "c1"); ! 61: p = _addone(p, key_c3, KEY_C3, "c3"); ! 62: p -> keynum = 0; /* termination convention */ ! 63: #ifdef DEBUG ! 64: if(outf) fprintf(outf, "return key structure %x, ending at %x\n", r, p); ! 65: #endif ! 66: return r; ! 67: } ! 68: ! 69: /* ! 70: * Map text into num, updating the map structure p. ! 71: * label is currently unused, but is an English description ! 72: * of what the key is labelled, similar to the name in vi. ! 73: */ ! 74: static ! 75: struct map * ! 76: _addone(p, text, num, label) ! 77: struct map *p; ! 78: char *text; ! 79: int num; ! 80: char *label; ! 81: { ! 82: if (text) { ! 83: strcpy(p->label, label); ! 84: strcpy(p->sends, text); ! 85: p->keynum = num; ! 86: #ifdef DEBUG ! 87: if(outf) fprintf(outf, "have key label %s, sends '%s', value %o\n", p->label, p->sends, p->keynum); ! 88: #endif ! 89: p++; ! 90: } ! 91: return p; ! 92: } ! 93: ! 94: #endif KEYPAD
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.