decode.c (367516) | decode.c (369759) |
---|---|
1/* | 1/* |
2 * Copyright (C) 1984-2020 Mark Nudelman | 2 * Copyright (C) 1984-2021 Mark Nudelman |
3 * 4 * You may distribute under the terms of either the GNU General Public 5 * License or the Less License, as specified in the README file. 6 * 7 * For more information, see the README file. 8 */ 9 10 11/* 12 * Routines to decode user commands. 13 * 14 * This is all table driven. 15 * A command table is a sequence of command descriptors. 16 * Each command descriptor is a sequence of bytes with the following format: | 3 * 4 * You may distribute under the terms of either the GNU General Public 5 * License or the Less License, as specified in the README file. 6 * 7 * For more information, see the README file. 8 */ 9 10 11/* 12 * Routines to decode user commands. 13 * 14 * This is all table driven. 15 * A command table is a sequence of command descriptors. 16 * Each command descriptor is a sequence of bytes with the following format: |
17 * <c1><c2>...<cN><0><action> | 17 * <c1><c2>...<cN><0><action> |
18 * The characters c1,c2,...,cN are the command string; that is, 19 * the characters which the user must type. 20 * It is terminated by a null <0> byte. 21 * The byte after the null byte is the action code associated 22 * with the command string. 23 * If an action byte is OR-ed with A_EXTRA, this indicates 24 * that the option byte is followed by an extra string. 25 * --- 17 unchanged lines hidden (view full) --- 43 SK_SPECIAL_KEY, (k), 6, 1, 1, 1 44/* 45 * Command table is ordered roughly according to expected 46 * frequency of use, so the common commands are near the beginning. 47 */ 48 49static unsigned char cmdtable[] = 50{ | 18 * The characters c1,c2,...,cN are the command string; that is, 19 * the characters which the user must type. 20 * It is terminated by a null <0> byte. 21 * The byte after the null byte is the action code associated 22 * with the command string. 23 * If an action byte is OR-ed with A_EXTRA, this indicates 24 * that the option byte is followed by an extra string. 25 * --- 17 unchanged lines hidden (view full) --- 43 SK_SPECIAL_KEY, (k), 6, 1, 1, 1 44/* 45 * Command table is ordered roughly according to expected 46 * frequency of use, so the common commands are near the beginning. 47 */ 48 49static unsigned char cmdtable[] = 50{ |
51 '\r',0, A_F_LINE, 52 '\n',0, A_F_LINE, 53 'e',0, A_F_LINE, 54 'j',0, A_F_LINE, 55 SK(SK_DOWN_ARROW),0, A_F_LINE, 56 CONTROL('E'),0, A_F_LINE, 57 CONTROL('N'),0, A_F_LINE, 58 'k',0, A_B_LINE, 59 'y',0, A_B_LINE, 60 CONTROL('Y'),0, A_B_LINE, 61 SK(SK_CONTROL_K),0, A_B_LINE, 62 CONTROL('P'),0, A_B_LINE, 63 SK(SK_UP_ARROW),0, A_B_LINE, 64 'J',0, A_FF_LINE, 65 'K',0, A_BF_LINE, 66 'Y',0, A_BF_LINE, 67 'd',0, A_F_SCROLL, 68 CONTROL('D'),0, A_F_SCROLL, 69 'u',0, A_B_SCROLL, 70 CONTROL('U'),0, A_B_SCROLL, 71 ESC,'[','M',0, A_X11MOUSE_IN, 72 ESC,'[','<',0, A_X116MOUSE_IN, 73 ' ',0, A_F_SCREEN, 74 'f',0, A_F_SCREEN, 75 CONTROL('F'),0, A_F_SCREEN, 76 CONTROL('V'),0, A_F_SCREEN, 77 SK(SK_PAGE_DOWN),0, A_F_SCREEN, 78 'b',0, A_B_SCREEN, 79 CONTROL('B'),0, A_B_SCREEN, 80 ESC,'v',0, A_B_SCREEN, 81 SK(SK_PAGE_UP),0, A_B_SCREEN, 82 'z',0, A_F_WINDOW, 83 'w',0, A_B_WINDOW, 84 ESC,' ',0, A_FF_SCREEN, 85 'F',0, A_F_FOREVER, 86 ESC,'F',0, A_F_UNTIL_HILITE, 87 'R',0, A_FREPAINT, 88 'r',0, A_REPAINT, 89 CONTROL('R'),0, A_REPAINT, 90 CONTROL('L'),0, A_REPAINT, 91 ESC,'u',0, A_UNDO_SEARCH, 92 'g',0, A_GOLINE, 93 SK(SK_HOME),0, A_GOLINE, 94 '<',0, A_GOLINE, 95 ESC,'<',0, A_GOLINE, 96 'p',0, A_PERCENT, 97 '%',0, A_PERCENT, 98 ESC,'[',0, A_LSHIFT, 99 ESC,']',0, A_RSHIFT, 100 ESC,'(',0, A_LSHIFT, 101 ESC,')',0, A_RSHIFT, 102 ESC,'{',0, A_LLSHIFT, 103 ESC,'}',0, A_RRSHIFT, 104 SK(SK_RIGHT_ARROW),0, A_RSHIFT, 105 SK(SK_LEFT_ARROW),0, A_LSHIFT, 106 SK(SK_CTL_RIGHT_ARROW),0, A_RRSHIFT, 107 SK(SK_CTL_LEFT_ARROW),0, A_LLSHIFT, 108 '{',0, A_F_BRACKET|A_EXTRA, '{','}',0, 109 '}',0, A_B_BRACKET|A_EXTRA, '{','}',0, 110 '(',0, A_F_BRACKET|A_EXTRA, '(',')',0, 111 ')',0, A_B_BRACKET|A_EXTRA, '(',')',0, 112 '[',0, A_F_BRACKET|A_EXTRA, '[',']',0, 113 ']',0, A_B_BRACKET|A_EXTRA, '[',']',0, 114 ESC,CONTROL('F'),0, A_F_BRACKET, 115 ESC,CONTROL('B'),0, A_B_BRACKET, 116 'G',0, A_GOEND, 117 ESC,'G',0, A_GOEND_BUF, 118 ESC,'>',0, A_GOEND, 119 '>',0, A_GOEND, 120 SK(SK_END),0, A_GOEND, 121 'P',0, A_GOPOS, | 51 '\r',0, A_F_LINE, 52 '\n',0, A_F_LINE, 53 'e',0, A_F_LINE, 54 'j',0, A_F_LINE, 55 SK(SK_DOWN_ARROW),0, A_F_LINE, 56 CONTROL('E'),0, A_F_LINE, 57 CONTROL('N'),0, A_F_LINE, 58 'k',0, A_B_LINE, 59 'y',0, A_B_LINE, 60 CONTROL('Y'),0, A_B_LINE, 61 SK(SK_CONTROL_K),0, A_B_LINE, 62 CONTROL('P'),0, A_B_LINE, 63 SK(SK_UP_ARROW),0, A_B_LINE, 64 'J',0, A_FF_LINE, 65 'K',0, A_BF_LINE, 66 'Y',0, A_BF_LINE, 67 'd',0, A_F_SCROLL, 68 CONTROL('D'),0, A_F_SCROLL, 69 'u',0, A_B_SCROLL, 70 CONTROL('U'),0, A_B_SCROLL, 71 ESC,'[','M',0, A_X11MOUSE_IN, 72 ESC,'[','<',0, A_X116MOUSE_IN, 73 ' ',0, A_F_SCREEN, 74 'f',0, A_F_SCREEN, 75 CONTROL('F'),0, A_F_SCREEN, 76 CONTROL('V'),0, A_F_SCREEN, 77 SK(SK_PAGE_DOWN),0, A_F_SCREEN, 78 'b',0, A_B_SCREEN, 79 CONTROL('B'),0, A_B_SCREEN, 80 ESC,'v',0, A_B_SCREEN, 81 SK(SK_PAGE_UP),0, A_B_SCREEN, 82 'z',0, A_F_WINDOW, 83 'w',0, A_B_WINDOW, 84 ESC,' ',0, A_FF_SCREEN, 85 'F',0, A_F_FOREVER, 86 ESC,'F',0, A_F_UNTIL_HILITE, 87 'R',0, A_FREPAINT, 88 'r',0, A_REPAINT, 89 CONTROL('R'),0, A_REPAINT, 90 CONTROL('L'),0, A_REPAINT, 91 ESC,'u',0, A_UNDO_SEARCH, 92 ESC,'U',0, A_CLR_SEARCH, 93 'g',0, A_GOLINE, 94 SK(SK_HOME),0, A_GOLINE, 95 '<',0, A_GOLINE, 96 ESC,'<',0, A_GOLINE, 97 'p',0, A_PERCENT, 98 '%',0, A_PERCENT, 99 ESC,'[',0, A_LSHIFT, 100 ESC,']',0, A_RSHIFT, 101 ESC,'(',0, A_LSHIFT, 102 ESC,')',0, A_RSHIFT, 103 ESC,'{',0, A_LLSHIFT, 104 ESC,'}',0, A_RRSHIFT, 105 SK(SK_RIGHT_ARROW),0, A_RSHIFT, 106 SK(SK_LEFT_ARROW),0, A_LSHIFT, 107 SK(SK_CTL_RIGHT_ARROW),0, A_RRSHIFT, 108 SK(SK_CTL_LEFT_ARROW),0, A_LLSHIFT, 109 '{',0, A_F_BRACKET|A_EXTRA, '{','}',0, 110 '}',0, A_B_BRACKET|A_EXTRA, '{','}',0, 111 '(',0, A_F_BRACKET|A_EXTRA, '(',')',0, 112 ')',0, A_B_BRACKET|A_EXTRA, '(',')',0, 113 '[',0, A_F_BRACKET|A_EXTRA, '[',']',0, 114 ']',0, A_B_BRACKET|A_EXTRA, '[',']',0, 115 ESC,CONTROL('F'),0, A_F_BRACKET, 116 ESC,CONTROL('B'),0, A_B_BRACKET, 117 'G',0, A_GOEND, 118 ESC,'G',0, A_GOEND_BUF, 119 ESC,'>',0, A_GOEND, 120 '>',0, A_GOEND, 121 SK(SK_END),0, A_GOEND, 122 'P',0, A_GOPOS, |
122 | 123 |
123 '0',0, A_DIGIT, 124 '1',0, A_DIGIT, 125 '2',0, A_DIGIT, 126 '3',0, A_DIGIT, 127 '4',0, A_DIGIT, 128 '5',0, A_DIGIT, 129 '6',0, A_DIGIT, 130 '7',0, A_DIGIT, 131 '8',0, A_DIGIT, 132 '9',0, A_DIGIT, 133 '.',0, A_DIGIT, | 124 '0',0, A_DIGIT, 125 '1',0, A_DIGIT, 126 '2',0, A_DIGIT, 127 '3',0, A_DIGIT, 128 '4',0, A_DIGIT, 129 '5',0, A_DIGIT, 130 '6',0, A_DIGIT, 131 '7',0, A_DIGIT, 132 '8',0, A_DIGIT, 133 '9',0, A_DIGIT, 134 '.',0, A_DIGIT, |
134 | 135 |
135 '=',0, A_STAT, 136 CONTROL('G'),0, A_STAT, 137 ':','f',0, A_STAT, 138 '/',0, A_F_SEARCH, 139 '?',0, A_B_SEARCH, 140 ESC,'/',0, A_F_SEARCH|A_EXTRA, '*',0, 141 ESC,'?',0, A_B_SEARCH|A_EXTRA, '*',0, 142 'n',0, A_AGAIN_SEARCH, 143 ESC,'n',0, A_T_AGAIN_SEARCH, 144 'N',0, A_REVERSE_SEARCH, 145 ESC,'N',0, A_T_REVERSE_SEARCH, 146 '&',0, A_FILTER, 147 'm',0, A_SETMARK, 148 'M',0, A_SETMARKBOT, 149 ESC,'m',0, A_CLRMARK, 150 '\'',0, A_GOMARK, 151 CONTROL('X'),CONTROL('X'),0, A_GOMARK, 152 'E',0, A_EXAMINE, 153 ':','e',0, A_EXAMINE, 154 CONTROL('X'),CONTROL('V'),0, A_EXAMINE, 155 ':','n',0, A_NEXT_FILE, 156 ':','p',0, A_PREV_FILE, 157 't',0, A_NEXT_TAG, 158 'T',0, A_PREV_TAG, 159 ':','x',0, A_INDEX_FILE, 160 ':','d',0, A_REMOVE_FILE, 161 '-',0, A_OPT_TOGGLE, 162 ':','t',0, A_OPT_TOGGLE|A_EXTRA, 't',0, 163 's',0, A_OPT_TOGGLE|A_EXTRA, 'o',0, 164 '_',0, A_DISP_OPTION, 165 '|',0, A_PIPE, 166 'v',0, A_VISUAL, 167 '!',0, A_SHELL, 168 '+',0, A_FIRSTCMD, | 136 '=',0, A_STAT, 137 CONTROL('G'),0, A_STAT, 138 ':','f',0, A_STAT, 139 '/',0, A_F_SEARCH, 140 '?',0, A_B_SEARCH, 141 ESC,'/',0, A_F_SEARCH|A_EXTRA, '*',0, 142 ESC,'?',0, A_B_SEARCH|A_EXTRA, '*',0, 143 'n',0, A_AGAIN_SEARCH, 144 ESC,'n',0, A_T_AGAIN_SEARCH, 145 'N',0, A_REVERSE_SEARCH, 146 ESC,'N',0, A_T_REVERSE_SEARCH, 147 '&',0, A_FILTER, 148 'm',0, A_SETMARK, 149 'M',0, A_SETMARKBOT, 150 ESC,'m',0, A_CLRMARK, 151 '\'',0, A_GOMARK, 152 CONTROL('X'),CONTROL('X'),0, A_GOMARK, 153 'E',0, A_EXAMINE, 154 ':','e',0, A_EXAMINE, 155 CONTROL('X'),CONTROL('V'),0, A_EXAMINE, 156 ':','n',0, A_NEXT_FILE, 157 ':','p',0, A_PREV_FILE, 158 't',0, A_NEXT_TAG, 159 'T',0, A_PREV_TAG, 160 ':','x',0, A_INDEX_FILE, 161 ':','d',0, A_REMOVE_FILE, 162 '-',0, A_OPT_TOGGLE, 163 ':','t',0, A_OPT_TOGGLE|A_EXTRA, 't',0, 164 's',0, A_OPT_TOGGLE|A_EXTRA, 'o',0, 165 '_',0, A_DISP_OPTION, 166 '|',0, A_PIPE, 167 'v',0, A_VISUAL, 168 '!',0, A_SHELL, 169 '+',0, A_FIRSTCMD, |
169 | 170 |
170 'H',0, A_HELP, 171 'h',0, A_HELP, 172 SK(SK_F1),0, A_HELP, 173 'V',0, A_VERSION, 174 'q',0, A_QUIT, 175 'Q',0, A_QUIT, 176 ':','q',0, A_QUIT, 177 ':','Q',0, A_QUIT, 178 'Z','Z',0, A_QUIT | 171 'H',0, A_HELP, 172 'h',0, A_HELP, 173 SK(SK_F1),0, A_HELP, 174 'V',0, A_VERSION, 175 'q',0, A_QUIT, 176 'Q',0, A_QUIT, 177 ':','q',0, A_QUIT, 178 ':','Q',0, A_QUIT, 179 'Z','Z',0, A_QUIT |
179}; 180 181static unsigned char edittable[] = 182{ | 180}; 181 182static unsigned char edittable[] = 183{ |
183 '\t',0, EC_F_COMPLETE, /* TAB */ 184 '\17',0, EC_B_COMPLETE, /* BACKTAB */ 185 SK(SK_BACKTAB),0, EC_B_COMPLETE, /* BACKTAB */ 186 ESC,'\t',0, EC_B_COMPLETE, /* ESC TAB */ 187 CONTROL('L'),0, EC_EXPAND, /* CTRL-L */ 188 CONTROL('V'),0, EC_LITERAL, /* BACKSLASH */ 189 CONTROL('A'),0, EC_LITERAL, /* BACKSLASH */ 190 ESC,'l',0, EC_RIGHT, /* ESC l */ 191 SK(SK_RIGHT_ARROW),0, EC_RIGHT, /* RIGHTARROW */ 192 ESC,'h',0, EC_LEFT, /* ESC h */ 193 SK(SK_LEFT_ARROW),0, EC_LEFT, /* LEFTARROW */ 194 ESC,'b',0, EC_W_LEFT, /* ESC b */ 195 ESC,SK(SK_LEFT_ARROW),0, EC_W_LEFT, /* ESC LEFTARROW */ 196 SK(SK_CTL_LEFT_ARROW),0, EC_W_LEFT, /* CTRL-LEFTARROW */ 197 ESC,'w',0, EC_W_RIGHT, /* ESC w */ 198 ESC,SK(SK_RIGHT_ARROW),0, EC_W_RIGHT, /* ESC RIGHTARROW */ 199 SK(SK_CTL_RIGHT_ARROW),0, EC_W_RIGHT, /* CTRL-RIGHTARROW */ 200 ESC,'i',0, EC_INSERT, /* ESC i */ 201 SK(SK_INSERT),0, EC_INSERT, /* INSERT */ 202 ESC,'x',0, EC_DELETE, /* ESC x */ 203 SK(SK_DELETE),0, EC_DELETE, /* DELETE */ 204 ESC,'X',0, EC_W_DELETE, /* ESC X */ 205 ESC,SK(SK_DELETE),0, EC_W_DELETE, /* ESC DELETE */ 206 SK(SK_CTL_DELETE),0, EC_W_DELETE, /* CTRL-DELETE */ 207 SK(SK_CTL_BACKSPACE),0, EC_W_BACKSPACE, /* CTRL-BACKSPACE */ 208 ESC,'\b',0, EC_W_BACKSPACE, /* ESC BACKSPACE */ 209 ESC,'0',0, EC_HOME, /* ESC 0 */ 210 SK(SK_HOME),0, EC_HOME, /* HOME */ 211 ESC,'$',0, EC_END, /* ESC $ */ 212 SK(SK_END),0, EC_END, /* END */ 213 ESC,'k',0, EC_UP, /* ESC k */ 214 SK(SK_UP_ARROW),0, EC_UP, /* UPARROW */ 215 ESC,'j',0, EC_DOWN, /* ESC j */ 216 SK(SK_DOWN_ARROW),0, EC_DOWN, /* DOWNARROW */ 217 CONTROL('G'),0, EC_ABORT, /* CTRL-G */ | 184 '\t',0, EC_F_COMPLETE, /* TAB */ 185 '\17',0, EC_B_COMPLETE, /* BACKTAB */ 186 SK(SK_BACKTAB),0, EC_B_COMPLETE, /* BACKTAB */ 187 ESC,'\t',0, EC_B_COMPLETE, /* ESC TAB */ 188 CONTROL('L'),0, EC_EXPAND, /* CTRL-L */ 189 CONTROL('V'),0, EC_LITERAL, /* BACKSLASH */ 190 CONTROL('A'),0, EC_LITERAL, /* BACKSLASH */ 191 ESC,'l',0, EC_RIGHT, /* ESC l */ 192 SK(SK_RIGHT_ARROW),0, EC_RIGHT, /* RIGHTARROW */ 193 ESC,'h',0, EC_LEFT, /* ESC h */ 194 SK(SK_LEFT_ARROW),0, EC_LEFT, /* LEFTARROW */ 195 ESC,'b',0, EC_W_LEFT, /* ESC b */ 196 ESC,SK(SK_LEFT_ARROW),0, EC_W_LEFT, /* ESC LEFTARROW */ 197 SK(SK_CTL_LEFT_ARROW),0, EC_W_LEFT, /* CTRL-LEFTARROW */ 198 ESC,'w',0, EC_W_RIGHT, /* ESC w */ 199 ESC,SK(SK_RIGHT_ARROW),0, EC_W_RIGHT, /* ESC RIGHTARROW */ 200 SK(SK_CTL_RIGHT_ARROW),0, EC_W_RIGHT, /* CTRL-RIGHTARROW */ 201 ESC,'i',0, EC_INSERT, /* ESC i */ 202 SK(SK_INSERT),0, EC_INSERT, /* INSERT */ 203 ESC,'x',0, EC_DELETE, /* ESC x */ 204 SK(SK_DELETE),0, EC_DELETE, /* DELETE */ 205 ESC,'X',0, EC_W_DELETE, /* ESC X */ 206 ESC,SK(SK_DELETE),0, EC_W_DELETE, /* ESC DELETE */ 207 SK(SK_CTL_DELETE),0, EC_W_DELETE, /* CTRL-DELETE */ 208 SK(SK_CTL_BACKSPACE),0, EC_W_BACKSPACE, /* CTRL-BACKSPACE */ 209 ESC,'\b',0, EC_W_BACKSPACE, /* ESC BACKSPACE */ 210 ESC,'0',0, EC_HOME, /* ESC 0 */ 211 SK(SK_HOME),0, EC_HOME, /* HOME */ 212 ESC,'$',0, EC_END, /* ESC $ */ 213 SK(SK_END),0, EC_END, /* END */ 214 ESC,'k',0, EC_UP, /* ESC k */ 215 SK(SK_UP_ARROW),0, EC_UP, /* UPARROW */ 216 ESC,'j',0, EC_DOWN, /* ESC j */ 217 SK(SK_DOWN_ARROW),0, EC_DOWN, /* DOWNARROW */ 218 CONTROL('G'),0, EC_ABORT, /* CTRL-G */ 219 ESC,'[','M',0, EC_X11MOUSE, /* X11 mouse report */ 220 ESC,'[','<',0, EC_X116MOUSE, /* X11 1006 mouse report */ |
218}; 219 220/* 221 * Structure to support a list of command tables. 222 */ 223struct tablelist 224{ 225 struct tablelist *t_next; --- 256 unchanged lines hidden (view full) --- 482 } 483} 484 485/* 486 * Read suffix of mouse input and return the action to take. 487 * The prefix ("\e[M") has already been read. 488 */ 489 static int | 221}; 222 223/* 224 * Structure to support a list of command tables. 225 */ 226struct tablelist 227{ 228 struct tablelist *t_next; --- 256 unchanged lines hidden (view full) --- 485 } 486} 487 488/* 489 * Read suffix of mouse input and return the action to take. 490 * The prefix ("\e[M") has already been read. 491 */ 492 static int |
490x11mouse_action(VOID_PARAM) | 493x11mouse_action(skip) 494 int skip; |
491{ 492 int b = getcc() - X11MOUSE_OFFSET; 493 int x = getcc() - X11MOUSE_OFFSET-1; 494 int y = getcc() - X11MOUSE_OFFSET-1; | 495{ 496 int b = getcc() - X11MOUSE_OFFSET; 497 int x = getcc() - X11MOUSE_OFFSET-1; 498 int y = getcc() - X11MOUSE_OFFSET-1; |
499 if (skip) 500 return (A_NOACTION); |
|
495 switch (b) { 496 default: 497 return (A_NOACTION); 498 case X11MOUSE_WHEEL_DOWN: 499 return mouse_wheel_down(); 500 case X11MOUSE_WHEEL_UP: 501 return mouse_wheel_up(); 502 case X11MOUSE_BUTTON_REL: 503 return mouse_button_rel(x, y); 504 } 505} 506 507/* 508 * Read suffix of mouse input and return the action to take. 509 * The prefix ("\e[<") has already been read. 510 */ 511 static int | 501 switch (b) { 502 default: 503 return (A_NOACTION); 504 case X11MOUSE_WHEEL_DOWN: 505 return mouse_wheel_down(); 506 case X11MOUSE_WHEEL_UP: 507 return mouse_wheel_up(); 508 case X11MOUSE_BUTTON_REL: 509 return mouse_button_rel(x, y); 510 } 511} 512 513/* 514 * Read suffix of mouse input and return the action to take. 515 * The prefix ("\e[<") has already been read. 516 */ 517 static int |
512x116mouse_action(VOID_PARAM) | 518x116mouse_action(skip) 519 int skip; |
513{ 514 char ch; 515 int x, y; 516 int b = getcc_int(&ch); 517 if (b < 0 || ch != ';') return (A_NOACTION); 518 x = getcc_int(&ch) - 1; 519 if (x < 0 || ch != ';') return (A_NOACTION); 520 y = getcc_int(&ch) - 1; 521 if (y < 0) return (A_NOACTION); | 520{ 521 char ch; 522 int x, y; 523 int b = getcc_int(&ch); 524 if (b < 0 || ch != ';') return (A_NOACTION); 525 x = getcc_int(&ch) - 1; 526 if (x < 0 || ch != ';') return (A_NOACTION); 527 y = getcc_int(&ch) - 1; 528 if (y < 0) return (A_NOACTION); |
529 if (skip) 530 return (A_NOACTION); |
|
522 switch (b) { 523 case X11MOUSE_WHEEL_DOWN: 524 return mouse_wheel_down(); 525 case X11MOUSE_WHEEL_UP: 526 return mouse_wheel_up(); 527 default: 528 if (ch != 'm') return (A_NOACTION); 529 return mouse_button_rel(x, y); --- 45 unchanged lines hidden (view full) --- 575 * Check for an "extra" string. 576 */ 577 if (a & A_EXTRA) 578 { 579 *sp = ++p; 580 a &= ~A_EXTRA; 581 } 582 if (a == A_X11MOUSE_IN) | 531 switch (b) { 532 case X11MOUSE_WHEEL_DOWN: 533 return mouse_wheel_down(); 534 case X11MOUSE_WHEEL_UP: 535 return mouse_wheel_up(); 536 default: 537 if (ch != 'm') return (A_NOACTION); 538 return mouse_button_rel(x, y); --- 45 unchanged lines hidden (view full) --- 584 * Check for an "extra" string. 585 */ 586 if (a & A_EXTRA) 587 { 588 *sp = ++p; 589 a &= ~A_EXTRA; 590 } 591 if (a == A_X11MOUSE_IN) |
583 a = x11mouse_action(); | 592 a = x11mouse_action(0); |
584 else if (a == A_X116MOUSE_IN) | 593 else if (a == A_X116MOUSE_IN) |
585 a = x116mouse_action(); | 594 a = x116mouse_action(0); |
586 return (a); 587 } 588 } else if (*q == '\0') 589 { 590 /* 591 * Hit the end of the user's command, 592 * but not the end of the string in the command table. 593 * The user's command is incomplete. --- 325 unchanged lines hidden (view full) --- 919 */ 920 if (c == erase_char || c == erase2_char) 921 return (EC_BACKSPACE); 922 if (c == kill_char) 923 { 924#if MSDOS_COMPILER==WIN32C 925 if (!win32_kbhit()) 926#endif | 595 return (a); 596 } 597 } else if (*q == '\0') 598 { 599 /* 600 * Hit the end of the user's command, 601 * but not the end of the string in the command table. 602 * The user's command is incomplete. --- 325 unchanged lines hidden (view full) --- 928 */ 929 if (c == erase_char || c == erase2_char) 930 return (EC_BACKSPACE); 931 if (c == kill_char) 932 { 933#if MSDOS_COMPILER==WIN32C 934 if (!win32_kbhit()) 935#endif |
927 | |
928 return (EC_LINEKILL); 929 } 930 931 /* 932 * Collect characters in a buffer. 933 * Start with the one we have, and get more if we need them. 934 */ 935 nch = 0; 936 do { | 936 return (EC_LINEKILL); 937 } 938 939 /* 940 * Collect characters in a buffer. 941 * Start with the one we have, and get more if we need them. 942 */ 943 nch = 0; 944 do { |
937 if (nch > 0) | 945 if (nch > 0) |
938 c = getcc(); 939 usercmd[nch] = c; 940 usercmd[nch+1] = '\0'; 941 nch++; 942 action = ecmd_decode(usercmd, &s); | 946 c = getcc(); 947 usercmd[nch] = c; 948 usercmd[nch+1] = '\0'; 949 nch++; 950 action = ecmd_decode(usercmd, &s); |
943 } while (action == A_PREFIX); 944 945 if (flags & EC_NORIGHTLEFT) | 951 } while (action == A_PREFIX && nch < MAX_CMDLEN); 952 953 if (action == EC_X11MOUSE) 954 return (x11mouse_action(1)); 955 if (action == EC_X116MOUSE) 956 return (x116mouse_action(1)); 957 958 if (flags & ECF_NORIGHTLEFT) |
946 { 947 switch (action) 948 { 949 case EC_RIGHT: 950 case EC_LEFT: 951 action = A_INVALID; 952 break; 953 } 954 } 955#if CMD_HISTORY | 959 { 960 switch (action) 961 { 962 case EC_RIGHT: 963 case EC_LEFT: 964 action = A_INVALID; 965 break; 966 } 967 } 968#if CMD_HISTORY |
956 if (flags & EC_NOHISTORY) | 969 if (flags & ECF_NOHISTORY) |
957 { 958 /* 959 * The caller says there is no history list. 960 * Reject any history-manipulation action. 961 */ 962 switch (action) 963 { 964 case EC_UP: 965 case EC_DOWN: 966 action = A_INVALID; 967 break; 968 } 969 } 970#endif 971#if TAB_COMPLETE_FILENAME | 970 { 971 /* 972 * The caller says there is no history list. 973 * Reject any history-manipulation action. 974 */ 975 switch (action) 976 { 977 case EC_UP: 978 case EC_DOWN: 979 action = A_INVALID; 980 break; 981 } 982 } 983#endif 984#if TAB_COMPLETE_FILENAME |
972 if (flags & EC_NOCOMPLETE) | 985 if (flags & ECF_NOCOMPLETE) |
973 { 974 /* 975 * The caller says we don't want any filename completion cmds. 976 * Reject them. 977 */ 978 switch (action) 979 { 980 case EC_F_COMPLETE: 981 case EC_B_COMPLETE: 982 case EC_EXPAND: 983 action = A_INVALID; 984 break; 985 } 986 } 987#endif | 986 { 987 /* 988 * The caller says we don't want any filename completion cmds. 989 * Reject them. 990 */ 991 switch (action) 992 { 993 case EC_F_COMPLETE: 994 case EC_B_COMPLETE: 995 case EC_EXPAND: 996 action = A_INVALID; 997 break; 998 } 999 } 1000#endif |
988 if ((flags & EC_PEEK) || action == A_INVALID) | 1001 if ((flags & ECF_PEEK) || action == A_INVALID) |
989 { 990 /* 991 * We're just peeking, or we didn't understand the command. 992 * Unget all the characters we read in the loop above. 993 * This does NOT include the original character that was 994 * passed in as a parameter. 995 */ 996 while (nch > 1) 997 { 998 ungetcc(usercmd[--nch]); 999 } 1000 } else 1001 { 1002 if (s != NULL) 1003 ungetsc(s); 1004 } 1005 return action; 1006} 1007 | 1002 { 1003 /* 1004 * We're just peeking, or we didn't understand the command. 1005 * Unget all the characters we read in the loop above. 1006 * This does NOT include the original character that was 1007 * passed in as a parameter. 1008 */ 1009 while (nch > 1) 1010 { 1011 ungetcc(usercmd[--nch]); 1012 } 1013 } else 1014 { 1015 if (s != NULL) 1016 ungetsc(s); 1017 } 1018 return action; 1019} 1020 |