aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cmd/9term/9term.c33
1 files changed, 16 insertions, 17 deletions
diff --git a/src/cmd/9term/9term.c b/src/cmd/9term/9term.c
index f22bebc5..22dddc73 100644
--- a/src/cmd/9term/9term.c
+++ b/src/cmd/9term/9term.c
@@ -913,37 +913,36 @@ key(Rune r)
paste(t.snarf, t.nsnarf, 0);
if(scrolling)
show(t.q0);
+ consread();
return;
}
- switch(r) {
- /* case 0x03: can't do this because ^C is COPY */
- case 0x7F: /* DEL: send interrupt */
- paste(&r, 1, 1);
- t.qh = t.q0 = t.q1 = t.nr;
- show(t.q0);
- /* must write the interrupt character in case app is in raw mode (e.g., ssh) */
- write(rcfd, "\x7F", 1);
- // postnote(PNGROUP, rcpid, "interrupt");
+ if(rawon() && t.q0 == t.nr){
+ addraw(&r, 1);
+ consread();
return;
}
- if(rawon() && t.q0==t.nr){
- addraw(&r, 1);
- consread();
+ if(r == 0x7F){ /* DEL: send interrupt; what a mess */
+ if(holdon){
+ holdon = 0;
+ drawhold(holdon);
+ }
+ t.qh = t.q0 = t.q1 = t.nr;
+ show(t.q0);
+ write(rcfd, "\x7F", 1);
return;
}
- if(r==ESC || (holdon && r==0x7F)){ /* toggle hold */
+ if(r==ESC){ /* toggle hold */
holdon = !holdon;
drawhold(holdon);
- // replaceintegerproperty("_9WM_HOLD_MODE", 1, 32, holdon);
+ /* replaceintegerproperty("_9WM_HOLD_MODE", 1, 32, holdon); */
if(!holdon)
consread();
- if(r==ESC)
- return;
+ return;
}
-
+
snarf();
switch(r) {