mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-05 04:06:08 -05:00
commit
c3201b9770
4 changed files with 16 additions and 1 deletions
6
csi.c
6
csi.c
|
|
@ -536,6 +536,10 @@ decset_decrst(struct terminal *term, unsigned param, bool enable)
|
|||
term->bracketed_paste = enable;
|
||||
break;
|
||||
|
||||
case 27127:
|
||||
term->modify_escape_key = enable;
|
||||
break;
|
||||
|
||||
default:
|
||||
UNHANDLED();
|
||||
break;
|
||||
|
|
@ -583,6 +587,7 @@ xtsave(struct terminal *term, unsigned param)
|
|||
case 1042: term->xtsave.bell_is_urgent = term->bell_is_urgent; break;
|
||||
case 1049: term->xtsave.alt_screen = term->grid == &term->alt; break;
|
||||
case 2004: term->xtsave.bracketed_paste = term->bracketed_paste; break;
|
||||
case 27127: term->xtsave.modify_escape_key = term->modify_escape_key; break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -616,6 +621,7 @@ xtrestore(struct terminal *term, unsigned param)
|
|||
case 1042: enable = term->xtsave.bell_is_urgent; break;
|
||||
case 1049: enable = term->xtsave.alt_screen; break;
|
||||
case 2004: enable = term->xtsave.bracketed_paste; break;
|
||||
case 27127: enable = term->xtsave.modify_escape_key; break;
|
||||
|
||||
default: return;
|
||||
}
|
||||
|
|
|
|||
8
input.c
8
input.c
|
|
@ -886,7 +886,13 @@ key_press_release(struct seat *seat, struct terminal *term, uint32_t serial,
|
|||
keymap_mods |= seat->kbd.ctrl ? MOD_CTRL : MOD_NONE;
|
||||
keymap_mods |= seat->kbd.meta ? MOD_META : MOD_NONE;
|
||||
|
||||
const struct key_data *keymap = keymap_lookup(seat, term, sym, keymap_mods);
|
||||
const struct key_data *keymap;
|
||||
if (sym == XKB_KEY_Escape && keymap_mods == MOD_NONE && term->modify_escape_key) {
|
||||
static const struct key_data esc = {.seq = "\033[27;1;27~"};
|
||||
keymap = &esc;
|
||||
} else
|
||||
keymap = keymap_lookup(seat, term, sym, keymap_mods);
|
||||
|
||||
if (keymap != NULL) {
|
||||
term_to_slave(term, keymap->seq, strlen(keymap->seq));
|
||||
|
||||
|
|
|
|||
|
|
@ -1523,6 +1523,7 @@ term_reset(struct terminal *term, bool hard)
|
|||
term->insert_mode = false;
|
||||
term->bracketed_paste = false;
|
||||
term->focus_events = false;
|
||||
term->modify_escape_key = false;
|
||||
term->mouse_tracking = MOUSE_NONE;
|
||||
term->mouse_reporting = MOUSE_NORMAL;
|
||||
term->charsets.selected = 0;
|
||||
|
|
|
|||
|
|
@ -236,6 +236,7 @@ struct terminal {
|
|||
bool bracketed_paste;
|
||||
bool focus_events;
|
||||
bool alt_scrolling;
|
||||
bool modify_escape_key;
|
||||
enum cursor_origin origin;
|
||||
enum cursor_keys cursor_keys_mode;
|
||||
enum keypad_keys keypad_keys_mode;
|
||||
|
|
@ -296,6 +297,7 @@ struct terminal {
|
|||
uint32_t num_lock_modifier:1;
|
||||
uint32_t bell_is_urgent:1;
|
||||
uint32_t alt_screen:1;
|
||||
uint32_t modify_escape_key:1;
|
||||
} xtsave;
|
||||
|
||||
char *window_title;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue