I guess the best thing is to allow loading the characters from a text file, something like (if fgKey is a fgKeyboard object):
fgKey.LoadCharSet (Filename)
and the file should contain a mapping in text. You can separate the different layouts with section tags in [], and then the lines preceded with --, and then the chars separated with |. It's readable and easy to parse, and way simpler than XML. Something like:
[smallChar]
--FirstLine
q|w|e|r|t|y|u|i|o|p
--SecondLine
a|s|d|f|g|h|j|k|l
.....
.....
[Capitals]
--FirstLine
Q|W|E|R|T|Y|U|I|O|P
.....
.....
[Symbol]
--FirstLine
Q|W|E|R|T|Y|U|I|O|P
[Nums]
--FirstLine
1|2|3
--SecondLine
4|5|6
...
and so on. This way users will quickly create the different layout they use in each languages and you will not have to bother.
You may also consider another key not currently implemented is the "Change language" key - it requires one extra set of characters to be implemented but is essential for people working in foreign languages and need to switch to English from time to time. I've attached a sample from the iPhone keyboard - the key to the left of [space] is what I meant.
I'd be happy to assist. It's a great work anyway and thank you very much! :icon_clap: