vi: move key reading routine out of vi into llbbb
function old new delta read_key - 310 +310 .... static.esccmds 170 61 -109 readit 286 60 -226 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 9/10 up/down: 349/-367) Total: -18 bytes
This commit is contained in:
parent
73d702ee07
commit
0112ff5203
229
editors/vi.c
229
editors/vi.c
@ -57,34 +57,6 @@ enum {
|
|||||||
MAX_SCR_ROWS = CONFIG_FEATURE_VI_MAX_LEN,
|
MAX_SCR_ROWS = CONFIG_FEATURE_VI_MAX_LEN,
|
||||||
};
|
};
|
||||||
|
|
||||||
// "Keycodes" that report an escape sequence.
|
|
||||||
// We use something which fits into signed char,
|
|
||||||
// yet doesn't represent any valid Unicode characher.
|
|
||||||
enum {
|
|
||||||
VI_K_UP = -1, // cursor key Up
|
|
||||||
VI_K_DOWN = -2, // cursor key Down
|
|
||||||
VI_K_RIGHT = -3, // Cursor Key Right
|
|
||||||
VI_K_LEFT = -4, // cursor key Left
|
|
||||||
VI_K_HOME = -5, // Cursor Key Home
|
|
||||||
VI_K_END = -6, // Cursor Key End
|
|
||||||
VI_K_INSERT = -7, // Cursor Key Insert
|
|
||||||
VI_K_DELETE = -8, // Cursor Key Insert
|
|
||||||
VI_K_PAGEUP = -9, // Cursor Key Page Up
|
|
||||||
VI_K_PAGEDOWN = -10, // Cursor Key Page Down
|
|
||||||
VI_K_FUN1 = -11, // Function Key F1
|
|
||||||
VI_K_FUN2 = -12, // Function Key F2
|
|
||||||
VI_K_FUN3 = -13, // Function Key F3
|
|
||||||
VI_K_FUN4 = -14, // Function Key F4
|
|
||||||
VI_K_FUN5 = -15, // Function Key F5
|
|
||||||
VI_K_FUN6 = -16, // Function Key F6
|
|
||||||
VI_K_FUN7 = -17, // Function Key F7
|
|
||||||
VI_K_FUN8 = -18, // Function Key F8
|
|
||||||
VI_K_FUN9 = -19, // Function Key F9
|
|
||||||
VI_K_FUN10 = -20, // Function Key F10
|
|
||||||
VI_K_FUN11 = -21, // Function Key F11
|
|
||||||
VI_K_FUN12 = -22, // Function Key F12
|
|
||||||
};
|
|
||||||
|
|
||||||
/* vt102 typical ESC sequence */
|
/* vt102 typical ESC sequence */
|
||||||
/* terminal standout start/normal ESC sequence */
|
/* terminal standout start/normal ESC sequence */
|
||||||
static const char SOs[] ALIGN1 = "\033[7m";
|
static const char SOs[] ALIGN1 = "\033[7m";
|
||||||
@ -179,6 +151,7 @@ struct globals {
|
|||||||
char erase_char; // the users erase character
|
char erase_char; // the users erase character
|
||||||
char last_input_char; // last char read from user
|
char last_input_char; // last char read from user
|
||||||
|
|
||||||
|
smalluint chars_to_parse;
|
||||||
#if ENABLE_FEATURE_VI_DOT_CMD
|
#if ENABLE_FEATURE_VI_DOT_CMD
|
||||||
smallint adding2q; // are we currently adding user input to q
|
smallint adding2q; // are we currently adding user input to q
|
||||||
int lmc_len; // length of last_modifying_cmd
|
int lmc_len; // length of last_modifying_cmd
|
||||||
@ -193,7 +166,7 @@ struct globals {
|
|||||||
#if ENABLE_FEATURE_VI_SEARCH
|
#if ENABLE_FEATURE_VI_SEARCH
|
||||||
char *last_search_pattern; // last pattern from a '/' or '?' search
|
char *last_search_pattern; // last pattern from a '/' or '?' search
|
||||||
#endif
|
#endif
|
||||||
int chars_to_parse;
|
|
||||||
/* former statics */
|
/* former statics */
|
||||||
#if ENABLE_FEATURE_VI_YANKMARK
|
#if ENABLE_FEATURE_VI_YANKMARK
|
||||||
char *edit_file__cur_line;
|
char *edit_file__cur_line;
|
||||||
@ -259,9 +232,10 @@ struct globals {
|
|||||||
#define screensize (G.screensize )
|
#define screensize (G.screensize )
|
||||||
#define screenbegin (G.screenbegin )
|
#define screenbegin (G.screenbegin )
|
||||||
#define tabstop (G.tabstop )
|
#define tabstop (G.tabstop )
|
||||||
|
#define last_forward_char (G.last_forward_char )
|
||||||
#define erase_char (G.erase_char )
|
#define erase_char (G.erase_char )
|
||||||
#define last_input_char (G.last_input_char )
|
#define last_input_char (G.last_input_char )
|
||||||
#define last_forward_char (G.last_forward_char )
|
#define chars_to_parse (G.chars_to_parse )
|
||||||
#if ENABLE_FEATURE_VI_READONLY
|
#if ENABLE_FEATURE_VI_READONLY
|
||||||
#define readonly_mode (G.readonly_mode )
|
#define readonly_mode (G.readonly_mode )
|
||||||
#else
|
#else
|
||||||
@ -274,7 +248,6 @@ struct globals {
|
|||||||
#define last_row (G.last_row )
|
#define last_row (G.last_row )
|
||||||
#define my_pid (G.my_pid )
|
#define my_pid (G.my_pid )
|
||||||
#define last_search_pattern (G.last_search_pattern)
|
#define last_search_pattern (G.last_search_pattern)
|
||||||
#define chars_to_parse (G.chars_to_parse )
|
|
||||||
|
|
||||||
#define edit_file__cur_line (G.edit_file__cur_line)
|
#define edit_file__cur_line (G.edit_file__cur_line)
|
||||||
#define refresh__old_offset (G.refresh__old_offset)
|
#define refresh__old_offset (G.refresh__old_offset)
|
||||||
@ -2200,130 +2173,14 @@ static int mysleep(int hund) // sleep for 'h' 1/100 seconds
|
|||||||
static int readit(void) // read (maybe cursor) key from stdin
|
static int readit(void) // read (maybe cursor) key from stdin
|
||||||
{
|
{
|
||||||
int c;
|
int c;
|
||||||
int n;
|
|
||||||
|
|
||||||
// Known escape sequences for cursor and function keys.
|
|
||||||
static const struct esc_cmds {
|
|
||||||
const char seq[4];
|
|
||||||
signed char val;
|
|
||||||
} esccmds[] = {
|
|
||||||
{"OA" , VI_K_UP }, // Cursor Key Up
|
|
||||||
{"OB" , VI_K_DOWN }, // Cursor Key Down
|
|
||||||
{"OC" , VI_K_RIGHT }, // Cursor Key Right
|
|
||||||
{"OD" , VI_K_LEFT }, // Cursor Key Left
|
|
||||||
{"OH" , VI_K_HOME }, // Cursor Key Home
|
|
||||||
{"OF" , VI_K_END }, // Cursor Key End
|
|
||||||
{"OP" , VI_K_FUN1 }, // Function Key F1
|
|
||||||
{"OQ" , VI_K_FUN2 }, // Function Key F2
|
|
||||||
{"OR" , VI_K_FUN3 }, // Function Key F3
|
|
||||||
{"OS" , VI_K_FUN4 }, // Function Key F4
|
|
||||||
|
|
||||||
{"[A" , VI_K_UP }, // Cursor Key Up
|
|
||||||
{"[B" , VI_K_DOWN }, // Cursor Key Down
|
|
||||||
{"[C" , VI_K_RIGHT }, // Cursor Key Right
|
|
||||||
{"[D" , VI_K_LEFT }, // Cursor Key Left
|
|
||||||
{"[H" , VI_K_HOME }, // Cursor Key Home
|
|
||||||
{"[F" , VI_K_END }, // Cursor Key End
|
|
||||||
{"[1~" , VI_K_HOME }, // Cursor Key Home
|
|
||||||
{"[2~" , VI_K_INSERT }, // Cursor Key Insert
|
|
||||||
{"[3~" , VI_K_DELETE }, // Cursor Key Delete
|
|
||||||
{"[4~" , VI_K_END }, // Cursor Key End
|
|
||||||
{"[5~" , VI_K_PAGEUP }, // Cursor Key Page Up
|
|
||||||
{"[6~" , VI_K_PAGEDOWN}, // Cursor Key Page Down
|
|
||||||
// careful: these have no terminating NUL!
|
|
||||||
{"[11~", VI_K_FUN1 }, // Function Key F1
|
|
||||||
{"[12~", VI_K_FUN2 }, // Function Key F2
|
|
||||||
{"[13~", VI_K_FUN3 }, // Function Key F3
|
|
||||||
{"[14~", VI_K_FUN4 }, // Function Key F4
|
|
||||||
{"[15~", VI_K_FUN5 }, // Function Key F5
|
|
||||||
{"[17~", VI_K_FUN6 }, // Function Key F6
|
|
||||||
{"[18~", VI_K_FUN7 }, // Function Key F7
|
|
||||||
{"[19~", VI_K_FUN8 }, // Function Key F8
|
|
||||||
{"[20~", VI_K_FUN9 }, // Function Key F9
|
|
||||||
{"[21~", VI_K_FUN10 }, // Function Key F10
|
|
||||||
{"[23~", VI_K_FUN11 }, // Function Key F11
|
|
||||||
{"[24~", VI_K_FUN12 }, // Function Key F12
|
|
||||||
};
|
|
||||||
|
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
|
c = read_key(STDIN_FILENO, &chars_to_parse, readbuffer);
|
||||||
n = chars_to_parse;
|
if (c == -1) { // EOF/error
|
||||||
if (n == 0) {
|
go_bottom_and_clear_to_eol();
|
||||||
// If no data, block waiting for input. (If we read more than the
|
cookmode(); // terminal to "cooked"
|
||||||
// minimal ESC sequence size, the "n=0" below would instead have to
|
bb_error_msg_and_die("can't read user input");
|
||||||
// figure out how much to keep, resulting in larger code.)
|
|
||||||
n = safe_read(0, readbuffer, 3);
|
|
||||||
if (n <= 0) {
|
|
||||||
error:
|
|
||||||
go_bottom_and_clear_to_eol();
|
|
||||||
cookmode(); // terminal to "cooked"
|
|
||||||
bb_error_msg_and_die("can't read user input");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Grab character to return from buffer
|
|
||||||
c = (unsigned char)readbuffer[0];
|
|
||||||
// Returning NUL from this routine would be bad.
|
|
||||||
if (c == '\0')
|
|
||||||
c = ' ';
|
|
||||||
n--;
|
|
||||||
if (n) memmove(readbuffer, readbuffer + 1, n);
|
|
||||||
|
|
||||||
// If it's an escape sequence, loop through known matches.
|
|
||||||
if (c == 27) {
|
|
||||||
const struct esc_cmds *eindex;
|
|
||||||
struct pollfd pfd;
|
|
||||||
|
|
||||||
pfd.fd = STDIN_FILENO;
|
|
||||||
pfd.events = POLLIN;
|
|
||||||
for (eindex = esccmds; eindex < esccmds + ARRAY_SIZE(esccmds); eindex++)
|
|
||||||
{
|
|
||||||
// n - position in sequence we did not read yet
|
|
||||||
int i = 0; // position in sequence to compare
|
|
||||||
|
|
||||||
// Loop through chars in this sequence
|
|
||||||
for (;;) {
|
|
||||||
// So far escape sequence matches up to [i-1]
|
|
||||||
if (n <= i) {
|
|
||||||
// Need more chars, read another one if it wouldn't block.
|
|
||||||
// (Note that escape sequences come in as a unit,
|
|
||||||
// so if we would block it's not really an escape sequence.)
|
|
||||||
|
|
||||||
// Timeout is needed to reconnect escape sequences
|
|
||||||
// split up by transmission over a serial console.
|
|
||||||
|
|
||||||
if (safe_poll(&pfd, 1, 50)) {
|
|
||||||
if (safe_read(0, readbuffer + n, 1) <= 0)
|
|
||||||
goto error;
|
|
||||||
n++;
|
|
||||||
} else {
|
|
||||||
// No more data!
|
|
||||||
// Array is sorted from shortest to longest,
|
|
||||||
// we can't match anything later in array,
|
|
||||||
// break out of both loops.
|
|
||||||
goto loop_out;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (readbuffer[i] != eindex->seq[i])
|
|
||||||
break; // try next seq
|
|
||||||
i++;
|
|
||||||
if (i == 4 || !eindex->seq[i]) { // entire seq matched
|
|
||||||
c = eindex->val; // sign extended!
|
|
||||||
n = 0;
|
|
||||||
// n -= i; memmove(...);
|
|
||||||
// would be more correct,
|
|
||||||
// but we never read ahead that much,
|
|
||||||
// and n == i here.
|
|
||||||
goto loop_out;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// We did not find matching sequence, it was a bare ESC.
|
|
||||||
// We possibly read and stored more input in readbuffer by now.
|
|
||||||
}
|
|
||||||
loop_out:
|
|
||||||
|
|
||||||
chars_to_parse = n;
|
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3013,21 +2870,21 @@ static void do_cmd(int c)
|
|||||||
|
|
||||||
/* if this is a cursor key, skip these checks */
|
/* if this is a cursor key, skip these checks */
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case VI_K_UP:
|
case KEYCODE_UP:
|
||||||
case VI_K_DOWN:
|
case KEYCODE_DOWN:
|
||||||
case VI_K_LEFT:
|
case KEYCODE_LEFT:
|
||||||
case VI_K_RIGHT:
|
case KEYCODE_RIGHT:
|
||||||
case VI_K_HOME:
|
case KEYCODE_HOME:
|
||||||
case VI_K_END:
|
case KEYCODE_END:
|
||||||
case VI_K_PAGEUP:
|
case KEYCODE_PAGEUP:
|
||||||
case VI_K_PAGEDOWN:
|
case KEYCODE_PAGEDOWN:
|
||||||
case VI_K_DELETE:
|
case KEYCODE_DELETE:
|
||||||
goto key_cmd_mode;
|
goto key_cmd_mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cmd_mode == 2) {
|
if (cmd_mode == 2) {
|
||||||
// flip-flop Insert/Replace mode
|
// flip-flop Insert/Replace mode
|
||||||
if (c == VI_K_INSERT)
|
if (c == KEYCODE_INSERT)
|
||||||
goto dc_i;
|
goto dc_i;
|
||||||
// we are 'R'eplacing the current *dot with new char
|
// we are 'R'eplacing the current *dot with new char
|
||||||
if (*dot == '\n') {
|
if (*dot == '\n') {
|
||||||
@ -3044,7 +2901,7 @@ static void do_cmd(int c)
|
|||||||
}
|
}
|
||||||
if (cmd_mode == 1) {
|
if (cmd_mode == 1) {
|
||||||
// hitting "Insert" twice means "R" replace mode
|
// hitting "Insert" twice means "R" replace mode
|
||||||
if (c == VI_K_INSERT) goto dc5;
|
if (c == KEYCODE_INSERT) goto dc5;
|
||||||
// insert the char c at "dot"
|
// insert the char c at "dot"
|
||||||
if (1 <= c || Isprint(c)) {
|
if (1 <= c || Isprint(c)) {
|
||||||
dot = char_insert(dot, c);
|
dot = char_insert(dot, c);
|
||||||
@ -3108,7 +2965,7 @@ static void do_cmd(int c)
|
|||||||
case 0x00: // nul- ignore
|
case 0x00: // nul- ignore
|
||||||
break;
|
break;
|
||||||
case 2: // ctrl-B scroll up full screen
|
case 2: // ctrl-B scroll up full screen
|
||||||
case VI_K_PAGEUP: // Cursor Key Page Up
|
case KEYCODE_PAGEUP: // Cursor Key Page Up
|
||||||
dot_scroll(rows - 2, -1);
|
dot_scroll(rows - 2, -1);
|
||||||
break;
|
break;
|
||||||
case 4: // ctrl-D scroll down half screen
|
case 4: // ctrl-D scroll down half screen
|
||||||
@ -3118,14 +2975,14 @@ static void do_cmd(int c)
|
|||||||
dot_scroll(1, 1);
|
dot_scroll(1, 1);
|
||||||
break;
|
break;
|
||||||
case 6: // ctrl-F scroll down full screen
|
case 6: // ctrl-F scroll down full screen
|
||||||
case VI_K_PAGEDOWN: // Cursor Key Page Down
|
case KEYCODE_PAGEDOWN: // Cursor Key Page Down
|
||||||
dot_scroll(rows - 2, 1);
|
dot_scroll(rows - 2, 1);
|
||||||
break;
|
break;
|
||||||
case 7: // ctrl-G show current status
|
case 7: // ctrl-G show current status
|
||||||
last_status_cksum = 0; // force status update
|
last_status_cksum = 0; // force status update
|
||||||
break;
|
break;
|
||||||
case 'h': // h- move left
|
case 'h': // h- move left
|
||||||
case VI_K_LEFT: // cursor key Left
|
case KEYCODE_LEFT: // cursor key Left
|
||||||
case 8: // ctrl-H- move left (This may be ERASE char)
|
case 8: // ctrl-H- move left (This may be ERASE char)
|
||||||
case 0x7f: // DEL- move left (This may be ERASE char)
|
case 0x7f: // DEL- move left (This may be ERASE char)
|
||||||
if (cmdcnt-- > 1) {
|
if (cmdcnt-- > 1) {
|
||||||
@ -3135,7 +2992,7 @@ static void do_cmd(int c)
|
|||||||
break;
|
break;
|
||||||
case 10: // Newline ^J
|
case 10: // Newline ^J
|
||||||
case 'j': // j- goto next line, same col
|
case 'j': // j- goto next line, same col
|
||||||
case VI_K_DOWN: // cursor key Down
|
case KEYCODE_DOWN: // cursor key Down
|
||||||
if (cmdcnt-- > 1) {
|
if (cmdcnt-- > 1) {
|
||||||
do_cmd(c);
|
do_cmd(c);
|
||||||
} // repeat cnt
|
} // repeat cnt
|
||||||
@ -3174,7 +3031,7 @@ static void do_cmd(int c)
|
|||||||
break;
|
break;
|
||||||
case ' ': // move right
|
case ' ': // move right
|
||||||
case 'l': // move right
|
case 'l': // move right
|
||||||
case VI_K_RIGHT: // Cursor Key Right
|
case KEYCODE_RIGHT: // Cursor Key Right
|
||||||
if (cmdcnt-- > 1) {
|
if (cmdcnt-- > 1) {
|
||||||
do_cmd(c);
|
do_cmd(c);
|
||||||
} // repeat cnt
|
} // repeat cnt
|
||||||
@ -3259,7 +3116,7 @@ static void do_cmd(int c)
|
|||||||
break;
|
break;
|
||||||
#endif /* FEATURE_VI_YANKMARK */
|
#endif /* FEATURE_VI_YANKMARK */
|
||||||
case '$': // $- goto end of line
|
case '$': // $- goto end of line
|
||||||
case VI_K_END: // Cursor Key End
|
case KEYCODE_END: // Cursor Key End
|
||||||
if (cmdcnt-- > 1) {
|
if (cmdcnt-- > 1) {
|
||||||
do_cmd(c);
|
do_cmd(c);
|
||||||
} // repeat cnt
|
} // repeat cnt
|
||||||
@ -3584,7 +3441,7 @@ static void do_cmd(int c)
|
|||||||
dot_skip_over_ws();
|
dot_skip_over_ws();
|
||||||
//**** fall through to ... 'i'
|
//**** fall through to ... 'i'
|
||||||
case 'i': // i- insert before current char
|
case 'i': // i- insert before current char
|
||||||
case VI_K_INSERT: // Cursor Key Insert
|
case KEYCODE_INSERT: // Cursor Key Insert
|
||||||
dc_i:
|
dc_i:
|
||||||
cmd_mode = 1; // start insrting
|
cmd_mode = 1; // start insrting
|
||||||
break;
|
break;
|
||||||
@ -3637,7 +3494,7 @@ static void do_cmd(int c)
|
|||||||
dc5:
|
dc5:
|
||||||
cmd_mode = 2;
|
cmd_mode = 2;
|
||||||
break;
|
break;
|
||||||
case VI_K_DELETE:
|
case KEYCODE_DELETE:
|
||||||
c = 'x';
|
c = 'x';
|
||||||
// fall through
|
// fall through
|
||||||
case 'X': // X- delete char before dot
|
case 'X': // X- delete char before dot
|
||||||
@ -3787,7 +3644,7 @@ static void do_cmd(int c)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 'k': // k- goto prev line, same col
|
case 'k': // k- goto prev line, same col
|
||||||
case VI_K_UP: // cursor key Up
|
case KEYCODE_UP: // cursor key Up
|
||||||
if (cmdcnt-- > 1) {
|
if (cmdcnt-- > 1) {
|
||||||
do_cmd(c);
|
do_cmd(c);
|
||||||
} // repeat cnt
|
} // repeat cnt
|
||||||
@ -3852,23 +3709,25 @@ static void do_cmd(int c)
|
|||||||
end_cmd_q(); // stop adding to q
|
end_cmd_q(); // stop adding to q
|
||||||
break;
|
break;
|
||||||
//----- The Cursor and Function Keys -----------------------------
|
//----- The Cursor and Function Keys -----------------------------
|
||||||
case VI_K_HOME: // Cursor Key Home
|
case KEYCODE_HOME: // Cursor Key Home
|
||||||
dot_begin();
|
dot_begin();
|
||||||
break;
|
break;
|
||||||
// The Fn keys could point to do_macro which could translate them
|
// The Fn keys could point to do_macro which could translate them
|
||||||
case VI_K_FUN1: // Function Key F1
|
#if 0
|
||||||
case VI_K_FUN2: // Function Key F2
|
case KEYCODE_FUN1: // Function Key F1
|
||||||
case VI_K_FUN3: // Function Key F3
|
case KEYCODE_FUN2: // Function Key F2
|
||||||
case VI_K_FUN4: // Function Key F4
|
case KEYCODE_FUN3: // Function Key F3
|
||||||
case VI_K_FUN5: // Function Key F5
|
case KEYCODE_FUN4: // Function Key F4
|
||||||
case VI_K_FUN6: // Function Key F6
|
case KEYCODE_FUN5: // Function Key F5
|
||||||
case VI_K_FUN7: // Function Key F7
|
case KEYCODE_FUN6: // Function Key F6
|
||||||
case VI_K_FUN8: // Function Key F8
|
case KEYCODE_FUN7: // Function Key F7
|
||||||
case VI_K_FUN9: // Function Key F9
|
case KEYCODE_FUN8: // Function Key F8
|
||||||
case VI_K_FUN10: // Function Key F10
|
case KEYCODE_FUN9: // Function Key F9
|
||||||
case VI_K_FUN11: // Function Key F11
|
case KEYCODE_FUN10: // Function Key F10
|
||||||
case VI_K_FUN12: // Function Key F12
|
case KEYCODE_FUN11: // Function Key F11
|
||||||
|
case KEYCODE_FUN12: // Function Key F12
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
dc1:
|
dc1:
|
||||||
|
@ -921,6 +921,39 @@ void bb_displayroutes(int noresolve, int netstatfmt) FAST_FUNC;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* "Keycodes" that report an escape sequence.
|
||||||
|
* We use something which fits into signed char,
|
||||||
|
* yet doesn't represent any valid Unicode characher.
|
||||||
|
* Also, -1 is reserved for error indication and we don't use it. */
|
||||||
|
enum {
|
||||||
|
KEYCODE_UP = -2,
|
||||||
|
KEYCODE_DOWN = -3,
|
||||||
|
KEYCODE_RIGHT = -4,
|
||||||
|
KEYCODE_LEFT = -5,
|
||||||
|
KEYCODE_HOME = -6,
|
||||||
|
KEYCODE_END = -7,
|
||||||
|
KEYCODE_INSERT = -8,
|
||||||
|
KEYCODE_DELETE = -9,
|
||||||
|
KEYCODE_PAGEUP = -10,
|
||||||
|
KEYCODE_PAGEDOWN = -11,
|
||||||
|
#if 0
|
||||||
|
KEYCODE_FUN1 = -12,
|
||||||
|
KEYCODE_FUN2 = -13,
|
||||||
|
KEYCODE_FUN3 = -14,
|
||||||
|
KEYCODE_FUN4 = -15,
|
||||||
|
KEYCODE_FUN5 = -16,
|
||||||
|
KEYCODE_FUN6 = -17,
|
||||||
|
KEYCODE_FUN7 = -18,
|
||||||
|
KEYCODE_FUN8 = -19,
|
||||||
|
KEYCODE_FUN9 = -20,
|
||||||
|
KEYCODE_FUN10 = -21,
|
||||||
|
KEYCODE_FUN11 = -22,
|
||||||
|
KEYCODE_FUN12 = -23,
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
int read_key(int fd, smalluint *nbuffered, char *buffer) FAST_FUNC;
|
||||||
|
|
||||||
|
|
||||||
/* Networking */
|
/* Networking */
|
||||||
int create_icmp_socket(void) FAST_FUNC;
|
int create_icmp_socket(void) FAST_FUNC;
|
||||||
int create_icmp6_socket(void) FAST_FUNC;
|
int create_icmp6_socket(void) FAST_FUNC;
|
||||||
|
@ -75,6 +75,7 @@ lib-y += process_escape_sequence.o
|
|||||||
lib-y += procps.o
|
lib-y += procps.o
|
||||||
lib-y += ptr_to_globals.o
|
lib-y += ptr_to_globals.o
|
||||||
lib-y += read.o
|
lib-y += read.o
|
||||||
|
lib-y += read_key.o
|
||||||
lib-y += recursive_action.o
|
lib-y += recursive_action.o
|
||||||
lib-y += remove_file.o
|
lib-y += remove_file.o
|
||||||
lib-y += restricted_shell.o
|
lib-y += restricted_shell.o
|
||||||
|
Loading…
Reference in New Issue
Block a user