Mercurial > vim
diff src/getchar.c @ 31168:25f6c7f77c70 v9.0.0918
patch 9.0.0918: MS-Windows: modifier keys do not work with mouse scroll event
Commit: https://github.com/vim/vim/commit/0319306f20d2a5989d1f5639a47d77cebeac2f29
Author: Christopher Plewright <chris@createng.com>
Date: Tue Nov 22 12:58:27 2022 +0000
patch 9.0.0918: MS-Windows: modifier keys do not work with mouse scroll event
Problem: MS-Windows: modifier keys do not work with mouse scroll events.
Solution: Use K_SPECIAL instead of CSI for the modifier keys. (Christopher
Plewright, closes #11587)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 22 Nov 2022 14:00:04 +0100 |
parents | 0ecb16d5f86f |
children | d6355c3af211 |
line wrap: on
line diff
--- a/src/getchar.c +++ b/src/getchar.c @@ -1743,11 +1743,9 @@ vgetc(void) --allow_keys; } - // Get two extra bytes for special keys + // Get two extra bytes for special keys, handle modifiers. if (c == K_SPECIAL -#if defined(FEAT_GUI) || defined(MSWIN) - // GUI codes start with CSI; MS-Windows sends mouse scroll - // events with CSI. +#ifdef FEAT_GUI || c == CSI #endif ) @@ -2520,32 +2518,12 @@ handle_mapping( && State != MODE_CONFIRM && !at_ins_compl_key()) { -#if defined(FEAT_GUI) || defined(MSWIN) - if (tb_c1 == CSI -# if !defined(MSWIN) - && gui.in_use -# endif - && typebuf.tb_len >= 2 - && (typebuf.tb_buf[typebuf.tb_off + 1] == KS_MODIFIER -# if defined(MSWIN) - || (typebuf.tb_len >= 3 -# ifdef FEAT_GUI - && !gui.in_use -# endif - && typebuf.tb_buf[typebuf.tb_off + 1] == KS_EXTRA - && (typebuf.tb_buf[typebuf.tb_off + 2] == KE_MOUSEUP - || typebuf.tb_buf[typebuf.tb_off + 2] == KE_MOUSEDOWN - || typebuf.tb_buf[typebuf.tb_off + 2] == KE_MOUSELEFT - || typebuf.tb_buf[typebuf.tb_off + 2] == KE_MOUSERIGHT) - ) -# endif - ) - ) +#ifdef FEAT_GUI + if (gui.in_use && tb_c1 == CSI && typebuf.tb_len >= 2 + && typebuf.tb_buf[typebuf.tb_off + 1] == KS_MODIFIER) { // The GUI code sends CSI KS_MODIFIER {flags}, but mappings expect // K_SPECIAL KS_MODIFIER {flags}. - // MS-Windows sends mouse scroll events CSI KS_EXTRA {what}, but - // non-GUI mappings expect K_SPECIAL KS_EXTRA {what}. tb_c1 = K_SPECIAL; } #endif