common: cli_readline: Improve command line editing
authorJames Byrne <james.byrne@origamienergy.com>
Tue, 16 Aug 2016 17:16:28 +0000 (18:16 +0100)
committerTom Rini <trini@konsulko.com>
Sat, 20 Aug 2016 18:03:24 +0000 (14:03 -0400)
commitfc18e9b3d5507845ea8a60a101ee3a368316068e
tree04ab15bc3d7e88f24cec528d52a7037af321a8b1
parent2883c4edfba4082852fc71a276b040b08f171355
common: cli_readline: Improve command line editing

This improves the cread_line() function so that it will correctly
process the 'Home', 'End', 'Delete' and arrow key escape sequences
produced by various terminal emulators. This makes command line editing
a more pleasant experience.

The previous code only supported the cursor keys and the 'Home' key, and
only for certain terminal emulator configurations. This adds support for
the 'End and 'Delete' keys, and recognises a wider range of escape
sequences. For example, the left arrow key can be 'ESC O D' instead of
'ESC [ D', and the 'Home' key can be 'ESC [ H', 'ESC O H', 'ESC 1 ~' or
'ESC 7 ~', depending on what terminal emulator you use and how it is
configured.

Signed-off-by: James Byrne <james.byrne@origamienergy.com>
Changes for v2
   - Explicitly initialize variable to avoid spurious compiler warning.
Changes for v3
   - Remove unnecessary setting of 'act' to ESC_REJECT (now its default
     value).
common/cli_readline.c