background music "Darker Waves" by Zander Noriega is licensed CC-BY 3.0

Controller Theory

A working concept regarding how games and game environments should be controlled.

Linux Gamepad

The Linux kernel defines a standardized gamepad that reflects modern game console controllers and many legacy controllers. The gamepad layout somewhat resembles the Classic Controller (2006) with renamed buttons and consideration for analog alternatives.

Steam Controller

Axes

  1. X (left stick horizontal)
  2. Y (left stick vertical)
  3. RX (right pad horizontal)
  4. RY (right pad vertical)
  5. HAT0X (left pad horizontal)
  6. HAT0Y (left pad vertical)
  7. HAT2X (left trigger)
  8. HAT2Y (right trigger)

Buttons

  1. Thumb (left pad touch)
  2. Thumb 2 (right pad touch)
  3. South (A button)
  4. East (B button)
  5. North (X button)
  6. West (Y button)
  7. Trigger Left (left shoulder)
  8. Trigger Right (right shoulder)
  9. Trigger Left 2 (left trigger)
  10. Trigger Right 2 (right trigger)
  11. Start ( button)
  12. Select ( button)
  13. Mode (guide button)
  14. Thumb Left (left stick click)
  15. Thumb Right (right pad click)
  16. Gear Down (right paddle click)
  17. Gear Up (left paddle click)
  18. Directional Pad Up (left pad click)
  19. Directional Pad Down (left pad click)
  20. Directional Pad Left (left pad click)
  21. Directional Pad Right (left pad click)

Wiimote System

Mupen64Plus

The emulator Mupen64Plus defines and standardizes a specific game console controller as well as how to map the controls of various joysticks and a computer keyboard to this standard.

DPad U = "W"
DPad L = "A"
DPad D = "S"
DPad R = "D"
Start = "Enter"
Z Trig = "Z"
L Trig = "X"
R Trig = "C"
A Button = "LShift"
B Button = "LCtrl"
C Button U = "I"
C Button L = "J"
C Button D = "K"
C Button R = "L"
Control Stick = "→", "←", "↓", "↑"

LibRetro Retropad

LibRetro defines a standard virtual game controller used to play a variety of emulated and original games. Keyboards and computer joysticks can map to this virtual gamepad in order to play any LibRetro game.

Xboxdrv

Similar to Mupen64, Xboxdrv by Ingo Runke represents game input with an Xbox controller to which many input devices can be mapped and standardized.

Xemu

The original Xbox emulator Xemu implements a simple keyboard mapping to the original console's controller inputs.

DPad U = "↑"
DPad L = "←"
DPad D = "↓"
DPad R = "→"
Back = ⌫
Start = ↵
L Trig = "W"
R Trig = "O"
White Button = "1"
Black Button = "2"
A Button = "A"
B Button = "B"
X Button = "X"
Y Button = "Y"
Left Stick = "E", "S", "D", "F"
Right Stick = "I", "J", "K", "L"

Keyboard

There are many considerations for supporting a gaming keyboard.

` 1 2 3 4 5 6 7 8 9 0 - =
A Z E R T Y U I O P [ ] \
Q S D F G H J K L ; '
W X C V B N M , . /
LCtrl LAlt Space bar RAlt RCtrl

Mnemonic keys

Positional keys

WASD

Mouse

Analog/motion control with modifiers. Mouse-only video game test cases:

Relative

  1. X Motion
  2. Y Motion
  3. Z Motion
  4. Right X Motion
  5. Right Y Motion
  6. Right Z Motion
  7. Horizontal Wheel
  8. Dial Motion
  9. Wheel
  10. Misc Motion

Button

  1. Left Button
  2. Right Button
  3. Middle Button
  4. Scroll Up
  5. Scroll Down
  6. Scroll Left
  7. Scroll Right
  8. Side Button
  9. Extra Button
  10. Forward Button
  11. Back Button
  12. Task Button

Compressed Button Notation

ZL ZR
CL CR
DU SU AU
DL DR SL SR AL AR
DD AD
WL WR

page built