"Shane Shields" locutusenterprises@softhome.net wrote:
There are two problems with current x11drv keyboard code:
- Very likely that Turkish keyboard layout there is incorrect.
AFAICT The Turkish keyboard layout is correct.
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.
The original code doesnt get as far as looking at the turkish definition. From what I could determine it stopped searching when it got a wrong keysymb and if that combination satisfied the selection that keyboard was chosen.
That shouldn't happen. Keyboard detection code always does a full round of comparisons with every keyboard table in x11drv.
It didnt matter if it was the right keyboard or not. This was not completely verified through testing as I only have one keyboard :)
- As stated before the keyboard code should be fixed to take into account
the real keyboard layout while building the keyc2vkey map, not the hardcoded one.
That would be a more elegant and portable fix. How do the other programs do it (read window managers)?
Other programs have no constrains implied by implementing Win32 APIs on the top of X11.