I still think a general-purpose, fully programmable in-flight keymap feature solves everybody's problems. And gives everybody full customization. Maximum benefit!
I've done "keyboard remapping" a long time ago in another project. I can say it can be tedious to code. But I know where you're coming from though, I'm using an AZERTY keyboard myself.
However there's this utility: http://wiki.alioth.net/index.php/Keyconfig
It basically just involves looking up the keypress in a dictionary where the keypress is the dict-key and the command is the resulting dict-value. Then it's a matter of coming up with UI screens that allow one to view and edit these values. The external keymap rewriter is handy, but we additionally need to add the notion of general prime-equipment<equipID>, set-mode-equipment<equipID>, activate-equipment<equipID> commands. And it should be internal to the core so it doesn't bit-rot with new releases.