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
selected.
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
respect).
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,
Shachar
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 @@
"zZ","xX","cC","vV","bB","nN","mM","öÖ","çÇ",".:"
};
+/*** 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 */