* [PATCH] Cygwin: console: Make cursor keys work in vim under ConEmu.
@ 2020-05-30 9:25 Takashi Yano
2020-05-30 17:42 ` Corinna Vinschen
0 siblings, 1 reply; 2+ messages in thread
From: Takashi Yano @ 2020-05-30 9:25 UTC (permalink / raw)
To: cygwin-patches
- After commit 774b8996d1f3e535e8267be4eb8e751d756c2cec, cursor
keys do not work in vim under ConEmu without cygwin-connector.
This patch fixes the issue.
---
winsup/cygwin/fhandler.h | 1 +
winsup/cygwin/fhandler_console.cc | 20 ++++++++++++++------
2 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h
index 76ad2aab0..b2957e4ee 100644
--- a/winsup/cygwin/fhandler.h
+++ b/winsup/cygwin/fhandler.h
@@ -2040,6 +2040,7 @@ class dev_console
char *cons_rapoi;
LONG xterm_mode_input;
LONG xterm_mode_output;
+ bool cursor_key_app_mode;
inline UINT get_console_cp ();
DWORD con_to_str (char *d, int dlen, WCHAR w);
diff --git a/winsup/cygwin/fhandler_console.cc b/winsup/cygwin/fhandler_console.cc
index 3930c6068..5cb4343ea 100644
--- a/winsup/cygwin/fhandler_console.cc
+++ b/winsup/cygwin/fhandler_console.cc
@@ -243,6 +243,7 @@ fhandler_console::setup ()
con.backspace_keycode = CERASE;
con.cons_rapoi = NULL;
shared_console_info->tty_min_state.is_console = true;
+ con.cursor_key_app_mode = false;
}
}
@@ -289,6 +290,8 @@ fhandler_console::request_xterm_mode_input (bool req)
GetConsoleMode (get_handle (), &dwMode);
dwMode |= ENABLE_VIRTUAL_TERMINAL_INPUT;
SetConsoleMode (get_handle (), dwMode);
+ if (con.cursor_key_app_mode) /* Restore DECCKM */
+ WriteConsoleA (get_output_handle (), "\033[?1h", 5, NULL, 0);
}
}
else
@@ -2150,10 +2153,6 @@ fhandler_console::char_command (char c)
break;
case 'h': /* DECSET */
case 'l': /* DECRST */
- if (c == 'h')
- con.screen_alternated = true;
- else
- con.screen_alternated = false;
wpbuf.put (c);
/* Just send the sequence */
wpbuf.send (get_output_handle ());
@@ -2161,8 +2160,15 @@ fhandler_console::char_command (char c)
{
bool need_fix_tab_position = false;
for (int i = 0; i < con.nargs; i++)
- if (con.args[i] == 1049)
- need_fix_tab_position = true;
+ {
+ if (con.args[i] == 1049)
+ {
+ con.screen_alternated = (c == 'h');
+ need_fix_tab_position = true;
+ }
+ if (con.args[i] == 1) /* DECCKM */
+ con.cursor_key_app_mode = (c == 'h');
+ }
/* Call fix_tab_position() if screen has been alternated. */
if (need_fix_tab_position)
fix_tab_position ();
@@ -2174,6 +2180,7 @@ fhandler_console::char_command (char c)
con.scroll_region.Top = 0;
con.scroll_region.Bottom = -1;
con.savex = con.savey = -1;
+ con.cursor_key_app_mode = false;
}
wpbuf.put (c);
/* Just send the sequence */
@@ -3077,6 +3084,7 @@ fhandler_console::write (const void *vsrc, size_t len)
con.scroll_region.Top = 0;
con.scroll_region.Bottom = -1;
con.savex = con.savey = -1;
+ con.cursor_key_app_mode = false;
}
/* ESC sequences below (e.g. OSC, etc) are left to xterm
emulation in xterm compatible mode, therefore, are not
--
2.26.2
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] Cygwin: console: Make cursor keys work in vim under ConEmu.
2020-05-30 9:25 [PATCH] Cygwin: console: Make cursor keys work in vim under ConEmu Takashi Yano
@ 2020-05-30 17:42 ` Corinna Vinschen
0 siblings, 0 replies; 2+ messages in thread
From: Corinna Vinschen @ 2020-05-30 17:42 UTC (permalink / raw)
To: cygwin-patches
On May 30 18:25, Takashi Yano via Cygwin-patches wrote:
> - After commit 774b8996d1f3e535e8267be4eb8e751d756c2cec, cursor
> keys do not work in vim under ConEmu without cygwin-connector.
> This patch fixes the issue.
> ---
> winsup/cygwin/fhandler.h | 1 +
> winsup/cygwin/fhandler_console.cc | 20 ++++++++++++++------
> 2 files changed, 15 insertions(+), 6 deletions(-)
Pushed.
Thanks,
Corinna
--
Corinna Vinschen
Cygwin Maintainer
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-05-30 17:42 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-30 9:25 [PATCH] Cygwin: console: Make cursor keys work in vim under ConEmu Takashi Yano
2020-05-30 17:42 ` Corinna Vinschen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).