Guide to Game Development/Settings/Input

The 'perfect game' should allow you to have different input types: keyboard & mouse, gamepad/controller and joystick.

Ability to rebind all keys

 * When rebinding keys, allow one gameplay action to be bound to two or more keys
 * Some games have one key allowed to be linked to multiple actions
 * Allow for rebound keys to not only go to keys, but to mouse movement and mouse buttons if they have a custom mouse.
 * Allow them to bind 'double-tap' functionality
 * Set-ups for different game modes:
 * When on-foot
 * When in a car
 * Etc
 * Default presets:
 * Default 1 right-handed
 * Typical preset for a FPS would be:
 * Forward - W
 * Backwards - S
 * Left - A
 * Right - D
 * Jump - Space
 * Run - Left Shift or Double-tap W
 * Crouch - Left Ctrl or C
 * Reload - R
 * Use - E
 * Grenade/Throwing item - G
 * Flash light - F
 * Throw item - Q or \
 * Chat - T or Enter
 * Team Chat - Y
 * Weapon Select - 1-9 or Mouse Wheel
 * See player/scores - TAB
 * Default 2 right-handed
 * Default 1 left-handed
 * Typical preset for a FPS would be:
 * Forward - I or Arrow-Up or Numpad-8
 * Backwards - K or Arrow-Down or Numpad-5 or Numpad-2
 * Left - J or Arrow-Left or Numpad-4
 * Right - L or Arrow-Right or Numpad-6
 * Jump - Space
 * Run - / or Right Shift
 * Crouch -
 * Reload -
 * Use -
 * Grenade/Throwing item -
 * Flash light -
 * Throw item -
 * Chat -
 * Team Chat -
 * Weapon Select -
 * See player/scores -
 * Default 2 left-handed
 * Allow them to save configuration pre-sets (Custom 1)
 * This would be useful if two people played the game

Mouse Sensitivity

 * Change normal look-around sensitivity
 * Different sensitivity in the x-axis to the y-axis
 * Change aim-down-sight sensitivity
 * Maybe also change aim-down- scope sensitivity
 * When set to 100%, it should be the same as their desktop mouse sensitivity (no mouse acceleration/deceleration)

Invert mouse

 * Invert in the y-axis
 * Invert in the x-axis

Have quick access modes

 * Quick save (could be F5)
 * Quick load (could be F9)

Gamepad/Controller
When a gamepad/controller is connected, the game should automatically switch the input to the gamepad/controller (without going into the options menu); this means that the main menu won't say something like "press Enter to continue", instead it will say something like, "press A to continue."

Button bindings

 * Have a few pre-sets of buttons bindings
 * Allow for custom button layouts

Controller vibration

 * On
 * Off
 * Custom vibration strength

Invert gamepad joystick

 * Invert left joystick in both the x-axis and the y-axis
 * Invert right joystick in both the x-axis and the y-axis
 * Invert d-pad in both the x-axis and the y-axis

Joystick/Thumbstick sensitivity

 * Different sensitivity in the x-axis to the y-axis for both joysticks on the gamepad.