http://bugs.winehq.org/show_bug.cgi?id=735
------- Additional Comments From winebugzilla@sun.consumer.org.il 2007-09-04 04:03 ------- Re detection - that's not exactly the case. All layouts that start with the country name will match approximately, and thus do the right thing. Matching by name (and in binary search) is much more efficient. Plus, you can get the complete list for a given server (at least for X.org) from /usr/share/X11/xkb/symbols/ (which I will do before submitting), so I do, in fact, think this method is better. In essence, this is no different than the need to code all keyboard layouts today, except that we need to store (and compare) less information per keyboard, and the search is (much) more efficient.
For example, Israel has about three or four layouts. I only coded one into the code, despite the fact that it's not the one I work with (I work with Israel - lyx). The code does the right thing, and will continue to do the right thing even if more languages are added, due to the way the list is ordered.
The only place this method is arguably not better is where multi-lingual countries exist (such as Canada), where getting only an approximate match MAY result in the wrong language being reported. Even there, the language name usually precedes the layout name (i.e. - "Canada - French Dvorak"), so the partial match algorithm will do the right thing.
Looking at the code again, though, I guess do need to use "stricmp" instead of "strcmp".
Re DebugBreak - I was afraid that assert will be compiled away on non-debug builds.
Shachar