OSDN Git Service

* fhandler_console.cc (handler_console::read): Use the tty's VERASE character
authorcgf <cgf>
Sat, 26 Dec 2009 02:38:46 +0000 (02:38 +0000)
committercgf <cgf>
Sat, 26 Dec 2009 02:38:46 +0000 (02:38 +0000)
as the backspace keycode.

winsup/cygwin/ChangeLog
winsup/cygwin/fhandler_console.cc

index 8a2111b..f0bf2a8 100644 (file)
@@ -1,3 +1,8 @@
+2009-12-25  Andy Koppe  <andy.koppe@gmail.com>
+
+       * fhandler_console.cc (handler_console::read): Use the tty's VERASE
+       character as the backspace keycode.
+
 2009-12-24  Corinna Vinschen  <corinna@vinschen.de>
 
        * path.cc (symlink_info::check): Set fileattr to
index f5814e8..6cfbcf6 100644 (file)
@@ -375,13 +375,20 @@ fhandler_console::read (void *pv, size_t& buflen)
          if (control_key_state & LEFT_ALT_PRESSED)
            dev_state->nModifiers |= 8;
 
-         /* Adopt the linux standard of translating the backspace key to DEL
-            except when ALT is pressed.  */
+         /* Send the VERASE character from the terminal settings as backspace keycode. */
          if (input_rec.Event.KeyEvent.wVirtualScanCode == 14)
            {
-             toadd = (control_key_state & (LEFT_ALT_PRESSED | RIGHT_ALT_PRESSED))
-                     ? (dev_state->metabit ? "\377" : "\033\177") : "\177";
-             nread = strlen (toadd);
+             char c = ti.c_cc[VERASE];
+             nread = 0;
+             if (control_key_state & ALT_PRESSED) {
+               if (dev_state->metabit)
+                 c |= 0x80;
+               else
+                 tmp[nread++] = '\e';
+             }
+             tmp[nread++] = c;
+             tmp[nread] = 0;
+             toadd = tmp;
            }
          /* Allow Ctrl-Space to emit ^@ */
          else if (input_rec.Event.KeyEvent.wVirtualKeyCode == VK_SPACE