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>
This commit is contained in:
parent
82112d0434
commit
be7485e1da
3 changed files with 11 additions and 0 deletions
|
|
@ -448,6 +448,11 @@ winterrupt(Window *w)
|
||||||
write(rcfd, rubout, 1);
|
write(rcfd, rubout, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
intrc() {
|
||||||
|
return getintr(sfd);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Process in-band messages about window title changes.
|
* Process in-band messages about window title changes.
|
||||||
* The messages are of the form:
|
* The messages are of the form:
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ void timerinit(void);
|
||||||
int goodrect(Rectangle);
|
int goodrect(Rectangle);
|
||||||
int rawon(void);
|
int rawon(void);
|
||||||
void winterrupt(Window*);
|
void winterrupt(Window*);
|
||||||
|
int intrc();
|
||||||
|
|
||||||
#define runemalloc(n) malloc((n)*sizeof(Rune))
|
#define runemalloc(n) malloc((n)*sizeof(Rune))
|
||||||
#define runerealloc(a, n) realloc(a, (n)*sizeof(Rune))
|
#define runerealloc(a, n) realloc(a, (n)*sizeof(Rune))
|
||||||
|
|
|
||||||
|
|
@ -705,6 +705,11 @@ wkeyctl(Window *w, Rune r)
|
||||||
wcut(w);
|
wcut(w);
|
||||||
}
|
}
|
||||||
switch(r){
|
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 */
|
case 0x7F: /* send interrupt */
|
||||||
w->qh = w->nr;
|
w->qh = w->nr;
|
||||||
wshow(w, w->qh);
|
wshow(w, w->qh);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue