Re: Cygwin X + HP-UX 11.11 + italian keyboard = AltGr not working (solved/worked around)

2011-07-19 Thread Jon TURNEY

Thanks very much for posting your work around.

On 08/07/2011 09:18, Danilo Turina wrote:
> Fiddling aroung with Wireshark I was able to understand what the problem was
> and I had the confirm thanks to xmodmap.
> 
> With Xming I had that keycode 34 ("è") is associated to
> 
> egrave eacute bracketleft braceleft bracketleft braceleft
> 
> while with CygwinX the association is
> 
> egrave eacute egrave eacute bracketleft braceleft
> 
> I don't know the exact meaning of each of the positions above, but with

This is (sort of) explained in 'man xmodmap'

>The  list of keysyms is assigned to the indicated keycode 
> (which may be specified in decimal,
>hex or octal and can be determined by running the xev 
> program).  Up to eight keysyms  may  be
>attached  to  a key, however the last four are not used in any 
> major X server implementation.
>The first keysym is used when no modifier key is pressed in 
> conjunction with  this  key,  the
>second  with  Shift,  the third when the Mode_switch key is 
> used with this key and the fourth
>when both the Mode_switch and Shift keys are used.

However, you have to remember that what you see with xmodmap isn't the real
XKB keymap, but a compatibility xmodmap invented by XKB for clients which
don't know about XKB.

> xmodmap -e "keycode 34 = egrave eacute bracketleft braceleft bracketleft
> braceleft"
> 
> I solved the problem.
> I then saw that that solves the problem even without setting XKB_DISABLE but
> only with some applications (e.g. with xterm works, with nedit you need
> XKB_DISABLE set).
> 
> So just executing the xmodmap above for keycode 34, also within the same xterm
> on which I had the problem, without setting XKB_DISABLE and without doing
> anything else (so not resetting of the modifiers with 'xmodmap -e "clear
> mod5"', etc.), it works (but better setting XKB_DISABLE=1 in order to make all
> clients work).
> 
> In short:
> 
> export XKB_DISABLE=1
> xmodmap -e "keycode 34 = egrave eacute bracketleft braceleft bracketleft
> braceleft"
> xmodmap -e "keycode 35 = plus asterisk bracketright braceright bracketright
> braceright"
> xmodmap -e "keycode 48 = agrave degree numbersign dead_abovering numbersign
> dead_abovering numbersign dead_abovering"
> xmodmap -e "keycode 47 = ograve ccedilla at dead_cedilla at dead_cedilla at
> dead_cedilla ograve ccedilla at dead_cedilla"
> 
> does the job (with the above I just fix the four keys needed to get "[", "{",
> "]", "}", "@" and "#", probably others are missing, like AltGr+E for the Euro
> sign, but I don't use them within HP-UX so no problem for me).
> 
> WARNING WARNING WARNING: I wrote the above xmodmap statements by getting their
> values from "xmodmap -pk" and replacing the 3rd and 4th values with the 5th
> and 6th values, so I don't know whether they can cause problems in other
> contexts. I hope that somebody that better knows xmodmap (and the like) could
> confirm the correctness of the above (that anyway for me works, so I have no
> problems at all now).
> 
> I don't know whether this is a symptom of a wrong keymap on the Cygwin X side
> or is a problem on HP-UX, but I don't really care at this point.

Fair enough.  I wish I understood what was going on here better so I could
improve what Cygwin/X FAQ 5.1.8 [1] says.

[1] http://x.cygwin.com/docs/faq/cygwin-x-faq.html#alt-gr-with-old-x

> 
> Thank you very much for the support and the precious hints.
> Ciao,
> Danilo
> 
> P.S. If I had looked more carefully at "xmodmap -pk" output at the beginning,
> I would have discovered the problem early and I would have avoided all of this
> researching and trying.

-- 
Jon TURNEY
Volunteer Cygwin/X X Server maintainer

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



Re: Cygwin X + HP-UX 11.11 + italian keyboard = AltGr not working (solved/worked around)

2011-07-08 Thread Danilo Turina

On 07/07/2011 15.04, Jon TURNEY wrote:

On 06/07/2011 15:26, Danilo Turina wrote:

On 06/07/2011 16.02, Jon TURNEY wrote:

On 06/07/2011 09:15, Danilo Turina wrote:

  having recently replaced my old keyboard (that had a US layout) with an
italian one, I'm having a problem with Cygwin X when running HP-UX clients:
AltGr does not work and this prevents me to use characters like "[" "{" "}"
"]", etc.

I'm up to date with Cygwin and Cygwin X at the moment ("1.7.9(0.237/5/3)
2011-03-29 10:10 i686 Cygwin" for Cygwin and "1.10.2.0" for XWin).

These are the steps to reproduce the problem:

  1) start Cygwin X
  2) disable access control ("xhost +")
  3) access via telnet/ssh a HP-UX machine
  4) open an xterm from the HP-UX machine in Cygwin X
  5) in the newly opened xterm try to use AltGr (AltGr + "è" (i.e. the key
at the right of "P"), should produce "{", while AltGr + Shift + "è" should
produce "{")


I'm missing here what is actually produced.  Nothing? or the unmodified è?


The unmodified è (well, sort of, because when I press "è" on the keyboard I
see on the terminal "I" (I think because of some other problem of the terminal
with non-ASCII chars) and if I press AltGr+"è" I yet see "I", so it's just
like pressing AltGr has no effect at all).




  6) fall on the floor crying in desperation


This is perfectly normal for people having to deal with XKB :-)


Notice that when using a client from a Linux machine all works properly.

A googled a lot and found a lot of information but only few of it applied
(=helped) to my specific case. I tried to mess with xmodmap and kbd config
files and also with other stuff, but nothing seemed to solve the problem.


I think a solution is contained in this old mailing list post [1], use
XKB_DISABLE=1 and adjust the keyboard map so that AltGr is Mode_switch and the
keys have the expected mapping in group 2, activated via Mode_switch.

Note that just reassigning AltGr to Mode_switch is not enough, you'll need to
remap appropriately the keys which generate different characters with AltGr
e.g. something like:

xmodmap -e "clear mod5"
xmodmap -e "clear mod3"
xmodmap -e "keycode 113 = Mode_switch Multi_key"
xmodmap -e "add mod3 = Mode_switch"
xmodmap -e "keycode 34 = egrave eacute bracketleft braceleft"
(and so on for the other keys which need to generate different characters with
AltGr)


I already encountered some like that while searching the internet but didn't
work.
I tried what you wrote here but didn't work either...


Just to be clear, you probably have to do all this before you start the xterm
you are going to be working in.

Can I see the xev output when you try that setup?


Is there anything that I can do to go deeper into the analysis of this
problem? xev seems not of any help, since it returns the same results both for
Xming where all works and Cygwin X where I have the problem.


Yes, that's rather mystifying.

You might consider using wireshark, xmon or xscope to examine the protocol
interactions between client and server (not sure if all of these can decode
XKB extension protocol) to see if there is any difference there.


Fiddling aroung with Wireshark I was able to understand what the problem 
was and I had the confirm thanks to xmodmap.


With Xming I had that keycode 34 ("è") is associated to

egrave eacute bracketleft braceleft bracketleft braceleft

while with CygwinX the association is

egrave eacute egrave eacute bracketleft braceleft

I don't know the exact meaning of each of the positions above, but with

xmodmap -e "keycode 34 = egrave eacute bracketleft braceleft bracketleft 
braceleft"


I solved the problem.
I then saw that that solves the problem even without setting XKB_DISABLE 
but only with some applications (e.g. with xterm works, with nedit you 
need XKB_DISABLE set).


So just executing the xmodmap above for keycode 34, also within the same 
xterm on which I had the problem, without setting XKB_DISABLE and 
without doing anything else (so not resetting of the modifiers with 
'xmodmap -e "clear mod5"', etc.), it works (but better setting 
XKB_DISABLE=1 in order to make all clients work).


In short:

export XKB_DISABLE=1
xmodmap -e "keycode 34 = egrave eacute bracketleft braceleft bracketleft 
braceleft"
xmodmap -e "keycode 35 = plus asterisk bracketright braceright 
bracketright braceright"
xmodmap -e "keycode 48 = agrave degree numbersign dead_abovering 
numbersign dead_abovering numbersign dead_abovering"
xmodmap -e "keycode 47 = ograve ccedilla at dead_cedilla at dead_cedilla 
at dead_cedilla ograve ccedilla at dead_cedilla"


does the job (with the above I just fix the four keys needed to get "[", 
"{", "]", "}", "@" and "#", probably others are missing, like AltGr+E 
for the Euro sign, but I don't use them within HP-UX so no problem for me).


WARNING WARNING WARNING: I wrote the above xmodmap statements by getting 
their values from "xmodmap -pk" and replacing the 3rd and 4th values 
with th