USB Device Emulation
Human Interface Devices
The QuadStick also appears on the USB bus as a small removable storage device, a Flash drive. This drive is used to hold the customized configuration file the user may wish to use for a particular game.
The QuadStick looks for a file with the name “config.csv” in its flash drive and reads the contents at start up or whenever the file changes. The outline|Configuration section describes how this file is created. The user simply copies a new config.csv file into the QuadStick drive to load the new configuration. The config.csv file is produced by the configuration spreadsheet.
Additional configuration .csv files stored in the flash can be loaded using voice commands.
[[Image:|thumb|Illustration 1: PS3 Buttons & Controls]]
|dpad_N||PS3 D-Pad Button North|
|dpad_NE||PS3 D-Pad Buttons North and East|
|dpad_E||PS3 D-Pad Button East|
|dpad_SE||PS3 D-Pad Buttons South and East|
|dpad_S||PS3 D-Pad Button South|
|dpad_SW||PS3 D-Pad Buttons South and West|
|dpad_W||PS3 D-Pad Button West|
|dpad_NW||PS3 D-Pad Buttons North and West|
|left_joy_left||PS3 Left Joystick Left side|
|left_joy_right||PS3 Left Joystick Right side|
|left_joy_up||PS3 Left Joystick Up|
|left_joy_down||PS3 Left Joystick Down|
|right_joy_left||PS3 Right Joystick Left side|
|right_joy_right||PS3 Right Joystick Right side|
|right_joy_up||PS3 Right Joystick Up|
|right_joy_down||PS3 Right Joystick Down|
|left_1||PS3 Left Button 1|
|left_2||PS3 Left Button 2 (trigger)|
|left_3||PS3 Left Button 3 (Press joystick)|
|right_1||PS3 Right Button 1|
|right_2||PS3 Right Button 2 (trigger)|
|right_3||PS3 Right Button 3 (Press joystick)|
|x||PS3 Button X|
|square||PS3 Button Square|
|triangle||PS3 Button Triangle|
|circle||PS3 Button Circle|
Table 1: PS3 Output Commands
|mouse_left||Mouse Left movement|
|mouse_right||Mouse Right movement|
|mouse_up||Mouse Up movement|
|mouse_down||Mouse Down movement|
|mouse_wheel_up||Mouse Wheel Up rotation|
|mouse_wheel_down||Mouse Wheel Down rotation|
|mouse_pan_left||Mouse Pan Left tilt|
|mouse_pan_right||Mouse Pan Right tilt|
|mouse_back||Mouse Button Back|
|mouse_forward||Mouse Button Forward|
|mouse_left_button||Mouse Button Left|
|mouse_right_button||Mouse Button Right|
|mouse_middle_button||Mouse Button Middle|
Table 2: Mouse Outputs
Key-codes are associated with the key itself, not necessarily with the character printed on the face of the key. This is more apparent for keys like 2-@, 3-#, etc, than it is for letter keys. (The numeric keypad keys represent 2-down-arrow, 3-page-down, etc.) The Shift, Control or Alt keys, when combined with the key-code, are used to determine how the key is read.
The key-codes are treated like the outputs of the other HID devices. An individual key-code output can be triggered by one of the sensor inputs or by a sequence of inputs in a specific order. The two methods of triggering key-codes are described below.
Game play mode
WASD, named for the keys frequently used to move the cursor on a computer screen before the advent of the arrow keys, became popular with many early PC games and continues to be widely used. The QuadStick can be configured to have key-codes mapped directly to inputs, like joystick North to “w”, East to “d”, etc, in the WASD mapping, for rapid, direct response.
It is possible to create configurations which blend mouse, keyboard or even gamepad commands to give the user the best mix for individual games.
See the outline|Tribes Configuration section for an example of a WASD configuration which mixes keyboard and mouse commands.
The QuadStick can also recognize a sequence of movements of the joystick (or any sequence of inputs) to trigger an output instead of just a simple single input. This gives the QuadStick the ability to, in-effect, recognize the shapes as letters. A sequence of up to eight input triggers, such as moving the joystick through its discrete zones (as shown in Figure 4), mixed with other inputs, can be strung together to trigger any output.
To use pattern recognition, the user moves the joystick into a zone and momentarily pauses to signal the QuadStick to detect that location. The QuadStick uses the velocity of the joystick dropping to a low value to determine the user's intention and flashes the center Blue LED when it registers that location while recording the pattern. If the user moves through a zone quickly, the QuadStick will not include that zone when matching the pattern, which makes it possible to create patterns that include non-adjacent zones..
Once the pattern matches the sequence of locations in the configuration for an output, the output is triggered. Nearly all patterns start and end at the joystick center position.
The following examples illustrate recognition patterns for the letters A, I and K. The full list of the current default recognition patterns can be found in the chapter on configuration:
[[Image:|thumb|Illustration 5: Pattern for Letter A]]
[[Image:|thumb|top|Illustration 6: Pattern for Letter I]]
[[Image:|thumb|top|Illustration 7: Pattern for Letter K]]
Infrared Remote Control
The Infrared transmitter LED on the back panel can be programmed to send IR Remote Control codes. The IR command names are listed below are treated the same as outputs for other kinds of devices in a configuration profile sheet. The specific codes sent for each command are defined on a second sheet, named “IR Codes”, that contains the Philips Pronto Hex Code for the particular TV or A/V devices. An example of the Dish VIP-622 receiver is in a later chapter.
|ir_tv_channel_up||Xmit IR code from command table|
|ir_tv_channel_down||Xmit IR code from command table|
|ir_tv_volume_up||Xmit IR code from command table|
|ir_tv_volume_down||Xmit IR code from command table|
|ir_tv_on_off||Xmit IR code from command table|
|ir_tv_select_input||Xmit IR code from command table|
|ir_play||Xmit IR code from command table|
|ir_stop||Xmit IR code from command table|
|ir_fast_forward||Xmit IR code from command table|
|ir_rewind||Xmit IR code from command table|
|ir_skip_forward||Xmit IR code from command table|
|ir_skip_back||Xmit IR code from command table|
|ir_record||Xmit IR code from command table|
|ir_pause||Xmit IR code from command table|
|ir_mute||Xmit IR code from command table|
|ir_guide||Xmit IR code from command table|
|ir_menu||Xmit IR code from command table|
|ir_cancel||Xmit IR code from command table|
|ir_select||Xmit IR code from command table|
|ir_up||Xmit IR code from command table|
|ir_down||Xmit IR code from command table|
|ir_left||Xmit IR code from command table|
|ir_right||Xmit IR code from command table|
|ir_aux1||Xmit IR code from command table|
|ir_aux2||Xmit IR code from command table|
|ir_aux3||Xmit IR code from command table|
|ir_aux4||Xmit IR code from command table|
Table 3: Infrared Remote Control command list