On Tue, Apr 23, 2013 at 10:50:32AM +0200, Christoph Lohmann wrote: > Greetings. > > On Tue, 23 Apr 2013 10:50:32 +0200 Otto Modinos <ottomodi...@gmail.com> wrote: > > Howdy Comrades. > > I'm new to this mailing list. > > Just found st couple of days back and really loved it. It lacked however > > the ability to send Meta as the 8th bit, the way xterm does. I needed this > > because most of the apps I tried didn't recognize the escape sequence st > > was using. So this little patch adds this. > > It can be enabled by setting meta8 to true in config.def.h and disabled at > > runtime with the -8 cmdline switch. > > Hope you can merge it in st mainline, or at least added in as a patch in > > the site. > > I am considering making this the default behaviour of st. Are there any > arguments against it?
The unique problem is utf8 encoding will put the 8 bit to 1 in some characters, so it is not very clear for me like applications can difference between meta-character and first byte of a utf8 sequence. I can see that terminfo has the following fields: km: Has a meta key rmm: turn off meta mode smm: turn on meta mode And the information about them is: If the terminal has a ``meta key'' which acts as a shift key, setting the 8th bit of any character transmitted, this fact can be indicated with km. Otherwise, software will assume that the 8th bit is parity and it will usually be cleared. If strings exist to turn this ``meta mode'' on and off, they can be given as smm and rmm. xterm has km capability but doesn't have rmm or smm. I suppouse that applications should look in km and doesn't translate if not km. The page http://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/meta-bit.html says: xterm itself has relatively little understanding of complex character sets: it operates either in "conventional 8bit mode" or in UTF-8 mode. In the former, the character set is assumed to be single-byte and the Meta key translates each low-half character into its high-half counterpart in the obvious way. In the latter mode, the Meta key translates ASCII into ISO-8859-1 and then encodes it as UTF-8 (so that, for example, Meta-a sends C3 A1 which is the UTF-8 encoding of U+00E1). xterm supports all other character sets by interposing "luit", which means that whether a Meta combination generates anything in (say) Shift-JIS will depend entirely on whether the relevant Unicode value between U+0080 and U+00FF is representable in the target character set. Meanwhile, Meta appears to do nothing at all if combined with anything not in the 00-7F range, be it a character outside that range or a multi-character sequence from a function key. Too much complex for me. I think is better by default send ESC, and add some sequences for rmm and smm (of course add rmm to is2). If a user want activate meta8 mode only has to write: "tput smm". And in this case he should know that applications he is using don't deal with utf8 encoding.