]> sourceware.org Git - newlib-cygwin.git/commitdiff
Cygwin: console: fix key input for native console application
authorTakashi Yano <takashi.yano@nifty.ne.jp>
Wed, 3 Apr 2019 16:25:31 +0000 (01:25 +0900)
committerCorinna Vinschen <corinna@vinschen.de>
Wed, 3 Apr 2019 16:45:14 +0000 (18:45 +0200)
- After 24 bit color support patch, arrow keys and function keys
  do not work properly in native console applications if they
  are started in cygwin console. This patch fixes this issue.

winsup/cygwin/fhandler_console.cc

index 6d42ed8889bbd232693bddf5b50d2cbd9ea6efda..e3656a33a27226250de945f416b32417bd74a7c9 100644 (file)
@@ -455,6 +455,15 @@ sig_exit:
 fhandler_console::input_states
 fhandler_console::process_input_message (void)
 {
+  if (wincap.has_con_24bit_colors ())
+    {
+      DWORD dwMode;
+      /* Enable xterm compatible mode in input */
+      GetConsoleMode (get_handle (), &dwMode);
+      dwMode |= ENABLE_VIRTUAL_TERMINAL_INPUT;
+      SetConsoleMode (get_handle (), dwMode);
+    }
+
   char tmp[60];
 
   if (!shared_console_info)
@@ -2881,6 +2890,14 @@ fhandler_console::fixup_after_fork_exec (bool execing)
 {
   set_unit ();
   setup_io_mutex ();
+  if (wincap.has_con_24bit_colors ())
+    {
+      DWORD dwMode;
+      /* Disable xterm compatible mode in input */
+      GetConsoleMode (get_handle (), &dwMode);
+      dwMode &= ~ENABLE_VIRTUAL_TERMINAL_INPUT;
+      SetConsoleMode (get_handle (), dwMode);
+    }
 }
 
 // #define WINSTA_ACCESS (WINSTA_READATTRIBUTES | STANDARD_RIGHTS_READ | STANDARD_RIGHTS_WRITE | WINSTA_CREATEDESKTOP | WINSTA_EXITWINDOWS)
This page took 0.038539 seconds and 5 git commands to generate.