http://bugs.winehq.com/show_bug.cgi?id=1712
Summary: Belgian Keyboard Belgium, keyboard.c wrong table mismatch Product: Wine Version: 20030813 Platform: PC OS/Version: FreeBSD Status: UNCONFIRMED Severity: major Priority: P2 Component: wine-x11driver AssignedTo: wine-bugs@winehq.com ReportedBy: jurgen@person.be
./dlls/xdrv/keyboard.c
The Belgian keyboard doesn't define ²³ as first key, the field is empty. This is the main reason why Belgian keyboards aren't detected...
So :
/*** Belgian keyboard layout (contributed by DEBO Jurgen E. G.) ***/ static const char main_key_BE[MAIN_LEN][4] = { "²³","&1","é2",""3","'4","(5","§6","è7","!8","ç9","à0",")°","-_", "aA","zZ","eE","rR","tT","yY","uU","iI","oO","pP","^","$*", "qQ","sS","dD","fF","gG","hH","jJ","kK","lL","mM","ù%","µ£", "wW","xX","cC","vV","bB","nN",",?",";.",":/","=+", "<>" };
When You look closely to this layout You see the third definition in the button field is gone. Like "é2@" is changed to "é2" It should be rather this layout, however, it runs out keyboard.c doesn't recognize the third (AltGr) and makes an error and in RUNTIME it shows up with dead keys.
WHEN this bug is solved it should be this layout :
{ "²³","&1|","é2@",""3#","'4Œ","(5œ","§6^","è7","!8","ç9{","à0}",")°","-_", "aA@","zZł","eE","rR¶","tTŧ","yY←","uU↓","iI→","oOø","pPþ","^[","$*]", "qQæ","sSß","dDð","fFđ","gGŋ","hHħ","jJj","kKĸ","lLł","mM","ù%","µ£`", "wW«","xX»","cC¢","vV","bB","nNn",",?",";.",":/","=+~", "<>||" };
However i suggest to use ALWAYS 3 positions for a key, and to make a trim() on the field. Like
{ "²³ ","&1|","é2@",""3#",etc. }
Secondly I suggest to make an option to switch keyboard detection OFF and use native X keystrokes. An option joined which can be defined into the local conf.