aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/9term
diff options
context:
space:
mode:
authorDave Presotto <presotto@gmail.com>2017-01-08 14:19:34 -0800
committerRuss Cox <rsc@swtch.com>2017-01-09 15:42:59 +0000
commitbe7485e1da7966eab4388991e26110570176c744 (patch)
treed87d2e3563468cfb269437bd79d43b073bc0be30 /src/cmd/9term
parent82112d0434ede36c05d51840c117aca282156e9a (diff)
downloadplan9port-be7485e1da7966eab4388991e26110570176c744.tar.gz
plan9port-be7485e1da7966eab4388991e26110570176c744.tar.bz2
plan9port-be7485e1da7966eab4388991e26110570176c744.zip
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 the program behind the window isn't reading from /dev/cons, it won't take 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 (limited to 'src/cmd/9term')
-rw-r--r--src/cmd/9term/9term.c5
-rw-r--r--src/cmd/9term/fns.h1
-rw-r--r--src/cmd/9term/wind.c5
3 files changed, 11 insertions, 0 deletions
diff --git a/src/cmd/9term/9term.c b/src/cmd/9term/9term.c
index 5cf46dec..192a9bcf 100644
--- a/src/cmd/9term/9term.c
+++ b/src/cmd/9term/9term.c
@@ -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:
diff --git a/src/cmd/9term/fns.h b/src/cmd/9term/fns.h
index a0ae686a..196f418f 100644
--- a/src/cmd/9term/fns.h
+++ b/src/cmd/9term/fns.h
@@ -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))
diff --git a/src/cmd/9term/wind.c b/src/cmd/9term/wind.c
index b03f15fc..7dc20443 100644
--- a/src/cmd/9term/wind.c
+++ b/src/cmd/9term/wind.c
@@ -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);