URI: 
       tcmd/9term: A hack because I'm constantly getting confused about ^C vs fn+delete - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit be7485e1da7966eab4388991e26110570176c744
   DIR parent 82112d0434ede36c05d51840c117aca282156e9a
  HTML Author: Dave Presotto <presotto@gmail.com>
       Date:   Sun,  8 Jan 2017 14:19:34 -0800
       
       cmd/9term: A hack because I'm constantly getting confused about ^C vs fn+delete
       
       Since Google (and a lot of the outside) is so engrained with using
       ^C as interrupt, I'd like to be able to use it in 9term if I've
       stty'd my intr to ^C. Without this, hitting ^C still works but if
       tthe program behind the window isn't reading from /dev/cons, it won't
       ttake effect till after I hit a newline which is often very confusing.
       
       I know this is a hack since it only works if I stty intr ^C but that
       seems the only other character that gets used anyways.
       
       Change-Id: I0597e63b2d7628f5668c648e6dba6f281e4b27fd
       Reviewed-on: https://plan9port-review.googlesource.com/2742
       Reviewed-by: Russ Cox <rsc@swtch.com>
       
       Diffstat:
         M src/cmd/9term/9term.c               |       5 +++++
         M src/cmd/9term/fns.h                 |       1 +
         M src/cmd/9term/wind.c                |       5 +++++
       
       3 files changed, 11 insertions(+), 0 deletions(-)
       ---
   DIR diff --git a/src/cmd/9term/9term.c b/src/cmd/9term/9term.c
       t@@ -448,6 +448,11 @@ winterrupt(Window *w)
                write(rcfd, rubout, 1);
        }
        
       +int
       +intrc() {
       +        return getintr(sfd);
       +}
       +
        /*
         * Process in-band messages about window title changes.
         * The messages are of the form:
   DIR diff --git a/src/cmd/9term/fns.h b/src/cmd/9term/fns.h
       t@@ -31,6 +31,7 @@ void        timerinit(void);
        int        goodrect(Rectangle);
        int        rawon(void);
        void        winterrupt(Window*);
       +int        intrc();
        
        #define        runemalloc(n)                malloc((n)*sizeof(Rune))
        #define        runerealloc(a, n)        realloc(a, (n)*sizeof(Rune))
   DIR diff --git a/src/cmd/9term/wind.c b/src/cmd/9term/wind.c
       t@@ -705,6 +705,11 @@ wkeyctl(Window *w, Rune r)
                        wcut(w);
                }
                switch(r){
       +        case 0x03:                /* maybe send interrupt */
       +                /* since ^C is so commonly used as interrupt, special case it */
       +                if (intrc() != 0x03)
       +                        break;
       +                /* fall through */
                case 0x7F:                /* send interrupt */
                        w->qh = w->nr;
                        wshow(w, w->qh);