[5665] in testers
Re: caps lock doesn't under gnome-terminal, 9.2.8
daemon@ATHENA.MIT.EDU (Robert A Basch)
Thu Jul 31 18:29:14 2003
From: Robert A Basch <rbasch@MIT.EDU>
To: testers@mit.edu
Cc: Angie Kelic <sly@mit.edu>
In-Reply-To: <1059084170.20711.23.camel@abulia.mit.edu>
Content-Type: text/plain
Content-Transfer-Encoding: 7bit
Message-Id: <1059690552.27224.34.camel@abulia.mit.edu>
Mime-Version: 1.0
Date: 31 Jul 2003 18:29:13 -0400
> I looked into this -- it seems that both caps lock and num
> lock are broken in the gdk library when the XKEYBOARD extension
> is not used, as is the case on Solaris. This appears to be
> the result of a rewrite of the relevant code for looking up
> a key symbol, in response to bug 93575 in gnome bugzilla.
> (That bug dealt with the Compose key not working, and the fix
> replaced the use of XLookupString() with newly written code
> which does the key translation itself). Unfortunately, I
> don't see an obvious flaw in the new code; there are related
> bug reports filed, so I will submit additional comments.
Nobody responded to my comments, so I took a closer look at the
code, and at X documentation on how to do keysym translation.
I found several problems with the gdk code:
* Keysym translation when Num Lock is on is broken.
* It fails to determine the keysym for the Lock modifier, which
should be used to distinguish between Shift Lock and Caps Lock.
* Even with the previous problem fixed, translation in the Caps
Lock case is incorrect.
I am working on a patch which attempts to correct these problems.
In addition, I found that the Sun X server does Num Lock handling
in a non-standard way. Normally, the keysym to use for a keypad
key when Num Lock is on is the second element in the array for that
keycode; however, in the Sun implementation, it is the third element.
(I verified that the version of XLookupString() in the Openwindows
X library functions accordingly). As far as I can tell, the only
feasible way to deal with this is to hack the code to determine
whether it is dealing with a Sun X server.