1
1
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3596 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
Этот коммит содержится в:
David Lawrence Ramsey 2006-05-30 20:51:15 +00:00
родитель f397dae5c5
Коммит 2888964c76
2 изменённых файлов: 19 добавлений и 31 удалений

Просмотреть файл

@ -313,8 +313,6 @@ CVS code -
parse_kbinput() parse_kbinput()
- If we get NANO_CONTROL_8, properly handle it in all cases. - If we get NANO_CONTROL_8, properly handle it in all cases.
(DLR) (DLR)
- If we get Escape followed by an escape sequence, interpret the
escape sequence for consistency. (DLR)
parse_escape_seq_kbinput() parse_escape_seq_kbinput()
- New function used to interpret escape sequences, formerly part - New function used to interpret escape sequences, formerly part
of parse_kbinput(). (DLR) of parse_kbinput(). (DLR)

Просмотреть файл

@ -565,16 +565,7 @@ int parse_kbinput(WINDOW *win, bool *meta_key, bool *func_key)
free(byte_mb); free(byte_mb);
free(seq); free(seq);
} }
/* Two escapes followed by one or more non-decimal } else {
* digits: control character sequence mode,
* interrupted byte sequence mode, or escape
* sequence mode. If there aren't any other keys
* waiting, we have either a control character
* sequence or an interrupted byte sequence. If
* there are other keys waiting, we have a true
* escape sequence preceded by an extra escape, so
* interpret it. */
} else if (get_key_buffer_len() == 0) {
/* Reset the escape counter. */ /* Reset the escape counter. */
escapes = 0; escapes = 0;
if (byte_digits == 0) if (byte_digits == 0)
@ -595,8 +586,7 @@ int parse_kbinput(WINDOW *win, bool *meta_key, bool *func_key)
byte_digits = 0; byte_digits = 0;
retval = *kbinput; retval = *kbinput;
} }
} else }
retval = parse_escape_seq_kbinput(*kbinput);
break; break;
} }
} }
@ -683,7 +673,7 @@ int get_escape_seq_kbinput(const int *seq, size_t seq_len, bool
break; break;
case 'M': /* Esc O M == Enter on numeric keypad with case 'M': /* Esc O M == Enter on numeric keypad with
* NumLock off on VT100/VT220/VT320/xterm/ * NumLock off on VT100/VT220/VT320/xterm/
* Eterm. */ * rxvt/Eterm. */
retval = NANO_ENTER_KEY; retval = NANO_ENTER_KEY;
break; break;
case 'P': /* Esc O P == F1 on VT100/VT220/VT320/Mach case 'P': /* Esc O P == F1 on VT100/VT220/VT320/Mach
@ -728,57 +718,57 @@ int get_escape_seq_kbinput(const int *seq, size_t seq_len, bool
break; break;
case 'j': /* Esc O j == '*' on numeric keypad with case 'j': /* Esc O j == '*' on numeric keypad with
* NumLock off on VT100/VT220/VT320/xterm/ * NumLock off on VT100/VT220/VT320/xterm/
* rxvt. */ * rxvt/Eterm. */
retval = '*'; retval = '*';
break; break;
case 'k': /* Esc O k == '+' on numeric keypad with case 'k': /* Esc O k == '+' on numeric keypad with
* NumLock off on VT100/VT220/VT320/xterm/ * NumLock off on VT100/VT220/VT320/xterm/
* rxvt. */ * rxvt/Eterm. */
retval = '+'; retval = '+';
break; break;
case 'l': /* Esc O l == ',' on numeric keypad with case 'l': /* Esc O l == ',' on numeric keypad with
* NumLock off on VT100/VT220/VT320/xterm/ * NumLock off on VT100/VT220/VT320/xterm/
* rxvt. */ * rxvt/Eterm. */
retval = ','; retval = ',';
break; break;
case 'm': /* Esc O m == '-' on numeric keypad with case 'm': /* Esc O m == '-' on numeric keypad with
* NumLock off on VT100/VT220/VT320/xterm/ * NumLock off on VT100/VT220/VT320/xterm/
* rxvt. */ * rxvt/Eterm. */
retval = '-'; retval = '-';
break; break;
case 'n': /* Esc O n == Delete (.) on numeric keypad case 'n': /* Esc O n == Delete (.) on numeric keypad
* with NumLock off on VT100/VT220/VT320/ * with NumLock off on VT100/VT220/VT320/
* xterm/rxvt. */ * xterm/rxvt/Eterm. */
retval = NANO_DELETE_KEY; retval = NANO_DELETE_KEY;
break; break;
case 'o': /* Esc O o == '/' on numeric keypad with case 'o': /* Esc O o == '/' on numeric keypad with
* NumLock off on VT100/VT220/VT320/xterm/ * NumLock off on VT100/VT220/VT320/xterm/
* rxvt. */ * rxvt/Eterm. */
retval = '/'; retval = '/';
break; break;
case 'p': /* Esc O p == Insert (0) on numeric keypad case 'p': /* Esc O p == Insert (0) on numeric keypad
* with NumLock off on VT100/VT220/VT320/ * with NumLock off on VT100/VT220/VT320/
* rxvt. */ * rxvt/Eterm. */
retval = NANO_INSERTFILE_KEY; retval = NANO_INSERTFILE_KEY;
break; break;
case 'q': /* Esc O q == End (1) on numeric keypad case 'q': /* Esc O q == End (1) on numeric keypad
* with NumLock off on VT100/VT220/VT320/ * with NumLock off on VT100/VT220/VT320/
* rxvt. */ * rxvt/Eterm. */
retval = NANO_END_KEY; retval = NANO_END_KEY;
break; break;
case 'r': /* Esc O r == Down (2) on numeric keypad case 'r': /* Esc O r == Down (2) on numeric keypad
* with NumLock off on VT100/VT220/VT320/ * with NumLock off on VT100/VT220/VT320/
* rxvt. */ * rxvt/Eterm. */
retval = NANO_NEXTLINE_KEY; retval = NANO_NEXTLINE_KEY;
break; break;
case 's': /* Esc O s == PageDown (3) on numeric case 's': /* Esc O s == PageDown (3) on numeric
* keypad with NumLock off on VT100/VT220/ * keypad with NumLock off on VT100/VT220/
* VT320/rxvt. */ * VT320/rxvt/Eterm. */
retval = NANO_NEXTPAGE_KEY; retval = NANO_NEXTPAGE_KEY;
break; break;
case 't': /* Esc O t == Left (4) on numeric keypad case 't': /* Esc O t == Left (4) on numeric keypad
* with NumLock off on VT100/VT220/VT320/ * with NumLock off on VT100/VT220/VT320/
* rxvt. */ * rxvt/Eterm. */
retval = NANO_BACK_KEY; retval = NANO_BACK_KEY;
break; break;
case 'u': /* Esc O u == Center (5) on numeric keypad case 'u': /* Esc O u == Center (5) on numeric keypad
@ -788,22 +778,22 @@ int get_escape_seq_kbinput(const int *seq, size_t seq_len, bool
break; break;
case 'v': /* Esc O v == Right (6) on numeric keypad case 'v': /* Esc O v == Right (6) on numeric keypad
* with NumLock off on VT100/VT220/VT320/ * with NumLock off on VT100/VT220/VT320/
* rxvt. */ * rxvt/Eterm. */
retval = NANO_FORWARD_KEY; retval = NANO_FORWARD_KEY;
break; break;
case 'w': /* Esc O w == Home (7) on numeric keypad case 'w': /* Esc O w == Home (7) on numeric keypad
* with NumLock off on VT100/VT220/VT320/ * with NumLock off on VT100/VT220/VT320/
* rxvt. */ * rxvt/Eterm. */
retval = NANO_HOME_KEY; retval = NANO_HOME_KEY;
break; break;
case 'x': /* Esc O x == Up (8) on numeric keypad case 'x': /* Esc O x == Up (8) on numeric keypad
* with NumLock off on VT100/VT220/VT320/ * with NumLock off on VT100/VT220/VT320/
* rxvt. */ * rxvt/Eterm. */
retval = NANO_PREVLINE_KEY; retval = NANO_PREVLINE_KEY;
break; break;
case 'y': /* Esc O y == PageUp (9) on numeric keypad case 'y': /* Esc O y == PageUp (9) on numeric keypad
* with NumLock off on VT100/VT220/VT320/ * with NumLock off on VT100/VT220/VT320/
* rxvt. */ * rxvt/Eterm. */
retval = NANO_PREVPAGE_KEY; retval = NANO_PREVPAGE_KEY;
break; break;
} }
@ -1222,7 +1212,7 @@ int get_byte_kbinput(int kbinput)
* position of the byte sequence holder. */ * position of the byte sequence holder. */
if (('0' <= kbinput && kbinput <= '5') || (byte < 250 && if (('0' <= kbinput && kbinput <= '5') || (byte < 250 &&
'6' <= kbinput && kbinput <= '9')) { '6' <= kbinput && kbinput <= '9')) {
byte += (kbinput - '0'); byte += kbinput - '0';
/* If this character is a valid decimal value, then the /* If this character is a valid decimal value, then the
* byte sequence is complete. */ * byte sequence is complete. */
retval = byte; retval = byte;