diff --git a/src/lib/in.c b/src/lib/in.c index 93e5e086e..e52199887 100644 --- a/src/lib/in.c +++ b/src/lib/in.c @@ -956,6 +956,10 @@ kitty_cb_functional(inputctx* ictx){ unsigned val = amata_next_numeric(&ictx->amata, "\x1b[", ';'); unsigned mods = amata_next_numeric(&ictx->amata, "", ':'); unsigned ev = amata_next_numeric(&ictx->amata, "", '~'); + if(val == 13) { + kitty_kbd(ictx, NCKEY_F03, mods, ev); + return 23; + } uint32_t kval = kitty_functional(val); if(kval == val){ kval = legacy_functional(val); @@ -1018,6 +1022,13 @@ kitty_cb_f3(inputctx* ictx){ return 2; } +static int +kitty_cb_f3_alternate(inputctx* ictx){ + amata_next_numeric(&ictx->amata, "\x1b[", '~'); + kitty_kbd(ictx, NCKEY_F03, 1, 0); + return 2; +} + static int kitty_cb_f4(inputctx* ictx){ unsigned mods = amata_next_numeric(&ictx->amata, "\x1b[1;", ':'); @@ -1778,6 +1789,7 @@ build_cflow_automaton(inputctx* ictx){ // technically these must begin with "4" or "8"; enforce in callbacks { "[\\N;\\N;\\Nt", geom_cb, }, { "[\\Nu", kitty_cb_simple, }, + { "[13~", kitty_cb_f3_alternate, }, { "[\\N;\\N~", wezterm_cb, }, { "[\\N;\\Nu", kitty_cb, }, { "[\\N;\\N;\\Nu", kitty_cb_atxt1, }, @@ -2059,6 +2071,7 @@ prep_kitty_special_keys(inputctx* ictx){ { .esc = "\x1b[P", .key = NCKEY_F01, }, { .esc = "\x1b[Q", .key = NCKEY_F02, }, { .esc = "\x1b[R", .key = NCKEY_F03, }, + { .esc = "\x1b[13~", .key = NCKEY_F03, }, { .esc = "\x1b[S", .key = NCKEY_F04, }, { .esc = "\x1b[127;2u", .key = NCKEY_BACKSPACE, .modifiers = NCKEY_MOD_SHIFT, },