Keyboard layout detection not working??

Shachar Shemesh wine-devel at
Tue May 28 09:00:42 CDT 2002

Hi all,

I am using Debian SID with KDE. In KDE, I defined two keyboard layouts
(US and IL). I tried to add Israeli keyboard detection using the
attached patch (layout.diff). When trying to test that patch, however, I
perform the following task:

I type in the command as suggested in the docs (wine --debugmsg
+key,+keyboard >& key.log). Attached are two run attempts. key.log is
with the US keyboard selected, key2.log is with the Hebrew keyboard

Comparing the two outputs, several things become evident:

    1. The Israeli keyboard is not detected. It fails to match even the
       non-Hebrew characters (such as the '/' instead of lower case 'q').
       It's as if WINE did not notice that a non-English keymap was
       installed. On the other hand, there are some differences between
       the two runs. What's going on?
    2. The dvorak keyboard has 0 mismatches???? I noticed that the code
       has some different virtual mapping of the keyboard. I am not aware
       that dvorak keyboards generate a different scan code mapping. Am I
       missing something here?
    3. There does not appear to be any code that detects layout changes
       in X11, and sends the apropriate WM_INPUTLANGCHANGE message. I
       understood that implementing an event trigered by X layout change
       is a difficult matter, but it is highly necessary for my BiDi
       support (many programs, including Office, know the current
       direction, and have visual representation when it changes. Not
       implementing this message may prove to be problematic in that
       I currently don't have the capacity to go after this particular
       problem, but if it remains unsolved by the time it becomes crucial
       to me, I will. If anyone has any leads on solving this problem,
       please let me know. I have entered bug #735 on this issue.

                 Many thanks for your input,


-------------- next part --------------
Index: dlls/x11drv/keyboard.c
RCS file: /home/wine/wine/dlls/x11drv/keyboard.c,v
retrieving revision 1.1
diff -u -r1.1 keyboard.c
--- dlls/x11drv/keyboard.c	30 Apr 2002 21:16:39 -0000	1.1
+++ dlls/x11drv/keyboard.c	28 May 2002 13:20:04 -0000
@@ -531,6 +531,15 @@
+/*** Israeli keyboard layout */
+static const char main_key_IL[MAIN_LEN][4] =
+ "`~","1!","2@","3#","4$","5%","6^","7&","8*","9(","0)","-_","=+",
+ "/Q","'W","÷E","øR","àT","èY","åU","ïI","íO","ôP","[{","]}",
+ "ùA","ãS","âD","ëF","òG","éH","çJ","ìK","êL","ó:",",\"","\\|",
+ "æZ","ñX","áC","äV","ðB","îN","öM","ú<","õ>",".?"
 /*** VNC keyboard layout */
 static const WORD main_key_scan_vnc[MAIN_LEN] =
@@ -600,6 +609,7 @@
  {"Latin American keyboard layout", 28591, &main_key_LA, &main_key_scan_qwerty, &main_key_vkey_qwerty},
  {"Lithuanian (Baltic) keyboard layout", 28603, &main_key_LT_B, &main_key_scan_qwerty, &main_key_vkey_qwerty},
  {"Turkish keyboard layout", 28599, &main_key_TK, &main_key_scan_qwerty, &main_key_vkey_qwerty},
+ {"Israeli keyboard layout", 28598, &main_key_IL, &main_key_scan_qwerty, &main_key_vkey_qwerty},
  {"VNC keyboard layout", 28591, &main_key_vnc, &main_key_scan_vnc, &main_key_vkey_vnc},
  {NULL, 0, NULL, NULL, NULL} /* sentinel */

-------------- next part --------------
A non-text attachment was scrubbed...
Name: key.log.bz2
Type: application/octet-stream
Size: 2276 bytes
Desc: not available
Url :
-------------- next part --------------
A non-text attachment was scrubbed...
Name: key2.log.bz2
Type: application/octet-stream
Size: 2729 bytes
Desc: not available
Url :

More information about the wine-devel mailing list