type() should be able to "learn" a foreign keyboard
*** the situation:
type() is still restricted (without doing brain acrobatics ;-) to the characters, numbers and first layer special characters of the US-querty keyboard layout. Using type() with other keyboards may/will not type the expected keys especially for special characters and other localized characters (like german umlaute).
*** proposed solution:
--- the internal translation table should be a loadable hash/dictionary (key-value storage) instead of the current hard coded implementation as a case structure.
--- there should be a utility, that produces a valid translation table for the used keyboard
--- the IDE should have a preference to specify the location of this table file (e.g. in YAML format)
--- sikuli-script.jar should have a setting feature with the same effect for Sikuli non-IDE usages
*** my evaluations and tests:
--- I have a utility (currently in JRuby on Mac, can be done in Python or Java too), that uses Sikuli paste() and type() in a TextEditor window, to produce pairs of what was meant to type and what was actually typed.
--- This is read into a key-value storage using clipboard (by eval()) and analyzed.
--- " \ and the diacritic characters (´`^~¨) need special handling
--- The result is a key-value storage, containing for all 256 extended ASCII characters the equivalents that have to be used with type(), to get the character you want.
--- So I am able to fully utilize my german keyboard and type() every text, that can be produced with this keyboard (since I use JRuby, it is easy to redefine the Region.type() method (actually it is the type_ch() method, that contains the translation), to use this "german" translation table)
--- I am using YAML to store and reload the tables