[git commit] libbb: better comments in read_key()
Denys Vlasenko
vda.linux at googlemail.com
Sun Feb 15 14:16:26 UTC 2026
commit: https://git.busybox.net/busybox/commit/?id=d972f56837947afb086e01bedd9095e327912214
branch: https://git.busybox.net/busybox/log/?h=master
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
libbb/read_key.c | 75 ++++++++++++++++++++++++++++----------------------------
1 file changed, 38 insertions(+), 37 deletions(-)
diff --git a/libbb/read_key.c b/libbb/read_key.c
index 3df9769f7..b1e5b1ddd 100644
--- a/libbb/read_key.c
+++ b/libbb/read_key.c
@@ -26,7 +26,7 @@ int64_t FAST_FUNC read_key(int fd, char *buffer, int timeout)
'd' |0x80,KEYCODE_ALT_D ,
/* lineedit mimics bash: Alt-f and Alt-b are forward/backward
* word jumps. We cheat here and make them return ALT_LEFT/RIGHT
- * keycodes. This way, lineedit need no special code to handle them.
+ * keycodes. This way, lineedit needs no special code to handle them.
* If we'll need to distinguish them, introduce new ALT_F/B keycodes,
* and update lineedit to react to them.
*/
@@ -40,12 +40,12 @@ int64_t FAST_FUNC read_key(int fd, char *buffer, int timeout)
'O','F' |0x80,KEYCODE_END ,
#if 0
'O','P' |0x80,KEYCODE_FUN1 ,
- /* [ESC] ESC O [2] P - [Alt-][Shift-]F1 */
- /* ESC [ O 1 ; 2 P - Shift-F1 */
- /* ESC [ O 1 ; 3 P - Alt-F1 */
- /* ESC [ O 1 ; 4 P - Alt-Shift-F1 */
- /* ESC [ O 1 ; 5 P - Ctrl-F1 */
- /* ESC [ O 1 ; 6 P - Ctrl-Shift-F1 */
+ // [ESC] ESC O [2] P - [Alt-][Shift-]F1
+ // ESC [ O 1 ; 2 P - Shift-F1
+ // ESC [ O 1 ; 3 P - Alt-F1
+ // ESC [ O 1 ; 4 P - Alt-Shift-F1
+ // ESC [ O 1 ; 5 P - Ctrl-F1
+ // ESC [ O 1 ; 6 P - Ctrl-Shift-F1
'O','Q' |0x80,KEYCODE_FUN2 ,
'O','R' |0x80,KEYCODE_FUN3 ,
'O','S' |0x80,KEYCODE_FUN4 ,
@@ -54,29 +54,29 @@ int64_t FAST_FUNC read_key(int fd, char *buffer, int timeout)
'[','B' |0x80,KEYCODE_DOWN ,
'[','C' |0x80,KEYCODE_RIGHT ,
'[','D' |0x80,KEYCODE_LEFT ,
- /* ESC [ 1 ; 2 x, where x = A/B/C/D: Shift-<arrow> */
- /* ESC [ 1 ; 3 x, where x = A/B/C/D: Alt-<arrow> - implemented below */
- /* ESC [ 1 ; 4 x, where x = A/B/C/D: Alt-Shift-<arrow> */
- /* ESC [ 1 ; 5 x, where x = A/B/C/D: Ctrl-<arrow> - implemented below */
- /* ESC [ 1 ; 6 x, where x = A/B/C/D: Ctrl-Shift-<arrow> */
- /* ESC [ 1 ; 7 x, where x = A/B/C/D: Ctrl-Alt-<arrow> */
- /* ESC [ 1 ; 8 x, where x = A/B/C/D: Ctrl-Alt-Shift-<arrow> */
+ // ESC [ 1 ; 2 x, where x = A/B/C/D: Shift-<arrow>
+ // ESC [ 1 ; 3 x, where x = A/B/C/D: Alt-<arrow> - implemented below
+ // ESC [ 1 ; 4 x, where x = A/B/C/D: Alt-Shift-<arrow>
+ // ESC [ 1 ; 5 x, where x = A/B/C/D: Ctrl-<arrow> - implemented below
+ // ESC [ 1 ; 6 x, where x = A/B/C/D: Ctrl-Shift-<arrow>
+ // ESC [ 1 ; 7 x, where x = A/B/C/D: Ctrl-Alt-<arrow>
+ // ESC [ 1 ; 8 x, where x = A/B/C/D: Ctrl-Alt-Shift-<arrow>
'[','H' |0x80,KEYCODE_HOME , /* xterm */
'[','F' |0x80,KEYCODE_END , /* xterm */
- /* [ESC] ESC [ [2] H - [Alt-][Shift-]Home (End similarly?) */
- /* '[','Z' |0x80,KEYCODE_SHIFT_TAB, */
+ // [ESC] ESC [ [2] H - [Alt-][Shift-]Home (End similarly?)
+ // '[','Z' |0x80,KEYCODE_SHIFT_TAB,
'[','1','~' |0x80,KEYCODE_HOME , /* vt100? linux vt? or what? */
'[','2','~' |0x80,KEYCODE_INSERT ,
- /* ESC [ 2 ; 3 ~ - Alt-Insert */
+ // ESC [ 2 ; 3 ~ - Alt-Insert
'[','3','~' |0x80,KEYCODE_DELETE ,
- /* [ESC] ESC [ 3 [;2] ~ - [Alt-][Shift-]Delete */
- /* ESC [ 3 ; 3 ~ - Alt-Delete */
- /* ESC [ 3 ; 5 ~ - Ctrl-Delete */
+ // [ESC] ESC [ 3 [;2] ~ - [Alt-][Shift-]Delete
+ // ESC [ 3 ; 3 ~ - Alt-Delete
+ // ESC [ 3 ; 5 ~ - Ctrl-Delete
'[','4','~' |0x80,KEYCODE_END , /* vt100? linux vt? or what? */
'[','5','~' |0x80,KEYCODE_PAGEUP ,
- /* ESC [ 5 ; 3 ~ - Alt-PgUp */
- /* ESC [ 5 ; 5 ~ - Ctrl-PgUp */
- /* ESC [ 5 ; 7 ~ - Ctrl-Alt-PgUp */
+ // ESC [ 5 ; 3 ~ - Alt-PgUp
+ // ESC [ 5 ; 5 ~ - Ctrl-PgUp
+ // ESC [ 5 ; 7 ~ - Ctrl-Alt-PgUp
'[','6','~' |0x80,KEYCODE_PAGEDOWN,
'[','7','~' |0x80,KEYCODE_HOME , /* vt100? linux vt? or what? */
'[','8','~' |0x80,KEYCODE_END , /* vt100? linux vt? or what? */
@@ -86,7 +86,7 @@ int64_t FAST_FUNC read_key(int fd, char *buffer, int timeout)
'[','1','3','~'|0x80,KEYCODE_FUN3 , /* old xterm... */
'[','1','4','~'|0x80,KEYCODE_FUN4 , /* old xterm... */
'[','1','5','~'|0x80,KEYCODE_FUN5 ,
- /* [ESC] ESC [ 1 5 [;2] ~ - [Alt-][Shift-]F5 */
+ // [ESC] ESC [ 1 5 [;2] ~ - [Alt-][Shift-]F5
'[','1','7','~'|0x80,KEYCODE_FUN6 ,
'[','1','8','~'|0x80,KEYCODE_FUN7 ,
'[','1','9','~'|0x80,KEYCODE_FUN8 ,
@@ -94,21 +94,21 @@ int64_t FAST_FUNC read_key(int fd, char *buffer, int timeout)
'[','2','1','~'|0x80,KEYCODE_FUN10 ,
'[','2','3','~'|0x80,KEYCODE_FUN11 ,
'[','2','4','~'|0x80,KEYCODE_FUN12 ,
- /* ESC [ 2 4 ; 2 ~ - Shift-F12 */
- /* ESC [ 2 4 ; 3 ~ - Alt-F12 */
- /* ESC [ 2 4 ; 4 ~ - Alt-Shift-F12 */
- /* ESC [ 2 4 ; 5 ~ - Ctrl-F12 */
- /* ESC [ 2 4 ; 6 ~ - Ctrl-Shift-F12 */
+ // ESC [ 2 4 ; 2 ~ - Shift-F12
+ // ESC [ 2 4 ; 3 ~ - Alt-F12
+ // ESC [ 2 4 ; 4 ~ - Alt-Shift-F12
+ // ESC [ 2 4 ; 5 ~ - Ctrl-F12
+ // ESC [ 2 4 ; 6 ~ - Ctrl-Shift-F12
#endif
- /* '[','1',';','5','A' |0x80,KEYCODE_CTRL_UP , - unused */
- /* '[','1',';','5','B' |0x80,KEYCODE_CTRL_DOWN , - unused */
- '[','1',';','5','C' |0x80,KEYCODE_CTRL_RIGHT,
- '[','1',';','5','D' |0x80,KEYCODE_CTRL_LEFT ,
- /* '[','1',';','3','A' |0x80,KEYCODE_ALT_UP , - unused */
- /* '[','1',';','3','B' |0x80,KEYCODE_ALT_DOWN , - unused */
+ // '[','1',';','3','A' |0x80,KEYCODE_ALT_UP , - unused
+ // '[','1',';','3','B' |0x80,KEYCODE_ALT_DOWN , - unused
'[','1',';','3','C' |0x80,KEYCODE_ALT_RIGHT,
'[','1',';','3','D' |0x80,KEYCODE_ALT_LEFT ,
- /* '[','3',';','3','~' |0x80,KEYCODE_ALT_DELETE, - unused */
+ // '[','1',';','5','A' |0x80,KEYCODE_CTRL_UP , - unused
+ // '[','1',';','5','B' |0x80,KEYCODE_CTRL_DOWN , - unused
+ '[','1',';','5','C' |0x80,KEYCODE_CTRL_RIGHT,
+ '[','1',';','5','D' |0x80,KEYCODE_CTRL_LEFT ,
+ // '[','3',';','3','~' |0x80,KEYCODE_ALT_DELETE, - unused
0
};
@@ -205,7 +205,7 @@ int64_t FAST_FUNC read_key(int fd, char *buffer, int timeout)
/* Forward to last char */
while (!(*seq & 0x80))
seq++;
- /* Skip it and the keycode which follows */
+ /* Skip seq terminating byte, and KEYCODE_xyz byte that follows */
seq += 2;
break;
}
@@ -217,6 +217,7 @@ int64_t FAST_FUNC read_key(int fd, char *buffer, int timeout)
* but we never read ahead that much,
* and n == i here. */
buffer[-1] = 0;
+ /* Return KEYCODE_xyz (always negative) */
return (signed char)seq[i+1];
}
i++;
More information about the busybox-cvs
mailing list