Compare commits

...
Author SHA1 Message Date
0bf4610c02 ingest: Define ncurses key maps for ctrl/shift shortcuts
This ensure that sequences like ctrl+up or shift+end work regardless of
the terminal settings. Tested with TMUX and foot.
2026-10-15 16:22:29 -05:00
731b014397 ingest: Add macros for ctrl + up/down
I don't think ncurses has macros for these, but the magic numbers I have
in there seem to work. So add macros for those that conform to the rest
of the ncurses KEY_* naming convention.
2026-10-15 16:19:25 -05:00

View file

@ -33,6 +33,13 @@ static int read_cmd_page(const char *home_dir, int idx);
static void update_cmd_pg_status(void); static void update_cmd_pg_status(void);
static void inter_command_wait(void); static void inter_command_wait(void);
#ifndef KEY_CUP
# define KEY_CUP (566)
#endif
#ifndef KEY_CDOWN
# define KEY_CDOWN (525)
#endif
int int
ingest_start(bytenuts_t *bytenuts) ingest_start(bytenuts_t *bytenuts)
{ {
@ -46,6 +53,12 @@ ingest_start(bytenuts_t *bytenuts)
ingest.cmd_pg_cur = -1; ingest.cmd_pg_cur = -1;
ingest.xmodem_hist = bstr_history_create(); ingest.xmodem_hist = bstr_history_create();
/* ensure character sequences work in all terminals */
define_key("\033[1;5A", KEY_CUP);
define_key("\033[1;5B", KEY_CDOWN);
define_key("\033[1;2H", KEY_SHOME);
define_key("\033[1;2F", KEY_SEND);
HOME = getenv("HOME"); HOME = getenv("HOME");
if (HOME) { if (HOME) {
int idx = 0; int idx = 0;
@ -801,10 +814,10 @@ handle_functions(int ch)
case KEY_SEND: /* go to front of log */ case KEY_SEND: /* go to front of log */
cheerios_gofwd(-1); cheerios_gofwd(-1);
return 1; return 1;
case 566: /* ctrl + up arrow */ case KEY_CUP: /* ctrl + up arrow */
cheerios_goback(1); cheerios_goback(1);
return 1; return 1;
case 525: /* ctrl + down arrow */ case KEY_CDOWN: /* ctrl + down arrow */
cheerios_gofwd(1); cheerios_gofwd(1);
return 1; return 1;
case KEY_RESIZE: case KEY_RESIZE: