1 #include "curses_inc.h" 2 3 static char *keystrings[] = 4 { 5 "BREAK", /* 0401 */ 6 "DOWN", /* 0402 */ 7 "UP", /* 0403 */ 8 "LEFT", /* 0404 */ 9 "RIGHT", /* 0405 */ 10 "HOME", /* 0406 */ 11 "BACKSPACE", /* 0407 */ 12 "DL", /* 0510 */ 13 "IL", /* 0511 */ 14 "DC", /* 0512 */ 15 "IC", /* 0513 */ 16 "EIC", /* 0514 */ 17 "CLEAR", /* 0515 */ 18 "EOS", /* 0516 */ 19 "EOL", /* 0517 */ 20 "SF", /* 0520 */ 21 "SR", /* 0521 */ 22 "NPAGE", /* 0522 */ 23 "PPAGE", /* 0523 */ 24 "STAB", /* 0524 */ 25 "CTAB", /* 0525 */ 26 "CATAB", /* 0526 */ 27 "ENTER", /* 0527 */ 28 "SRESET", /* 0530 */ 29 "RESET", /* 0531 */ 30 "PRINT", /* 0532 */ 31 "LL", /* 0533 */ 32 "A1", /* 0534 */ 33 "A3", /* 0535 */ 34 "B2", /* 0536 */ 35 "C1", /* 0537 */ 36 "C3", /* 0540 */ 37 "BTAB", /* 0541 */ 38 "BEG", /* 0542 */ 39 "CANCEL", /* 0543 */ 40 "CLOSE", /* 0544 */ 41 "COMMAND", /* 0545 */ 42 "COPY", /* 0546 */ 43 "CREATE", /* 0547 */ 44 "END", /* 0550 */ 45 "EXIT", /* 0551 */ 46 "FIND", /* 0552 */ 47 "HELP", /* 0553 */ 48 "MARK", /* 0554 */ 49 "MESSAGE", /* 0555 */ 50 "MOVE", /* 0556 */ 51 "NEXT", /* 0557 */ 52 "OPEN", /* 0560 */ 53 "OPTIONS", /* 0561 */ 54 "PREVIOUS", /* 0562 */ 55 "REDO", /* 0563 */ 56 "REFERENCE", /* 0564 */ 57 "REFRESH", /* 0565 */ 58 "REPLACE", /* 0566 */ 59 "RESTART", /* 0567 */ 60 "RESUME", /* 0570 */ 61 "SAVE", /* 0571 */ 62 "SBEG", /* 0572 */ 63 "SCANCEL", /* 0573 */ 64 "SCOMMAND", /* 0574 */ 65 "SCOPY", /* 0575 */ 66 "SCREATE", /* 0576 */ 67 "SDC", /* 0577 */ 68 "SDL", /* 0600 */ 69 "SELECT", /* 0601 */ 70 "SEND", /* 0602 */ 71 "SEOL", /* 0603 */ 72 "SEXIT", /* 0604 */ 73 "SFIND", /* 0605 */ 74 "SHELP", /* 0606 */ 75 "SHOME", /* 0607 */ 76 "SIC", /* 0610 */ 77 "SLEFT", /* 0611 */ 78 "SMESSAGE", /* 0612 */ 79 "SMOVE", /* 0613 */ 80 "SNEXT", /* 0614 */ 81 "SOPTIONS", /* 0615 */ 82 "SPREVIOUS", /* 0616 */ 83 "SPRINT", /* 0617 */ 84 "SREDO", /* 0620 */ 85 "SREPLACE", /* 0621 */ 86 "SRIGHT", /* 0622 */ 87 "SRSUME", /* 0623 */ 88 "SSAVE", /* 0624 */ 89 "SSUSPEND", /* 0625 */ 90 "SUNDO", /* 0626 */ 91 "SUSPEND", /* 0627 */ 92 "UNDO", /* 0630 */ 93 "MOUSE", /* 0631 */ 94 }; 95 96 char * 97 keyname(int key) 98 { 99 static char buf[16]; 100 101 if (key >= 0400) { 102 int i; 103 104 if ((key == 0400) || (key > KEY_MOUSE)) 105 return ("UNKNOWN KEY"); 106 if (key > 0507) 107 i = key - (0401 + ((0507 - 0410) + 1)); 108 else 109 if (key >= 0410) { 110 (void) sprintf(buf, "KEY_F(%d)", key - 0410); 111 goto ret_buf; 112 } else 113 i = key - 0401; 114 (void) sprintf(buf, "KEY_%s", keystrings[i]); 115 goto ret_buf; 116 } 117 118 if (key >= 0200) { 119 #ifdef SYSV 120 if (SHELLTTYS.c_cflag & CS8) 121 #else /* SYSV */ 122 if (SHELLTTY.c_cflag & CS8) 123 #endif /* SYSV */ 124 (void) sprintf(buf, "%c", key); 125 else 126 (void) sprintf(buf, "M-%s", unctrl(key & 0177)); 127 goto ret_buf; 128 } 129 130 if (key < 0) { 131 (void) sprintf(buf, "%d", key); 132 ret_buf: 133 return (buf); 134 } 135 136 return (unctrl(key)); 137 } 138