Jump to content

Customizing/Binding: Difference between revisions

overall copy-edit; clarified how Dev Mode interacts with key bindings and corrected misstatement that film keys only work in Dev Mode
m (link fix)
(overall copy-edit; clarified how Dev Mode interacts with key bindings and corrected misstatement that film keys only work in Dev Mode)
Line 1: Line 1:
In the absence of a control settings screen within Oni, most players set their key bindings manually by editing '''key_config.txt''', though there are GUI solutions like [[Oni Key Editor]] and [[KeyConfig]].
{{UpdatedForOniX|1.0.0}}
{{TOClimit}}
{{TOClimit}}
==How to bind keys==
==How to bind keys==
In lieu of a control setting screen in Oni, most players probably edit the key settings manually, however there are GUI solutions like [[Oni Key Editor]] and [[KeyConfig]].
When changing/adding bindings, make sure you do it underneath the "unbindall" command. To reset your bindings to default, delete key_config.txt and launch Oni to generate a clean version of the file.
 
When you want to add your own controls to '''key_config.txt''', make sure you do it underneath the "unbindall" command. To reset your bindings to default, delete key_config.txt and launch Oni to get a clean binding config generated.


The bind command is structured the following way:
The bind command is structured the following way:
  bind *key* to *action*
  bind *key* to *action*


So if you would want to bind "kick" to '/' you would type:
So if you wanted to bind "kick" to the '/' key, you would type:
  bind slash to kick
  bind slash to kick
Bindings that can't be changed are:
*'''F8''' and '''Shift+F8''' (cycles through available characters when '''shapeshifter''' or [[Dev Mode]] is enabled)
*Any other Dev Mode key, like '''F7''', '''Return''', etc.
*'''Esc''' (toggles Main Menu while playing)


To disable a binding without removing it from the file, comment it out with the '#' symbol:
To disable a binding without removing it from the file, comment it out with the '#' symbol:
  #bind slash to kick
  #bind slash to kick


==Bindable keys==
==Bindable key names==
Below are the names of the keys you can bind actions to. Please note that <tt>.</tt> and <tt>/</tt>, <tt>End</tt>, <tt>[</tt> and <tt>]</tt>, the F-keys, and <tt>Return/Enter</tt> are hard-bound by Oni to [[Dev_Mode#Features|Developer Mode functions]]. Depending on whether you're in Windows or macOS, certain arrow keys, certain numeric pad keys, and <tt>Page Up/Down</tt> may be hard-bound to Dev Mode's camera controls, and should also be avoided. To see if the key or button you're trying to bind to is being received by Oni, you can enter <tt>chr_debug_characters=1</tt> on the console and watch the keypress event bitset in the display at the upper-right; it should be changing as you press and hold keys.
Below are the names of the keys you can bind actions to. Keys attached to developer functions have default key bindings that don't show up in key_config.txt; the keys which are likely to trigger a function when Developer Mode is on are listed in the table below. See [[Developer Mode]] for all the bindings. Note that these default bindings cannot be unbound, even though new actions can be bound to the same keys. Let's say that you added <code>bind fkey8 to swap</code> to key_config.txt. When Developer Mode is off, F8 will draw your weapon, and when Dev Mode is on it will cycle through playable characters.
 
To see if the key or button you're trying to bind to is being received by Oni, you can enter <tt>chr_debug_characters=1</tt> into the developer console and watch the keypress event bitset in the display at the upper-right; it should be changing as you press and hold keys. Note that '''Esc''' is hardcoded to toggle the Main Menu and cannot be bound to anything else.


{|class="wikitable" style="margin-left:auto; margin-right:auto;"
{|class="wikitable" style="margin-left:auto; margin-right:auto;"
!Key description
!Key description
!Syntax
!Name
!Reserved in Dev Mode
|-
|-
|Mouse/joystick/gamepad horizontal/vertical/other axis
|Mouse/joystick/gamepad horizontal/vertical/other axis
|mousexaxis, mouseyaxis, mousezaxis
|mousexaxis, mouseyaxis, mousezaxis
| -
|-
|-
|Mouse/joystick/gamepad button 1 ... 4
|Mouse/joystick/gamepad button 1 ... 4
|mousebutton1 ... mousebutton4
|mousebutton1 ... mousebutton4
| -
|-
|-
|0 ... 9, A ... Z
|0 ... 9, A ... Z
|0 ... 9 '''(1)''', a ... z (lowercase)
|0 ... 9<ref name="numpad" />, a ... z (lowercase)
| -
|-
|-
|F1 ... F12 ... F15
|F1 ... F12 ... F15
|fkey1 ... fkey12 ... fkey15
|fkey1 ... fkey12 ... fkey15
|F2, F3, F6, F7, F8, F9, F10, F11
|-
|-
|Up/Down/Left/Right Arrow
|Up/down/left/right arrow
|uparrow, downarrow, leftarrow, rightarrow
|uparrow, downarrow, leftarrow, rightarrow
|All arrow keys
|-
|-
|Space, Backspace, Tab, Enter
|Space, Backspace, Tab, Enter
|space, backspace, tab, enter
|space, backspace, tab, enter
|Enter
|-
|-
|Num Pad 0 ... Num Pad 9
|Num Pad 0 ... Num Pad 9
|(Windows only) numpad0 ... numpad9 '''(1)'''
|numpad0 ... numpad9<ref name="numpad">On Macs, bindings using <tt>0 ... 9</tt> will be bound to both the keyboard's and numeric pad's 0-9 keys in lieu of support for num pad-specific bindings on Mac.</ref>
| -
|-
|-
|Num Pad '''* / + - .'''
|Num Pad * / + - .
|multiply, divide, add, subtract, decimal
|multiply, divide, add, subtract, decimal
| -
|-
|-
|Num Pad Enter, Num Pad =
|Num Pad Enter, Num Pad =
|numpadenter, numpadequals
|numpadenter, numpadequals
| -
|-
|-
|Print Screen, Pause, Insert, Delete
|Print Screen, Pause, Insert, Delete
|printscreen, pause, insert, delete
|printscreen, pause, insert, delete
| -
|-
|-
|Page Up/Down, Home, End
|Page Up/Down, Home, End
|pageup, pagedown, home, end
|pageup, pagedown, home, end
|Page Up/Down, End
|-
|-
|Caps Lock, Num Lock, Scroll Lock
|Caps Lock, Num Lock, Scroll Lock
|capslock, numlock, scrolllock
|capslock, numlock, scrolllock
| -
|-
|-
|<tt>, . ; '</tt>
|<tt>, . ; '</tt>
|comma, period, semicolon, apostrophe
|comma, period, semicolon, apostrophe
|. (period)
|-
|-
|[ ] / \
|[ ] / \
|rightbracket, leftbracket, slash, backslash
|rightbracket, leftbracket, slash, backslash
|[, ] and /
|-
|-
|Left/Right Shift
|Left/Right Shift
|leftshift/rightshift
|leftshift/rightshift
| -
|-
|-
|Left/Right Control
|Left/Right Control
|leftcontrol/rightcontrol
|leftcontrol/rightcontrol
| -
|-
|-
|Left/Right Alt
|(Windows only) Left/Right Alt
|leftalt/rightalt
|leftalt/rightalt
| -
|-
|-
|(Mac only) Left/Right Option
|(Mac only) Left/Right Option
|leftoption/rightoption
|leftoption/rightoption
| -
|-
|-
|(Windows only) Left/Right Windows
|(Windows only) Left/Right Windows
|leftwindows/rightwindows
|leftwindows/rightwindows
| -
|}
|}


'''(1)''' On Macs, bindings using <tt>0 ... 9</tt> will be bound to both the keyboard's and numeric pad's 0-9 keys in lieu of support for num pad-specific bindings on Mac.
<references />


==Regular bindable events==
==Bindable action names==
{|class="wikitable" style="margin-left:auto; margin-right:auto;"
{|class="wikitable" style="margin-left:auto; margin-right:auto;"
!Event description
!Action
!Syntax
!Name
!Restrictions
!<tt>[[#lock_keys|lock_keys]]</tt> group
!<tt>[[#lock_keys|lock_keys]]</tt> group
|-
|-
|Horizontal/Vertical Aiming
|Horizontal/Vertical Aiming
|aim_lr/aim_LR, aim_ud/aim_UD
|aim_lr/aim_LR, aim_ud/aim_UD
| -
|'''cannot be locked'''
|'''cannot be locked'''
|-
|-
|Forward, Backward, Strafe Left/Right
|Forward, Backward, Strafe Left/Right
|forward, backward, stepleft, stepright
|forward, backward, stepleft, stepright
| -
|<tt>keys_movement</tt>
|<tt>keys_movement</tt>
|-
|-
|Turn Left/Right (DOOM-style)
|Turn Left/Right
|turnleft/turnright
|turnleft/turnright
| -
|<tt>keys_all</tt>
|<tt>keys_all</tt>
|-
|-
|Jump, Crouch, Walk
|Jump, Crouch, Walk
|jump, crouch, [[#walk|walk]]
|jump, crouch, [[#walk|walk]]
| -
|<tt>keys_jump, keys_crouch, keys_walk</tt>
|<tt>keys_jump, keys_crouch, keys_walk</tt>
|-
|-
|Draw/Holster Weapon, Pick Up
|Draw/Holster Weapon, Pick Up
|swap
|swap
| -
|<tt>keys_inventory</tt>
|<tt>keys_inventory</tt>
|-
|-
|Drop Weapon
|Drop Weapon
|drop
|drop
| -
|<tt>keys_inventory</tt>
|<tt>keys_inventory</tt>
|-
|-
|Reload Weapon
|Reload Weapon
|reload
|reload
| -
|<tt>keys_reload</tt>
|<tt>keys_reload</tt>
|-
|-
|Weapon Safety (Mac only)
|Weapon Safety
|weapon_safety
|weapon_safety
|Intel Mac build only
|<tt>keys_all</tt>
|<tt>keys_all</tt>
|-
|-
|Punch, Kick, Fire1 ... Fire3
|Punch, Kick, Fire1 ... Fire3
|punch, kick, [[#fire1, fire2, fire3|fire1 ... fire3]]
|punch, kick, [[#fire1, fire2, fire3|fire1 ... fire3]]
| -
|<tt>keys_attack</tt>
|<tt>keys_attack</tt>
|-
|-
|Use Hypo
|Use Hypo
|hypo
|hypo
| -
|<tt>keys_hypo</tt>
|<tt>keys_hypo</tt>
|-
|-
|Use Console/Door, Talk, Taunt
|Use Console/Door, Talk, Taunt
|action
|action
| -
|<tt>keys_action</tt>
|<tt>keys_action</tt>
|-
|-
|Escape/Resume
|Escape/Resume
|escape
|escape
| -
|'''cannot be locked'''
|'''cannot be locked'''
|-
|-
|Pause Screen
|Pause Screen
|pausescreen
|pausescreen
| -
|<tt>keys_pause</tt>
|<tt>keys_pause</tt>
|-
|-
|Look Mode
|Look Mode
|[[#lookmode|lookmode]]
|[[#lookmode|lookmode]]
| -
|<tt>keys_all</tt>
|<tt>keys_all</tt>
|-
|-
|Screenshot
|Screenshot
|[[#screenshot|screenshot]]
|[[#screenshot|screenshot]]
| -
|'''cannot be locked'''
|'''cannot be locked'''
|-
|-
|''Any Cheat Event'' (Mac only)
|''Use Cheat''
|''cheatcode'', e.g. fatloot
|''cheatcode'', e.g. fatloot
| Requires Daodan DLL or Intel Mac build
|<tt>keys_all</tt>
|<tt>keys_all</tt>
|-
|Open Developer Console
|console
| Developer Mode must be active
|'''cannot be locked'''
|-
|Start/Stop/Play Recording
|[[#start_record, stop_record, play_record|start_record, stop_record, play_record]]
| -
|'''cannot be locked'''
|-
|Custom Animation Binding 1 and 2
|[[#cutscene1, cutscene2|cutscene1, cutscene2]]
| Must be recording a film
|'''cannot be locked'''
|-
|[[#Detached camera controls|Detached camera controls]]
|man_cam_move_up, man_cam_move_down,<br>man_cam_move_left, man_cam_move_right,<br>man_cam_move_forward, man_cam_move_backward,<br>man_cam_pan_up, man_cam_pan_down, <br>man_cam_pan_left, man_cam_pan_right
| Developer Mode must be active
|'''cannot be locked'''
|}
|}


Line 175: Line 229:


===screenshot===
===screenshot===
*This stores a screenshot in uncompressed BMP format in Oni's folder, with the generic name '''screen_shot#####.bmp'''.
*This stores a screenshot in BMP format (uncompressed) in Oni's folder with the name '''screen_shot#####.bmp'''.
*The size of the screenshot is normally the resolution specified in '''Options''', but you can set the runtime variable <tt>gs_screen_shot_reduce</tt> to downsample the bitmap by a factor of 2 to that power.<br>Thus, if you play Oni in 640x480, the bitmaps you'll get will be:
*The size of the screenshot is normally the resolution specified in '''Options''', but you can set the runtime variable <tt>gs_screen_shot_reduce</tt> on the dev console to downsample the bitmap by a power of 2.<br>Thus, if you play Oni in 640x480, the bitmaps you'll get will be:
**640x480 if <tt>gs_screen_shot_reduce=0</tt> (default)
**640x480 if <tt>gs_screen_shot_reduce=0</tt> (default)
**320x240 if <tt>gs_screen_shot_reduce=1</tt>
**320x240 if <tt>gs_screen_shot_reduce=1</tt>
**160x120 if <tt>gs_screen_shot_reduce=2</tt>....
**160x120 if <tt>gs_screen_shot_reduce=2</tt>....
==Developer Mode's bindable events==
These events only work when Developer Mode is active. You may not need to bind any of these keys; see [[Developer Mode]] for the default key bindings.
{|class="wikitable" style="margin-left:auto; margin-right:auto;"
!Event description
!Syntax
|-
|Open developer console
|console
|-
|Start/Stop/Play Recording
|[[#start_record, stop_record, play_record|start_record, stop_record, play_record]]
|-
|Custom Animation Binding 1 and 2
|[[#cutscene1, cutscene2|cutscene1, cutscene2]]
|-
|[[#Detached camera controls|Detached camera controls]]
|man_cam_move_up, man_cam_move_down,<br>man_cam_move_left, man_cam_move_right,<br>man_cam_move_forward, man_cam_move_backward,<br>man_cam_pan_up, man_cam_pan_down, <br>man_cam_pan_left, man_cam_pan_right
|}


===start_record, stop_record, play_record===
===start_record, stop_record, play_record===
Line 219: Line 253:
  sc_bind_f2="KONCOMsuper_kick";
  sc_bind_f2="KONCOMsuper_kick";
  sc_bind_f3="KONOKOendpowerup";
  sc_bind_f3="KONOKOendpowerup";
*Then press F9 to start recording a film.
*Then press F9 to start recording a film. The cutscene keys do not work otherwise.
*Then press F2 or F3 to play the designated animation.
*Then press F2 or F3 (or your custom binding) to play the designated animation.
*The custom animations' names are stored in the event buffer, so the right animations will appear during playback even if '''sc_bind_f2''' and '''sc_bind_f3''' are changed afterward.
*The custom animations' names are stored in the event buffer, so the right animations will appear during playback even if '''sc_bind_f2''' and '''sc_bind_f3''' are changed afterward.


Line 241: Line 275:
  bind 4 to man_cam_pan_right
  bind 4 to man_cam_pan_right


==Intel Mac Oni's bindable events==
[[Category:Oni Support]][[Category:OniX-affected articles]]
The [[FERAL|Intel Mac build]] from Feral allows Oni's original cheat codes, and the Intel build's newly-added ones, to be bound to keys, so they can be activated easily in-game without entering the Pause screen.
 
[[Category:Oni Support]]