try to handle DEL better

This commit is contained in:
rsc 2005-02-08 18:33:06 +00:00
parent dc305d0368
commit 8d9f61e1c9

View file

@ -913,35 +913,34 @@ key(Rune r)
paste(t.snarf, t.nsnarf, 0); paste(t.snarf, t.nsnarf, 0);
if(scrolling) if(scrolling)
show(t.q0); show(t.q0);
consread();
return; return;
} }
switch(r) { if(rawon() && t.q0 == t.nr){
/* 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");
return;
}
if(rawon() && t.q0==t.nr){
addraw(&r, 1); addraw(&r, 1);
consread(); consread();
return; return;
} }
if(r==ESC || (holdon && r==0x7F)){ /* toggle hold */ 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){ /* toggle hold */
holdon = !holdon; holdon = !holdon;
drawhold(holdon); drawhold(holdon);
// replaceintegerproperty("_9WM_HOLD_MODE", 1, 32, holdon); /* replaceintegerproperty("_9WM_HOLD_MODE", 1, 32, holdon); */
if(!holdon) if(!holdon)
consread(); consread();
if(r==ESC) return;
return;
} }
snarf(); snarf();