screen-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[screen-devel] terminfo smacs feature, and screen "charset" command


From: Micah Cowan
Subject: [screen-devel] terminfo smacs feature, and screen "charset" command
Date: Thu, 19 Jun 2008 16:58:39 -0700
User-agent: Thunderbird 2.0.0.14 (X11/20080421)

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

The following is from a Debian bug report at
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=144178

> The sequences to shift to and from the alternate character set (terminfo
> names: smacs & rmacs) are defined in ncurses' terminfo for screen as ^N
> and ^O respectively.
> 
> Unfortunatley screen only understands \E(0 and \E(B. It also emits these
> sequences to instruct the terminal its running in to move in/out of the
> ACS. This is wrong at least when running with TERM=xterm, as infocmp
> shows that the correct sequences for this terminal type are ^N/^O.

My response:

> It looks to me as if the fault is in the terminfo description for screen.
> 
> Screen does in fact understand ^N/^O, and processes them according to
> ISO-2022. It does not simply pass them through, but rather processes
> them itself, to invoke the G1 character set to GL.
> 
> However, screen's default value for "charset" is "BBBB02", which uses
> US-ASCII as the G1 character set. Setting it to "B0BB02" uses the
> box-drawing characters for G1, which would cause ^N/^O to behave as you
> expect them to (and would render the terminfo description accurately).
> 
> Another way to invoke the box-drawing character set to G1 would be:
> 
>   $ printf '\033)0'
> 
> (Note the ')', rather than '(').
> 
> That would cause no immediately visible change, but ^N/^O would start
> working as you expect.
> 
> Note that, if you're running in UTF-8 mode, screen apparently uses the
> Unicode box characters, rather than the parent terminal's smacs feature.
> 
> So, to sum up, either the terminfo description (and screen's $TERMCAP)
> should specify '\E(0' / '\E)B', or else screen should default to
> "B0BB02" for the value of "charset".

I'd like to see both things happen: having the "0"-designated character
set invoked to G1 seems to be awfully common (though, leaving it as it
is does have an advantage in avoiding charset troubles after
accidentally catting a binary file in screen).

Am I mistaken, though, that, as things stand currently, the standard
terminfo and $TERMCAP values are lying about how to invoke the
"alternate charset"?

- --
Micah J. Cowan
Programmer, musician, typesetting enthusiast, gamer,
and GNU Wget Project Maintainer.
http://micah.cowan.name/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFIWvKv7M8hyUobTrERAnsbAJ4iEvtRdSaqMNnpXXHtAhXcllir2wCdGu5Z
1h1v+nDToDRqDHU784dnJT4=
=lITK
-----END PGP SIGNATURE-----




reply via email to

[Prev in Thread] Current Thread [Next in Thread]