The key map is hard-coded, meaning that it can only deal with a US, French, or German keyboard (and only deal properly with a US keyboard). There is currently no way to change that. I am working to fix this problem though, but it isn't going to happen until 3.7 since it requires a move to SDL on all platforms and a significant number of changes to the input code, control config, and to how pilot files store control bindings.
EDIT: I should probably add that you can kind or get around this with OS specific work-arounds, which are notably easier to do on Linux. But the point is that the problem is that the code uses physical key locations to figure out what character to show, which is a seriously bad way to code up something like this. The move to SDL will simply get rid of the key map and figure out the character to show based on the actual key being pressed rather than some horrid lookup table.