summaryrefslogtreecommitdiffstats
path: root/src/getchar.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-04-29 21:58:41 +0200
committerBram Moolenaar <Bram@vim.org>2019-04-29 21:58:41 +0200
commita9dd2d3c759c1eafb9c0572c5707852ed3d38162 (patch)
tree17f2150b1a621409dde9fc50927eaaa01f46c9a6 /src/getchar.c
parenta0e67fc1663c9d5317022ea3bf252e08574c9f6f (diff)
patch 8.1.1239: key with byte sequence containing CSI does not workv8.1.1239
Problem: Key with byte sequence containing CSI does not work. Solution: Do not recognize CSI as special unless the GUI is active. (Ken Takata, closes #4318)
Diffstat (limited to 'src/getchar.c')
-rw-r--r--src/getchar.c30
1 files changed, 17 insertions, 13 deletions
diff --git a/src/getchar.c b/src/getchar.c
index 2dc5e585ab..a1ffced14a 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -1604,7 +1604,7 @@ vgetc(void)
// Get two extra bytes for special keys
if (c == K_SPECIAL
#ifdef FEAT_GUI
- || c == CSI
+ || (gui.in_use && c == CSI)
#endif
)
{
@@ -1659,19 +1659,23 @@ vgetc(void)
}
#endif
#ifdef FEAT_GUI
- // Handle focus event here, so that the caller doesn't need to
- // know about it. Return K_IGNORE so that we loop once (needed
- // if 'lazyredraw' is set).
- if (c == K_FOCUSGAINED || c == K_FOCUSLOST)
+ if (gui.in_use)
{
- ui_focus_change(c == K_FOCUSGAINED);
- c = K_IGNORE;
- }
+ // Handle focus event here, so that the caller doesn't
+ // need to know about it. Return K_IGNORE so that we loop
+ // once (needed if 'lazyredraw' is set).
+ if (c == K_FOCUSGAINED || c == K_FOCUSLOST)
+ {
+ ui_focus_change(c == K_FOCUSGAINED);
+ c = K_IGNORE;
+ }
- // Translate K_CSI to CSI. The special key is only used to
- // avoid it being recognized as the start of a special key.
- if (c == K_CSI)
- c = CSI;
+ // Translate K_CSI to CSI. The special key is only used
+ // to avoid it being recognized as the start of a special
+ // key.
+ if (c == K_CSI)
+ c = CSI;
+ }
#endif
}
// a keypad or special function key was not mapped, use it like
@@ -1749,7 +1753,7 @@ vgetc(void)
buf[i] = vgetorpeek(TRUE);
if (buf[i] == K_SPECIAL
#ifdef FEAT_GUI
- || buf[i] == CSI
+ || (gui.in_use && buf[i] == CSI)
#endif
)
{