I believe this is something I figured out long ago, and completely forgot since, so I had to figure it out again. I’m using a new virtualized Linux server from Slicehost, and as usual, I have some stuff running under Screen. Now, Screen is a crufty old program, but it’s immensely useful for leaving things running and detaching from them (and later reattaching), along with multiplexing several terminals into one.
But, I started having a problem I’d had before. Inside screen, my delete key wasn’t sending ^? (ascii 127), but it was sending ^[[3~ (the escape sequence for that key). Outside of screen, it was sending ^? as I’d expect. (I’m going to avoid the whole backspace [^H] versus delete [^?] argument here — OS X and Linux distributions seem to all come with it configured for delete out of the box these days, and that’s most of what I deal with.)
I poked around, and found some workarounds like this one, but I really want to fix it, rather than lying to it about my terminal type.
This did however remind me of what was wrong. My termcap (well, terminfo) was missing the proper capability for the delete key. So, I looked what the terminal type claimed by OS X’s Terminal.app was:
$ echo $TERM
I poked around some .screenrc examples and an old termcap file and composed this line to put in my .screenrc :
termcapinfo xterm-color kD=\E[3~
And it works! I didn’t even have to start a new screen session, I just detached and re-attached.
I had the exact same problem and found this entry via googling “screen delete key”. Thanks a bunch!
Another satisfied reader! Borrowing my girlfriend’s iBook at the moment and this was driving me mad when ssh’ing into my linux box. Many thanks for sharing the tip.
Thanks for the explanation, links, and fix! Much appreciated.
Thanks so much for this, it worked a treat!!
Sir, you are a scholar and a gentleman. Thanks much.
Thanks a lot !
Greetings from southern Germany.
Pingback: Lazy Hacker Babble » Blog Archive » GNU Screen and Bash
Googling “screen delete key”, it made my day. Thanks !
Thanks! This worked perfectly!
(I’m ssh:ing from a Terminal.app on Mac OS X Snow Leopard laptop to a Ubuntu Feisty box and running screen on the ubuntu box. I put the termcap in the ~/.screenrc on my ubuntu box.)