uae-wii/docs/Joystick_mapping.txt

92 lines
3.8 KiB
Plaintext

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=<n>, where 1 <= n <= 4) which
you can switch between easily.