type() should be able to "learn" a foreign keyboard

Registered by RaiMan on 2011-07-15

*** 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

Blueprint information

Status:
Started
Approver:
None
Priority:
Low
Drafter:
None
Direction:
Needs approval
Assignee:
RaiMan
Definition:
Discussion
Series goal:
None
Implementation:
Slow progress
Milestone target:
None
Started by
RaiMan on 2013-04-29

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.