On Tue, Apr 17, 2012 at 05:32:45PM -0400, Benjamin R. Haskell wrote: > Also, last time I checked libtermkey out, there were quirks even > with the XTerm implementation of the "extended" sequences. E.g.: > > On a U.S. QWERTY keyboard, where the row with numerals is: > unshifted: `1234567890 > shifted: ~!@#$%^&*() > > With <Shift> depressed, using the libtermkey demo, I get: > <S-~> ! <S-@> # $ % <S-^> & * ( ) > > That is: Depending on how you look at it: 8 of 11 characters don't > detect that <Shift> is depressed; or 3 of the characters that can't > be typed without <Shift> get an extra <Shift> modifier. > > And even for the <Tab> <C-i> <C-I>, case: > <Tab> <C-i> <C-S-I> > > (Why the capital 'I' in addition to 'S-'? Or is it just a > libtermkey demo convention?) > > The Vim-relevant point to all this being: it seems like more > standardization is necessary (not sure from XTerm or libtermkey). > Otherwise we're going to trade "I can't map <C-i>" problems for "I > can't map <~> or <^> or <I>".
Yeah, those unfortunately are an xterm bug. While it does correctly make some attempt at implementing CSI u, it fails to observe that the Shift modifier should specifically /not/ be encoded in the modifier bits, because that modifier was used to obtain the Unicode codepoint in the first place. Thus there is no "Shift-!" as such, Shift is simply the modifier used to obtain !. By pressing the three pieces-of-plastic labeled Ctrl, Shift, 1!, you should obtain a key denoting <Ctrl-!>, encoded as CSI 33;5 u. Again you see it on your Ctrl-I vs. Ctrl-Shift-I. Potentially libtermkey ought to fix up these, and mask away the Shift modifier on modified Unicode. But then you have to exempt Backspace, Tab, Enter and Space... Fun times... -- Paul "LeoNerd" Evans [email protected] ICQ# 4135350 | Registered Linux# 179460 http://www.leonerd.org.uk/
signature.asc
Description: Digital signature
