This document explains how to use keyboard shortcuts in FS-UAE, how FS-UAE and system keyboard shortcuts can interfere, and how the emulated Amiga keyboard works.
FIXME Keyboard joystick emulation doc
FIXME Write about custom keyboard joystick emulation devices
FIXME Keyboard CD32 emulation doc
FIXME Reference full_keyboard
The following keyboard shortcuts are available by default. Mod means Cmd on OS X and Alt on other platforms, but it can be re-configured as another key. See the "modifier key" section for more information.
Note: The shortcuts are mapped against keys on a English keyboard, so on international keyboards, the key (symbol) you have to press may in some cases be different (but same physical key).
Input control:
Emulation control:
Volume control:
Disk swapper:
DF0
.FIXME:
Note: It is possible to customize the keyboard shortcuts. See input mapping.
The modifier key is the key used to trigger special keyboard shortcuts. The default modifier key is Cmd on OS X and Alt on all other operating systems. From now on, we will refer to the modifier key as Mod.
Note: You can specify another key with the modifier_key option.
Since Mod is used to trigger special actions, this key is not directly usable for Amiga emulation. This means that -- unless you have overridden the modifier key -- you will not be able to use this key alone to trigger the Amiga "Left Alt" key. The solution to this is to enable full keyboard emulation when you need it by pressing Mod+K.
Note: On OS X you'll have problems with the "Left Amiga" key instead.
The F12 and F11 are always available as modifier keys. This is useful when full keyboard emulation is enabled since the normal modifier keys is then disabled. The Amiga does not have either F11 or F12, so this does not interfere with the emulation.
Note: On many laptops the function keys can only be used while pressing Fn. If this is the case on your keyboard, you need to hold this key as well when you are asked to use a function key.
On OS X, using a function key (if necessary in combination with Fn) may trigger a desktop function such as the "Dashboard" instead. So in order to be able to use for example F12 you may need to add another modifier key such as Cmd into the mix so OS X will not recognize the key combination. For example Cmd+F12 will not trigger the "Dashboard", but will still open the FS-UAE menu, since FS-UAE allows F12 to be used with any modifier.
Depending on your keyboard setup, you may even have to press Fn+Cmd+F12. This is getting a bit ridiculous, so what you can do instead is one or more of the following:
action_menu
to a keyboard key.
You should choose a key which you do not need to use for Amiga emulation.Grabbing the input means that FS-UAE asks the operating system to lock the mouse to the FS-UAE window, and to send as many key presses as possible directly to FS-UAE. This is necessary in order to:
So, when input is grabbed, most key pressed are sent directly to FS-UAE and is not intercepted by the operating system. This is especially true when running FS-UAE in full-screen mode, but it also depends on the operating system.
Note: If you do not want to grab as many keyboard keys as possible you can disable the option keyboardinputgrab. But please note that you may be prevented from using some Amiga keys.
Since most key presses are sent directly to FS-UAE when input is grabbed, most desktop shortcuts and multimedia keys will not work. This means that you will not be able to (for example) use the volume controls on your keyboard -- if you have those -- while FS-UAE has grabbed the input.
In order to use such keys or keyboard shortcuts, you can do one of the following:
When keyboard input is grabbed, on some operating systems (Linux, BSD), Alt-Tab while generally not work, since the key presses are sent directly to FS-UAE. In order to still allow Alt-Tab to work on these platforms, FS-UAE does the following:
Since the input grab is released when you press Mod, the operating system will be able to intercept Alt+Tab when you subsequently press Tab while still holding Alt as long as Alt is the modifier key in FS-UAE. If the system uses another modifier key for window switching, this workaround will not work unless FS-UAE is also configured to use the same modifier key.
Note: On Windows and OS X, the operating system always intercepts Alt+Tab and Cmd+Tab respectively, so window switching should always works regardless of input grab in FS-UAE.
The SDL library used by FS-UAE intercepts Alt+F4 and Cmd+Q and uses this to close the application. This means that even with full keyboard emulation enabled, you are prevented from using Amiga+F4 or Amiga+Q.
This will continue to be the case until SDL supports
SDL_HINT_HANDLE_OS_HOTKEYS = 0
.
Keys in FS-UAE are (generally) mapped based on physical location and not by symbol. Trying to map symbols would impossible without hack-ish workarounds anyway, since one Amiga key can have its symbols spread over two or more host keys, depending on keyboard layout.
To to understand how to use the emulated Amiga keyboard, it is useful to visualize that you have printed stickers for Amiga keys, and pasted them on top of your keyboard keys, in the corresponding physical location.
Please note the following important information:
If you have a non-English keyboard, you need to compare your keyboard to an English one to find out what a key in a given physical location is called. Likewise, you must use an English Amiga keyboard as reference to understand what a specific Amiga key is named.
Note: Since the Amiga keys are listed in row order, you can also use this order to figure out the correct name for non-English keys. For host keys, you can refer to the separate table in the "Host Key names" section.
The Amiga keys are listed in row order, top row first. The listed action names in the table are for use with custom input mapping. The host key name is printed in bold letters when the physical location of the host key differs from the Amiga key.
Amiga Key | Input Mapping Action | Default Host Key(s)
------------ | --------------------------- | -------------------
ESC | action_key_esc
| ESCAPE
F1 | action_key_f1
| F1
F2 | action_key_f2
| F2
F3 | action_key_f3
| F3
F4 | action_key_f4
| F4
F5 | action_key_f5
| F5
F6 | action_key_f6
| F6
F7 | action_key_f7
| F7
F8 | action_key_f8
| F8
F9 | action_key_f9
| F9
F10 | action_key_f10
| F10
- | |
BACKQUOTE | action_key_backquote
| BACKQUOTE
1 | action_key_1
| 1
2 | action_key_2
| 2
3 | action_key_3
| 3
4 | action_key_4
| 4
5 | action_key_5
| 5
6 | action_key_6
| 6
7 | action_key_7
| 7
8 | action_key_8
| 8
9 | action_key_9
| 9
0 | action_key_0
| 0
SUB | action_key_sub
| MINUS
EQUALS | action_key_equals
| EQUALS
BACKSLASH | action_key_backslash
| BACKSLASH
BACKSPACE | action_key_backspace
| BACKSPACE
DEL | action_key_del
| DELETE
HELP | action_key_help
| END
LPAREN | action_key_lparen
| HOME
RPAREN | action_key_rparen
| PAGEUP
NPDIV | `actionkeydiv` | KPDIVIDE
NPMUL | `actionkeymul` | KPMULTIPLY
- | |
TAB | action_key_tab
| TAB
Q | action_key_q
| Q
W | action_key_w
| W
E | action_key_e
| E
R | action_key_r
| R
T | action_key_t
| T
Y | action_key_y
| Y
U | action_key_u
| U
I | action_key_i
| I
O | action_key_o
| O
P | action_key_p
| P
LEFTBRACKET | action_key_leftbracket
| LEFTBRACKET
RIGHTBRACKET | action_key_rightbracket
| RIGHTBRACKET
RETURN | action_key_return
| RETURN
NP7 | `actionkeynp7| KP7
NP_8 |
actionkeynp8` | KP8
NP9 | action_key_np_9
| KP9
NPSUB | `actionkeysub` | KPMINUS
- | |
CTRL | action_key_ctrl
| LCTRL
CAPSLOCK | `actionkeycapslock| CAPSLOCK
A |
actionkeya| A
S |
actionkeys| S
D |
actionkeyd| D
F |
actionkeyf| F
G |
actionkeyg| G
H |
actionkeyh| H
J |
actionkeyj| J
K |
actionkeyk| K
L |
actionkeyl| L
SEMICOLON |
actionkeysemicolon| SEMICOLON
SINGLEQUOTE |
actionkeysinglequote| QUOTE
2B |
actionkey2b| **INSERT**
CURSOR_UP |
actionkeycursorup` | UP
NP4 | action_key_np_4
| KP4
NP5 | `actionkeynp5| KP5
NP_6 |
actionkeynp6` | KP6
NPADD | action_key_add
| KPPLUS
- | |
SHIFTLEFT | action_key_shift_left
| LSHFT
30 | action_key_30
| LESS
Z | action_key_z
| Z
X | action_key_x
| X
C | action_key_c
| C
V | action_key_v
| V
B | action_key_b
| B
N | action_key_n
| N
M | action_key_m
| M
COMMA | action_key_comma
| COMMA
PERIOD | action_key_period
| PERIOD
DIV | action_key_div
| SLASH
SHIFTRIGHT | `actionkeyshiftright| RSHIFT
CURSOR_LEFT |
actionkeycursorleft` | LEFT
CURSORDOWN | action_key_cursor_down
| DOWN
CURSORRIGHT | `actionkeycursorright| RIGHT
NP_1 |
actionkeynp1` | KP1
NP2 | action_key_np_2
| KP2
NP3 | `actionkeynp3| KP3
NP_ENTER |
actionkeyenter| KP_ENTER
ALT_LEFT |
actionkeyaltleft` | LALT
AMIGALEFT | action_key_amiga_left
| LSUPER
SPACE | action_key_space
| SPACE
AMIGARIGHT | `actionkeyamigaright| **RSUPER**, **PAGEDOWN**, **MENU**
ALT_RIGHT |
actionkeyaltright` | RALT
NP0 | action_key_np_0
| KP0
NPPERIOD | `actionkeyperiod` | KPPERIOD
The keys named "2B and "30" in this list is for international Amiga keyboards which has these physical keys:
0x2B
is the key between SINGLEQUOTE and RETURN.0x30
is the key between LSHIFT and Z.Note: It is often possible to change the keyboard layout in Workbench (or other programs) running in the emulated Amiga. This will not affect the names of the keys used in input mapping. In fact, FS-UAE will be unaware of such a setting, and it will work just like it would with a real Amiga and a real Amiga keyboard. I.e. if you change keyboard layout in Amiga emulation you can get a different symbol when you press a given key.
Host Key | Input Mapping Option | Comment
------------ | --------------------------- | -------
- | | Function key row
ESCAPE | keyboard_key_escape
|
F1 | keyboard_key_f1
|
F2 | keyboard_key_f2
|
F3 | keyboard_key_f3
|
F4 | keyboard_key_f4
|
F5 | keyboard_key_f5
|
F6 | keyboard_key_f6
|
F7 | keyboard_key_f7
|
F8 | keyboard_key_f8
|
F9 | keyboard_key_f9
|
F10 | keyboard_key_f10
|
F11 | keyboard_key_f11
|
F12 | keyboard_key_f12
|
PRINT | keyboard_key_print
|
SCROLLOCK | keyboard_key_scrollock
|
PAUSE | keyboard_key_print
|
- | | Number row
BACKQUOTE | keyboard_key_backquote
|
1 | keyboard_key_1
|
2 | keyboard_key_2
|
3 | keyboard_key_3
|
4 | keyboard_key_4
|
5 | keyboard_key_5
|
6 | keyboard_key_6
|
7 | keyboard_key_7
|
8 | keyboard_key_8
|
9 | keyboard_key_9
|
0 | keyboard_key_0
|
MINUS | keyboard_key_minus
|
EQUALS | keyboard_key_equals
|
BACKSPACE | keyboard_key_backspace
|
INSERT | keyboard_key_insert
|
HOME | keyboard_key_home
|
PAGEUP | keyboard_key_pageup
|
NUMLOCK | keyboard_key_numlock
|
KPDIVIDE | `keyboardkeykpdivide|
KP_MULTIPLY |
keyboardkeykpmultiply` |
KPMINUS | keyboard_key_kp_minus
|
- | | Top letter row
TAB | keyboard_key_tab
|
Q | keyboard_key_q
|
W | keyboard_key_w
|
E | keyboard_key_e
|
R | keyboard_key_r
|
T | keyboard_key_t
|
Y | keyboard_key_y
|
U | keyboard_key_u
|
I | keyboard_key_i
|
O | keyboard_key_o
|
P | keyboard_key_p
|
LEFTBRACKET | keyboard_key_rightbracket
|
RIGHTBRACKET | keyboard_key_rightbracket
|
RETURN | keyboard_key_return
|
DELETE | keyboard_key_delete
|
END | keyboard_key_end
|
PAGEDOWN | keyboard_key_pagedown
|
KP7 | keyboard_key_kp7
|
KP8 | keyboard_key_kp8
|
KP9 | keyboard_key_kp9
|
KPPLUS | `keyboardkeykpplus|
- | | **Middle letter row**
CAPSLOCK |
keyboardkeycapslock|
A |
keyboardkeya|
S |
keyboardkeys|
D |
keyboardkeyd|
F |
keyboardkeyf|
G |
keyboardkeyg|
H |
keyboardkeyh|
J |
keyboardkeyj|
K |
keyboardkeyk|
L |
keyboardkeyl|
SEMICOLON |
keyboardkeysemicolon|
QUOTE |
keyboardkeyquote|
BACKSLASH |
keyboardkeybackslash|
KP4 |
keyboardkeykp4|
KP5 |
keyboardkeykp5|
KP6 |
keyboardkeykp6|
- | | **Bottom letter row**
LSHIFT |
keyboardkeylshift|
LESS |
keyboardkeyless|
Z |
keyboardkeyz|
X |
keyboardkeyx|
C |
keyboardkeyc|
V |
keyboardkeyv|
B |
keyboardkeyb|
N |
keyboardkeyn|
M |
keyboardkeym|
COMMA |
keyboardkeycomma|
PERIOD |
keyboardkeyperiod|
SLASH |
keyboardkeyslash|
RSHIFT |
keyboardkeyrshift|
UP |
keyboardkeyup|
KP1 |
keyboardkeykp1|
KP2 |
keyboardkeykp2|
KP3 |
keyboardkeykp3|
KP_ENTER |
keyboardkeykpenter|
- | | **Bottom row**
LCTRL |
keyboardkeykplctrl|
LSUPER |
keyboardkeykplsuper| Left "Windows" key or "Cmd"
LALT |
keyboardkeykplalt| Different physical position on Mac
SPACE |
keyboardkeykpspace|
RALT |
keyboardkeykpralt| Different physical position on Mac
RSUPER |
keyboardkeykprsuper| Right "Windows" key or "Cmd"
MENU |
keyboardkeykpmenu|
RCTRL |
keyboardkeykprctrl|
LEFT |
keyboardkeyleft|
DOWN |
keyboardkeydown|
RIGHT |
keyboardkeyright|
KP0 |
keyboardkeykp0` |
KPPERIOD | keyboard_key_kp_period
|
- | | Special keys
VOLUMEUP | keyboard_key_volumeup
|
VOLUMEDOWN | keyboard_key_volumedown
|
MUTE | keyboard_key_mute
|
AUDIONEXT | keyboard_key_audionext
|
AUDIOPREV | keyboard_key_audioprev
|
AUDIOSTOP | keyboard_key_audiostop
|
AUDIOPLAY | keyboard_key_audioplay
|
The following shortcuts work, but you should be aware that the Ctrl key press will be sent to the emulated Amiga before you have completed the shortcut combination, so the key press may have side effects on the emulated Amiga:
FIXME Remove items from this list which is listed elsewhere:
The following shortcuts will only have an special effect while in net play mode:
If you create a custom shortcut, for example:
keyboard_key_ctrl_p = action_pause
Then you should be aware that the emulated Amiga will see the Ctrl key press before you have pressed P. The Amiga will not see the P key press however, since this triggers the shortcut instead.
This may or may not be a problem for you. But it isn't possible to avoid automatically because FS-UAE cannot know if you are going to press a key combination or not. In this case, if you do not want the Amiga to see the Ctrl key presses, you can for example also add:
keyboard_key_ctrl = action_none
But then of course, you'll have no way to press the Amiga "Ctrl" key - unless you also map another host key (combination) to Amiga "Ctrl", for example:
keyboard_key_ctrl_c = action_key_ctrl
The number row of the Amiga has one more key than on PC keyboards. By
default, this key is moved to the key left of Return
(two rows down), and this key again is moved to the
keyboard_key_insert = action_key_backslash
keyboard_key_backslash = action_key_2b
You can disable the F12 menu key with the following option, but please note that it will still function as alternative modifier key:
keyboard_key_f12 = action_none