From http://www.freelists.org/post/uae/Configuring-keymapping A few people have asked about if it's possible to re-configure the keymapping in E-UAE. The answer is yes, but it's not easy to do, and it's not documented. Note: the whole handling of key-press translation needs to be re-thought. I hacked in some code to support the translation of raw key codes, but it's pretty much a mess at the moment. Anyway, I thought the easiest was to explain how this can be done now is with a couple of examples. You'll need to manually edit your config file. Okay. Suppose (for some strange reason) you want the 'F1' key to produce the equivalent of pressing the 'A' key on an Amiga keyboard. You're running E-UAE on SDL/X11 on Linux, and you have raw key-mapping enabled (sdl.map_raw_keys=true). The first thing you need to do is to enable an alternate input configuration. The default input configuration is number 0 and you can't modify that. You can, however, modify configs 1 to 4. So: input.config=1 Now, you change the mapping of the F1 key with: input.1.keyboard.0.button.67=KEY_A The is saying for input config 1 (the configuration you enabled above), for keyboard 0 (the default), the button with keycode 67 will produce the input event "KEY_A". 67 is the "raw" X11 scan code for the F1 key on Linux when using PC or Mac keyboards. See the source file 'src/keymap/x11pc_rawkeys.c' for a list of these. See 'src/keymap/quartz_rawkeys.c' for the OS X codes. Etc. The input events are listed in 'src/inputevents.def'. The first parameter in each DEFEVENT macro is the name of the input event. Okay, let's try something more useful. Suppose you wanted to swap the left Alt and left Amiga keys. Do this with: input.1.keyboard.0.button.64=KEY_AMIGA_LEFT input.1.keyboard.0.button.115=KEY_ALT_LEFT Note that input events that you can generate are not limited to Amiga key-presses. Suppose you want to emulate a joystick in port 2 with key presses: # This enables WASD + Left alt joystick emulation input.1.keyboard.0.button.25=JOY2_UP input.1.keyboard.0.button.38=JOY2_LEFT input.1.keyboard.0.button.39=JOY2_DOWN input.1.keyboard.0.button.40=JOY2_RIGHT input.1.keyboard.0.button.64=JOY2_FIRE_BUTTON The equivalent for OS X would be: input.1.keyboard.0.button.13=JOY2_UP input.1.keyboard.0.button.0=JOY2_LEFT input.1.keyboard.0.button.1=JOY2_DOWN input.1.keyboard.0.button.2=JOY2_RIGHT input.1.keyboard.0.button.58=JOY2_FIRE_BUTTON If you select an inputdevice configuration other than config 0, then the existing default joystick emulation key layouts no longer apply. You have to add your own key-map option to emulate joystick input with the keyboard like the example I provided. If you select an input config other config 0, then you have complete control over which input event is generated by which key. If you don't change anything, however, then the default mapping applies. Press 'a', you get an a', etc. As I said, the default joystick emulation options no longer work. You can select joyport1=kbd3, for example, but it will have no effect. The 't' kill will produce a 't' input event, unless you manually assign another event to the key. Obviously if you you re-map a key, say 'W' to produce a joystick up event, then it cannot also produce a key 'w' event. Each key can be assigned only one event. The reason for this system is to support two configuration modes. A legacy mode (input.confg=0) where you get the default key mapping, mapping of mouse and joystick events and the traditional keyboard joystick emulations; and a new mode, where you can configure everything yourself. In the new mode, you can configure 4 seperate mappings (input.config=, where 1 <= n <= 4) which you can switch between easily.