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