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:
Daniel Eklöf 2020-11-11 18:26:47 +01:00
parent 61f4845a59
commit 7dcc885a7a
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
3 changed files with 12 additions and 0 deletions

8
csi.c
View file

@ -465,6 +465,12 @@ decset_decrst(struct terminal *term, unsigned param, bool enable)
term->meta.eight_bit = enable;
break;
case 1035:
/* numLock */
LOG_DBG("%s Num Lock modifier", enable ? "enabling" : "disabling");
term->num_lock_modifier = enable;
break;
case 1036:
/* metaSendsEscape */
LOG_DBG("%s meta-sends-escape", enable ? "enabling" : "disabling");
@ -586,6 +592,7 @@ xtsave(struct terminal *term, unsigned param)
case 1007: term->xtsave.alt_scrolling = term->alt_scrolling; 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 1035: term->xtsave.num_lock_modifier = term->num_lock_modifier; break;
case 1036: term->xtsave.meta_esc_prefix = term->meta.esc_prefix; break;
case 1049: term->xtsave.alt_screen = term->grid == &term->alt; break;
case 2004: term->xtsave.bracketed_paste = term->bracketed_paste; break;
@ -616,6 +623,7 @@ xtrestore(struct terminal *term, unsigned param)
case 1007: enable = term->xtsave.alt_scrolling; break;
case 1015: enable = term->xtsave.mouse_urxvt; 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 1049: enable = term->xtsave.alt_screen; break;
case 2004: enable = term->xtsave.bracketed_paste; break;

View file

@ -995,6 +995,7 @@ term_init(const struct config *conf, struct fdm *fdm, struct reaper *reaper,
.esc_prefix = true,
.eight_bit = true,
},
.num_lock_modifier = true,
.tab_stops = tll_init(),
.wl = wayl,
.render = {

View file

@ -250,6 +250,8 @@ struct terminal {
bool eight_bit;
} meta;
bool num_lock_modifier;
/* Saved DECSET modes - we save the SET state */
struct {
uint32_t origin:1;
@ -270,6 +272,7 @@ struct terminal {
uint32_t mouse_urxvt:1;
uint32_t meta_eight_bit:1;
uint32_t meta_esc_prefix:1;
uint32_t num_lock_modifier:1;
uint32_t alt_screen:1;
} xtsave;