Add preliminary support for keyboard layout APIs

Shachar Shemesh wine-devel at shemesh.biz
Sun Nov 9 07:07:30 CST 2003


Dmitry Timoshkov wrote:

>Hello,
>
>note to Shachar:
>
>this implementation doesn't really work due to "merged" keyboard
>layouts we have. I.e. since we have Israelian keyboard layout
>with both english and hebrew characters, after the MappingNotify
>event we're still using the same keyboard layout with same LCID
>identifier, and applications receive WM_INPUTLANGCHANGE(REQUEST)
>with the same, not changed keyboard layout identifier.
>
>You can make it work though, using an ugly workaround:
>
>setxkbmap us
>wine WINWORD.EXE
>
>type something in Word, then in another xterm and run
>setxkbmap ru
>
>switch back to Word and continue typing. Word will see the change
>and kindly reflect that in the status bar.
>
>In order to experiment with Hebrew you need to create a pure Hebrew
>keyboard layout in Wine, and use 'setxkbmap il'.
>
>Perhaps a way to go is to handle X layout switch notification event
>and figure out what layout is really used from the merged mapping
>we currently have. So far I have no an idea how to do that.
>
>  
>
I had an idea, but I have not even began to look at it. I'm currently 
still sharing my time on Wine between the unicows thingy and revamping 
the BiDi support.

The idea I had, for which I cannot state whether it's feasible or not, 
is to get the mapping from XKB, and prepare a list (group 0 - US, group 
1 - IL, group 2 - RU). Then, whenever we get a "next group" or "prev 
group", just send out the proper messages. This way, we can also switch 
keyboard language at an application's whim (I actually have a small 
snippet of code that does that, if your'e interested).

As far as I see it, using "setxkbmap" with a new layout is akin to 
entering the keyboard control panel applet and changing the layout, 
rather than to using "alt-shift".

I fully understand that some applications do that anyhow. In particular, 
KDE's keyboard switching is based on calling setxkbmap. I think that 
would still work (though it may send an "settingschanged" message).

Anyhow, your current code (which I have not dived into, yet) should 
probably go in. It seems to prepare important infrastructure for 
handling keyboard languages by the X11 driver.

             Shachar

-- 
Shachar Shemesh
Open Source integration consultant
Home page & resume - http://www.shemesh.biz/





More information about the wine-devel mailing list