mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-03-31 07:11:09 -04:00
csi: implement “CSI ? 1035” - toggle Num Lock override
This adds a num_lock_modifier state to the terminal, and hooks up “CSI?1035h/l” to toggle it.
This commit is contained in:
parent
75bd780f02
commit
2382d6b448
3 changed files with 11 additions and 0 deletions
8
csi.c
8
csi.c
|
|
@ -470,6 +470,12 @@ decset_decrst(struct terminal *term, unsigned param, bool enable)
|
||||||
term->meta.eight_bit = enable;
|
term->meta.eight_bit = enable;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 1035:
|
||||||
|
/* numLock */
|
||||||
|
LOG_DBG("%s Num Lock modifier", enable ? "enabling" : "disabling");
|
||||||
|
term->num_lock_modifier = enable;
|
||||||
|
break;
|
||||||
|
|
||||||
case 1036:
|
case 1036:
|
||||||
/* metaSendsEscape */
|
/* metaSendsEscape */
|
||||||
LOG_DBG("%s meta-sends-escape", enable ? "enabling" : "disabling");
|
LOG_DBG("%s meta-sends-escape", enable ? "enabling" : "disabling");
|
||||||
|
|
@ -592,6 +598,7 @@ xtsave(struct terminal *term, unsigned param)
|
||||||
case 1007: term->xtsave.alt_scrolling = term->alt_scrolling; break;
|
case 1007: term->xtsave.alt_scrolling = term->alt_scrolling; break;
|
||||||
case 1015: term->xtsave.mouse_urxvt = term->mouse_reporting == MOUSE_URXVT; break;
|
case 1015: term->xtsave.mouse_urxvt = term->mouse_reporting == MOUSE_URXVT; break;
|
||||||
case 1034: term->xtsave.meta_eight_bit = term->meta.eight_bit; break;
|
case 1034: term->xtsave.meta_eight_bit = term->meta.eight_bit; break;
|
||||||
|
case 1035: term->xtsave.num_lock_modifier = term->num_lock_modifier; break;
|
||||||
case 1036: term->xtsave.meta_esc_prefix = term->meta.esc_prefix; break;
|
case 1036: term->xtsave.meta_esc_prefix = term->meta.esc_prefix; break;
|
||||||
case 1042: term->xtsave.bell_is_urgent = term->bell_is_urgent; break;
|
case 1042: term->xtsave.bell_is_urgent = term->bell_is_urgent; break;
|
||||||
case 1049: term->xtsave.alt_screen = term->grid == &term->alt; break;
|
case 1049: term->xtsave.alt_screen = term->grid == &term->alt; break;
|
||||||
|
|
@ -624,6 +631,7 @@ xtrestore(struct terminal *term, unsigned param)
|
||||||
case 1007: enable = term->xtsave.alt_scrolling; break;
|
case 1007: enable = term->xtsave.alt_scrolling; break;
|
||||||
case 1015: enable = term->xtsave.mouse_urxvt; break;
|
case 1015: enable = term->xtsave.mouse_urxvt; break;
|
||||||
case 1034: enable = term->xtsave.meta_eight_bit; break;
|
case 1034: enable = term->xtsave.meta_eight_bit; break;
|
||||||
|
case 1035: enable = term->xtsave.num_lock_modifier; break;
|
||||||
case 1036: enable = term->xtsave.meta_esc_prefix; break;
|
case 1036: enable = term->xtsave.meta_esc_prefix; break;
|
||||||
case 1042: enable = term->xtsave.bell_is_urgent; break;
|
case 1042: enable = term->xtsave.bell_is_urgent; break;
|
||||||
case 1049: enable = term->xtsave.alt_screen; break;
|
case 1049: enable = term->xtsave.alt_screen; break;
|
||||||
|
|
|
||||||
|
|
@ -1047,6 +1047,7 @@ term_init(const struct config *conf, struct fdm *fdm, struct reaper *reaper,
|
||||||
.esc_prefix = true,
|
.esc_prefix = true,
|
||||||
.eight_bit = true,
|
.eight_bit = true,
|
||||||
},
|
},
|
||||||
|
.num_lock_modifier = true,
|
||||||
.bell_is_urgent = conf->bell_is_urgent,
|
.bell_is_urgent = conf->bell_is_urgent,
|
||||||
.tab_stops = tll_init(),
|
.tab_stops = tll_init(),
|
||||||
.wl = wayl,
|
.wl = wayl,
|
||||||
|
|
|
||||||
|
|
@ -252,6 +252,7 @@ struct terminal {
|
||||||
bool eight_bit;
|
bool eight_bit;
|
||||||
} meta;
|
} meta;
|
||||||
|
|
||||||
|
bool num_lock_modifier;
|
||||||
bool bell_is_urgent;
|
bool bell_is_urgent;
|
||||||
|
|
||||||
/* Saved DECSET modes - we save the SET state */
|
/* Saved DECSET modes - we save the SET state */
|
||||||
|
|
@ -275,6 +276,7 @@ struct terminal {
|
||||||
uint32_t mouse_urxvt:1;
|
uint32_t mouse_urxvt:1;
|
||||||
uint32_t meta_eight_bit:1;
|
uint32_t meta_eight_bit:1;
|
||||||
uint32_t meta_esc_prefix:1;
|
uint32_t meta_esc_prefix:1;
|
||||||
|
uint32_t num_lock_modifier:1;
|
||||||
uint32_t bell_is_urgent:1;
|
uint32_t bell_is_urgent:1;
|
||||||
uint32_t alt_screen:1;
|
uint32_t alt_screen:1;
|
||||||
} xtsave;
|
} xtsave;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue