diff options
author | Nicholas Marriott <nicholas.marriott@gmail.com> | 2020-05-15 17:40:24 +0100 |
---|---|---|
committer | Nicholas Marriott <nicholas.marriott@gmail.com> | 2020-05-15 17:40:24 +0100 |
commit | c364a7142c10af9a82b0ef19a3ef204b605a225d (patch) | |
tree | 45e7c1dc54f4e6ea894bede5dfaecaad89bd26fd /input.c | |
parent | 3a4f3ee087ab5273e5d49ab33abf9135c3a21636 (diff) | |
download | rtmux-c364a7142c10af9a82b0ef19a3ef204b605a225d.tar.gz rtmux-c364a7142c10af9a82b0ef19a3ef204b605a225d.tar.bz2 rtmux-c364a7142c10af9a82b0ef19a3ef204b605a225d.zip |
Only forward extended keys if the application has requested them, even though
we use the CSI u sequence and xterm uses CSI 27 ~ - this is what mintty does as
well.
Diffstat (limited to 'input.c')
-rw-r--r-- | input.c | 17 |
1 files changed, 17 insertions, 0 deletions
@@ -241,6 +241,8 @@ enum input_csi_type { INPUT_CSI_HPA, INPUT_CSI_ICH, INPUT_CSI_IL, + INPUT_CSI_MODOFF, + INPUT_CSI_MODSET, INPUT_CSI_RCP, INPUT_CSI_REP, INPUT_CSI_RM, @@ -288,7 +290,9 @@ static const struct input_table_entry input_csi_table[] = { { 'h', "?", INPUT_CSI_SM_PRIVATE }, { 'l', "", INPUT_CSI_RM }, { 'l', "?", INPUT_CSI_RM_PRIVATE }, + { 'm', ">", INPUT_CSI_MODSET }, { 'm', "", INPUT_CSI_SGR }, + { 'n', ">", INPUT_CSI_MODOFF }, { 'n', "", INPUT_CSI_DSR }, { 'q', " ", INPUT_CSI_DECSCUSR }, { 'q', ">", INPUT_CSI_XDA }, @@ -1380,6 +1384,19 @@ input_csi_dispatch(struct input_ctx *ictx) if (n != -1 && m != -1) screen_write_cursormove(sctx, m - 1, n - 1, 1); break; + case INPUT_CSI_MODSET: + n = input_get(ictx, 0, 1, 1); + m = input_get(ictx, 1, 1, 1); + if (n == 0 || (n == 4 && m == 0)) + screen_write_mode_clear(sctx, MODE_KEXTENDED); + else if (n == 4 && (m == 1 || m == 2)) + screen_write_mode_set(sctx, MODE_KEXTENDED); + break; + case INPUT_CSI_MODOFF: + n = input_get(ictx, 0, 1, 1); + if (n == 4) + screen_write_mode_clear(sctx, MODE_KEXTENDED); + break; case INPUT_CSI_WINOPS: input_csi_dispatch_winops(ictx); break; |