"Shachar Shemesh" wine-devel@shemesh.biz wrote:
I don't see why explicitly adding a "us" keyboard layout would hurt people, since before 4.3.0 release en_US was a mandatory layout existing whether the user wanted it or not.
Ok, how about this. A Russian immegrant to Israel (and there are lots of those), would want his keyboard settings to be "us,il,ru". Windows supports this. X now supports this. Why shouldn't Wine?
Yes, that's one of the cases when our current scheme doesn't work. But one excuse for us is that XFree86 4.3.0 is fairly new.
Actually I have a plan to implement support for keyboard layout Win32 APIs and that anyway requires rewrite of big chunks of the existing keyboard code in x11drv, and as a part of that rewrite I'm going to decouple all existing keyboard layout tables with a US English one and build new tables with LCID and a layout id,
Excellent. Please bear in mind, however, that sometimes it is desireable, and even crucial, to have more than one layout and switch.
That should be fairly easy to implement, since under XFree86 4.3 every international layout is not mixed with any other, even with an en_US one.
Also, the keyboard switching messages are crucial to some BiDi applications.
Do you mean WM_INPUTLANGCHANGEREQUEST and WM_INPUTLANGCHANGE messages?
Also important is an ability by the system to change keyboards. One such requirement is for BiDi text editing, where the algorithm includes, among other things, instances where it is necessary to change the current keyboard layout.
I'm not sure XFree86 supports this feature. Without support from X we couldn't implement keyboard layout changes on application request. Also I don't know whether XFree has a layout enumeration facility.
but so far I don't know how to support several layouts for single locale but with different code pages (for instance for Russian locale we need to support 20866 (KOI8-R) and 1251 code pages).
Don't they have different sub-langs? How does Win32 hadle this?
Windows knows nothing about a KOI8-R based locale. 20866 is just one of the code page numbers. Of course in order to support it we may introduce new, Wine specific LCID with SUBLANG_RUSSIAN_KOI8R.