aboutsummaryrefslogtreecommitdiff
path: root/libbb/read_key.c
diff options
context:
space:
mode:
Diffstat (limited to 'libbb/read_key.c')
-rw-r--r--libbb/read_key.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/libbb/read_key.c b/libbb/read_key.c
index 598bd94f5..614e2f9e0 100644
--- a/libbb/read_key.c
+++ b/libbb/read_key.c
@@ -33,14 +33,16 @@ int FAST_FUNC read_key(int fd, smalluint *nbuffered, char *buffer)
'[','B' |0x80,KEYCODE_DOWN ,
'[','C' |0x80,KEYCODE_RIGHT ,
'[','D' |0x80,KEYCODE_LEFT ,
- '[','H' |0x80,KEYCODE_HOME ,
- '[','F' |0x80,KEYCODE_END ,
- '[','1','~' |0x80,KEYCODE_HOME ,
+ '[','H' |0x80,KEYCODE_HOME , /* xterm */
+ '[','F' |0x80,KEYCODE_END , /* xterm */
+ '[','1','~' |0x80,KEYCODE_HOME , /* vt100? linux vt? or what? */
'[','2','~' |0x80,KEYCODE_INSERT ,
'[','3','~' |0x80,KEYCODE_DELETE ,
- '[','4','~' |0x80,KEYCODE_END ,
+ '[','4','~' |0x80,KEYCODE_END , /* vt100? linux vt? or what? */
'[','5','~' |0x80,KEYCODE_PAGEUP ,
'[','6','~' |0x80,KEYCODE_PAGEDOWN,
+ '[','7','~' |0x80,KEYCODE_HOME , /* vt100? linux vt? or what? */
+ '[','8','~' |0x80,KEYCODE_END , /* vt100? linux vt? or what? */
#if 0
'[','1','1','~'|0x80,KEYCODE_FUN1 ,
'[','1','2','~'|0x80,KEYCODE_FUN2 ,
@@ -58,7 +60,9 @@ int FAST_FUNC read_key(int fd, smalluint *nbuffered, char *buffer)
0
};
- n = *nbuffered;
+ n = 0;
+ if (nbuffered)
+ n = *nbuffered;
if (n == 0) {
/* If no data, block waiting for input. If we read more
* than the minimal ESC sequence size, the "n=0" below
@@ -141,6 +145,7 @@ int FAST_FUNC read_key(int fd, smalluint *nbuffered, char *buffer)
* by now. */
ret:
- *nbuffered = n;
+ if (nbuffered)
+ *nbuffered = n;
return c;
}