Ctrl-Break now sends a Break signal (previously it was equivalent to Ctrl-C).
authorjacob <jacob@cda61777-01e9-0310-a592-d414129be87e>
Sun, 18 Feb 2007 14:02:39 +0000 (14:02 +0000)
committerjacob <jacob@cda61777-01e9-0310-a592-d414129be87e>
Sun, 18 Feb 2007 14:02:39 +0000 (14:02 +0000)
git-svn-id: svn://svn.tartarus.org/sgt/putty@7295 cda61777-01e9-0310-a592-d414129be87e

doc/using.but
unix/gtkwin.c
windows/window.c

index 17fdce5..adf5ee9 100644 (file)
@@ -128,6 +128,9 @@ connection in addition to normal data. Their precise effect is usually
 up to the server. Currently only Telnet, SSH, and serial connections
 have special commands.
 
 up to the server. Currently only Telnet, SSH, and serial connections
 have special commands.
 
+The \q{break} signal can also be invoked from the keyboard with
+\i{Ctrl-Break}.
+
 The following \I{Telnet special commands}special commands are
 available in Telnet:
 
 The following \I{Telnet special commands}special commands are
 available in Telnet:
 
index 816211a..03ecc35 100644 (file)
@@ -663,13 +663,12 @@ gint key_event(GtkWidget *widget, GdkEventKey *event, gpointer data)
            end = 2;
        }
 
            end = 2;
        }
 
-       /* Control-Break is the same as Control-C */
+       /* Control-Break sends a Break special to the backend */
        if (event->keyval == GDK_Break &&
            (event->state & GDK_CONTROL_MASK)) {
        if (event->keyval == GDK_Break &&
            (event->state & GDK_CONTROL_MASK)) {
-           output[1] = '\003';
-           use_ucsoutput = FALSE;
-           end = 2;
-           special = TRUE;
+           if (inst->back)
+               inst->back->special(inst->backhandle, TS_BRK);
+           return TRUE;
        }
 
        /* We handle Return ourselves, because it needs to be flagged as
        }
 
        /* We handle Return ourselves, because it needs to be flagged as
index ceeaa76..f654d2a 100644 (file)
@@ -3566,8 +3566,9 @@ int char_width(Context ctx, int uc) {
 
 /*
  * Translate a WM_(SYS)?KEY(UP|DOWN) message into a string of ASCII
 
 /*
  * Translate a WM_(SYS)?KEY(UP|DOWN) message into a string of ASCII
- * codes. Returns number of bytes used or zero to drop the message
- * or -1 to forward the message to windows.
+ * codes. Returns number of bytes used, zero to drop the message,
+ * -1 to forward the message to Windows, or another negative number
+ * to indicate a NUL-terminated "special" string.
  */
 static int TranslateKey(UINT message, WPARAM wParam, LPARAM lParam,
                        unsigned char *output)
  */
 static int TranslateKey(UINT message, WPARAM wParam, LPARAM lParam,
                        unsigned char *output)
@@ -3987,9 +3988,9 @@ static int TranslateKey(UINT message, WPARAM wParam, LPARAM lParam,
            return p - output;
        }
        if (wParam == VK_CANCEL && shift_state == 2) {  /* Ctrl-Break */
            return p - output;
        }
        if (wParam == VK_CANCEL && shift_state == 2) {  /* Ctrl-Break */
-           *p++ = 3;
-           *p++ = 0;
-           return -2;
+           if (back)
+               back->special(backhandle, TS_BRK);
+           return 0;
        }
        if (wParam == VK_PAUSE) {      /* Break/Pause */
            *p++ = 26;
        }
        if (wParam == VK_PAUSE) {      /* Break/Pause */
            *p++ = 26;