Issue with inserting '@' at the command prompt.

Corinna Vinschen corinna-cygwin@cygwin.com
Fri Aug 19 15:09:00 GMT 2011


On Aug 19 16:06, Samuel Thibault wrote:
> Corinna Vinschen, a écrit :
> > On Aug 19 15:14, Samuel Thibault wrote:
> > > Corinna Vinschen, le Fri 19 Aug 2011 13:50:19 +0200, a Ãcrit :
> > > > >   .wVirtualKeyCode = 0x630,
> > >
> > > Eergl, no, that should have been 0x30 here, our code does properly masks
> > > out the high part, I just missed that in our code.
> > 
> > And what about the control code?  It's a fixed 1 in your example,
> 
> That's only the example. 1 is obviously not hardcoded in the real source
> code, which I have attached (I just initially wanted to avoid you having
> to browse into the whole not-so-readable source ).
> 
> > but obviously it should be 6.
> 
> That's clearly not obvious from an altgr point of view: people use altgr
> to type '@', so it makes sense to simulate the hit of the right alt
> (i.e. altgr).

Typo on my part.  I meant 5, the combination of RIGHT_ALT_PRESSED and
RIGHT_CTRL_PRESSED.  But RIGHT/LEFT CTRL should be equivalent anyway,
as far as general typing is concerned.

> > > Err, do you mean LEFT_ALT_PRESSED here? Right alt is altgr in some
> > > keyboard layouts, which is precisely what people use to type '@' in
> > > the french layout, actually. E.g. LeftAlt-A and RightAlt-A (i.e.
> > 
> > I'm aware of this difference, so, no, that was a deliberate
> > RIGHT_ALT_PRESSED.
> 
> But for the cases when only alt is to be pressed, this simulates a right
> alt, which with e.g. the french layout is not the same as the left one.

Yes, just like the german one.  However, to the best of my knowledge
there's no printable unicode char which requires to press left-alt on
any such keyboard layout.  That's exactly what the AltGr == right-alt
key is for, isn't it?

> > However, this also works for me when using
> > LEFT_CTRL_PRESSED and LEFT_ALT_PRESSED in the conditionals above.
> 
> But it won't work with DOS applications (e.g. edit). That's precisely
> the reason why I added the special case.

Uh, ok, I see.  If you press AltGr on a keyboard layout which does not
distinguish Alt and AltGr, (english, for instance), the AltGr key only
emits a RIGHT_ALT_PRESSED control code.  On a keyboard layout which does
distinguish them, the AltGr key emits LEFT_CTRL_PRESSED | RIGHT_ALT_PRESSED.
So you need some CTRL_PRESSED to emit the correct INPUT_RECORD.


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

--
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



More information about the Cygwin mailing list