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 the 5th and 6th values, so I don't know whether they can cause