How to allow chords of keyboard keys to change the keymap temporarily?
So after four years, I finally have a rough draft of an answer to this question. The answer is to use Interception Tools which uses libevdev to grab keyboard input and do processing on it before re-emitting it. Regarding simultaneous key mapping, I have made a rough plugin for Interception Tools called Chorded Keymap that lets h, j, k, l act like the arrow keys when s and d are pressed simultaneously.
You can't do this with the standard tools, you would have to write something (probably a lot of the xserver will be affected, and if you want this to work outside X, there will be kernel changes).
The reason for this is that the ideas the design is based on (and optimized for) does not include chording of regular keys or emitting characters from modifiers.