Mercurial > vim
diff src/getchar.c @ 30936:38d20a201beb v9.0.0802
patch 9.0.0802: MS-Windows: cannot map console mouse scroll events
Commit: https://github.com/vim/vim/commit/4c36678ffd1f933a6d4a12415994dea15e4ccec6
Author: Christopher Plewright <chris@createng.com>
Date: Thu Oct 20 13:11:15 2022 +0100
patch 9.0.0802: MS-Windows: cannot map console mouse scroll events
Problem: MS-Windows: cannot map console mouse scroll events.
Solution: Change CSI to K_SPECIAL when checking for a mapping. (Christopher
Plewright, closes #11410)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 20 Oct 2022 14:15:06 +0200 |
parents | 6a2a38b26caf |
children | 109aa4913cba |
line wrap: on
line diff
--- a/src/getchar.c +++ b/src/getchar.c @@ -2520,12 +2520,29 @@ handle_mapping( && State != MODE_CONFIRM && !at_ins_compl_key()) { -#ifdef FEAT_GUI - if (gui.in_use && tb_c1 == CSI && typebuf.tb_len >= 2 - && typebuf.tb_buf[typebuf.tb_off + 1] == KS_MODIFIER) +#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 + && 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 + ) + ) { // 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 + // mappings expect K_SPECIAL KS_EXTRA {what}. tb_c1 = K_SPECIAL; } #endif @@ -2568,7 +2585,8 @@ handle_mapping( && (mp->m_mode & local_State) && !(mp->m_simplified && seenModifyOtherKeys && typebuf.tb_maplen == 0) - && ((mp->m_mode & MODE_LANGMAP) == 0 || typebuf.tb_maplen == 0)) + && ((mp->m_mode & MODE_LANGMAP) == 0 + || typebuf.tb_maplen == 0)) { #ifdef FEAT_LANGMAP int nomap = nolmaplen;