"Shane Shields" locutusenterprises@softhome.net wrote:
X11 team tends to remove more than 2 characters per keysym. See /etc/X11/xkb/symbols/tr. Turkish keyboard layout in Wine has more than 2 for some of them. Just do 'setxkbmap tr' and run Wine with +key,keyboard,+x11drv and look for mismatches.
I have done that and piped the output to a logfile. Attached is an abbreviated version with just the icelandic and turkish detection included. It seems to be mismatching on detecting the third keysym where the key is defined in /etc/X11/xkb/symbols/tr this could be a clue :)
15 mismatches per layout is too much. Isn't it?
TRACE_(key)("mismatch for keysym 0x%04lX, keycode %d,
in function X11DRV_KEYBOARD_DetectLayout where it should be
TRACE_(key)("mismatch for keysym 0x%08lX, keycode %d,
0x%04lX doesn't mean a truncation to 4 characters in format.
or my version of X11 is returning a larger value than it should. I suspect this because of the large amount of calls to the function KEYBOARD_MapDeadKeysym. Maybe the X11 guys have changed a short to a long somewhere in my version of X11 (cvs 2003-11-24) or my gcc (3.2.2) has defined them differently. If that is the case then the line
ckey[i] = keysym & 0xFF;
This piece of code gets executed only if XKB is disabled or couldn't translate keysym to a character.