Subject: Re: 1.7.3: Backspace key not working in GNU screen.
From: Andy Koppe <[email-masked]>
To: [email-masked]
Date: Sat, 10 Apr 2010 22:09:32 +0100
List-Id: <cygwin.cygwin.com>

Christopher Faylor wrote:
> I'm not 100% sure that this is the right fix but the new snapshot at
> least works around the problem.

Thanks.

> The problem is that screen explicitly sets VERASE to 0.  I believe that
> it does that to mean "there is really no erase character since I'm
> handling that".

You're right. Zero is the value of the _POSIX_VDISABLE constant for
disabling special characters. Therefore, using c_cc[VERASE] as the
backspace keycode was a bad idea all along. Sorry for suggesting it in
the first place.

> That should not cause Cygwin to send a null character.
> I think it should probably just send the default \177 character.

Makes sense given the botched design, but of course it does mean that
the user's backspace keycode setting is ignored. Also, 'screen' would
be expecting what was set in c_cc[VERASE] as the backspace keycode.

I can think of two ways to fix the design. One would be to introduce a
CYGWIN flag for switching from the default ^? to ^H, named something
like 'backspace_sends_bs', 'legacy_bs' or 'bs_is_ctrl_h'. Another
would be to implement the DECBKM ("DEC Backarrow Key Mode") control
sequence for the purpose, which is also supported by xterm and mintty:

\e[?67h  Backspace key sends ^H
\e[?67l  Backspace key sends ^?

Andy

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple