DiRT 4 Guide

Multi-Input Device Configuration for DiRT 4 for DiRT 4

Multi-Input Device Configuration for DiRT 4

Overview

Previous Codemasters racing titles have had input device support for a single input device with the recent addition of a primary device and a peripheral (e.g. wheel and a USB pedal set).For DiRT 4 input, multiple input devices are now supported with the ability to connect or store information on up to 12 separate USB devices at once. Multiple instances of the same device type are also supported allowing different actions to be bound on the different instances (e.g. two identical sequential shifters with one being used as a handbrake).The following document will outline the functionality available to configure these devices from within the in-game menus or device configuration XML’s for hardware manufactures and enthusiasts.

1 In-Game Support

1.1 Input Reporting


The input reporting screen is the first point of call for all users wishing to change input device settings.

This screen is the entry point into the Calibration Wizard, Steering Device selection and Device Management section.


On this screen you can preview any input axis currently pressed alongside the main driving axis. Using this you can test to see if your input device drivers are installed correctly (axis being reported look correct) and if the driving controls are bound.

1.2 Steering Device


By default the game will automatically choose the best steering device based on what is connected to the PC.

Priority is currently determined by the following (lowest to highest):

  1. Keyboard
  2. Gamepad
  3. Wheel

This is setup to give the player the best plug and play experience. Automatic mode can be overridden however by selecting the Steering Device and choosing a device directly from the connected devices.

A common usage example is when a racing rig is setup with a wheel but the player wishes to use a pad. In this case the Xbox 360/One Controller can be selected without having to disconnect the wheel from the PC.

The steering device is seen as the primary controller so the game help text will update to reflect the change in real time. Any buttons not bound to the primary controller will fall back to the next highest priority device (a wheel with no buttons will display keyboard icons if only a keyboard and wheel is plugged in.

1.3 Device Management


Device management allows the user to configure all connected devices giving them the ability to change the device selected in “Configure Device”.

Do not confuse “Configure Device” with the “Steering Device”, you can toggle through these devices to edit settings/bindings and the steering device will remain the same.


The currently selected steering device is denoted by a green tick icon. To change the steering device please reference “Steering Device”.

Once a device is selected you have the following options:

  • Device Type
  • Vibration & Feedback
  • Advanced Input Settings
  • Input Bindings
  • Input Presets


If the device is currently unsupported by the game the driver name is displayed and Device Type is selectable.

The available device types that can be chosen are:

  • Steering Wheel
  • Controller
  • Joystick
  • Keyboard
  • Mouse UI Control
  • Pedals
  • Gear Stick
  • Handbrake
  • Unknown

Choosing a different device type will unlock configuration of advanced features for the selected device type.

1.3.1 Vibration & Feedback

Vibration and force feedback settings change based on what type of device is connected.

Pad

Or Wheel

Each setting is either a toggle or a slider from 0%-120% strength.

  • VIBRATION & FEEDBACK
    Toggle FFB on FFB supported devices (If the drivers do not state FFB is supported is screen will not be accessible. If FFB is supported by the device but the driver says otherwise please reference section “3.1 Adding New Devices” ).

  • SELF-ALIGNING TORQUE
    This scales the torque (moment of force) created by the tyre and suspension geometry.

  • WHEEL FRICTION
    This scales the constant friction/weight of the steering device.

  • TYRE FRICTION
    This scales the dynamic friction of the tyre. This is the resistance of the tyre to turn.

  • SUSPENSION
    This scales an effect that is generated by taking information directly from the vehicle’s suspension. Use this to emphasise the road noise.

  • TYRE SLIP
    This scales an effect that is generated by taking information directly from the tyres. If you are using a controller, it scales the slip of the front and rear tyres, while on the steering wheel it scales the slip from the rear tyres only.

  • ENGINE
    This scales an effect that is generated by taking information directly from the vehicle’s engine. Use this to scale the resonance that comes from your engine as it is revved.

  • COLLISION
    This scales an effect that is generated by taking information directly from an impact. Use this to scale the severity of the collision effect.

  • SOFT LOCK
    This scales the force that informs the player when they exceed the soft lock range of the wheel.

  • STEERING CENTER FORCE
    This scales the return to centre force when the vehicle is reset to the track. This will assist you in straightening the wheels before moving forward.

  • STEERING CENTER FORCE ENABLED
    Toggle steering center force.

1.3.2 Advanced Input Settings

Advance input settings allow you to set advanced wheel specific or pad specific settings.

  • STEERING SENSITIVITY
    High sensitivity will turn your wheels at a faster rate, which increases responsiveness but can reduce stability. Low sensitivity will turn your wheels at a slower rate, which can increase stability but reduce responsiveness.

  • STEERING LINEARITY
    Zero linearity makes steering directly proportional to your input, which can feel more consistent. High linearity can make your steering feel less sensitive for small inputs, but can feel inconsistent. Conversely, negative linearity (wheel input only) can make your steering feel more sensitive for small inputs. All settings give maximum steering angle at full input.

  • STEERING DEADZONE
    Sets a percentage of input that is ignored. A high percentage lowers the amount of usable input for your steering wheel.

  • STEERING SATURATION
    Sets the percentage of input that is required to achieve full input. A low percentage reduces the amount of input to reach 100% lock for your steering wheel.

  • THROTTLE DEADZONE
    Sets the percentage of input that is ignored. A high percentage lowers the amount of usable input for your throttle pedal.

  • THROTTLE SATURATION
    Sets the percentage of input that is required to achieve full input. A low percentage reduces the amount of input to reach 100% throttle.

  • BRAKE DEADZONE
    Sets the percentage of input that is ignored. A high percentage lowers the amount of usable input for your brake pedal.

  • BRAKE SATURATION
    Sets the percentage of input that is required to achieve full input. A low percentage reduces the amount of input to reach 100% brake.

  • CLUTCH DEADZONE
    Sets the percentage of input that is ignored. A high percentage lowers the amount of usable input for your clutch pedal.

  • CLUTCH SATURATION
    Sets the percentage of input that is required to achieve full input. A low percentage reduces the amount of input to reach 100% clutch.

  • SOFT LOCK (STEERING WHEEL)
    Enabling soft lock will match the steering lock of the wheel to the lock of the vehicle. Disabling this will match the steering lock of the wheel to the full steering range. Enabling Soft Lock will override your steering saturation and calibrate the saturation to match that of the vehicle.

    Warning: The wheel must be calibrated before soft lock will work.

1.3.3 Input Bindings


The input bindings screen allows binding of all in game actions to button presses.

However on officially supported devices some of these actions are protected against changes to prevent re-binding to invalid axis. If you need to re-bind these axis it is possible to allow re-binding via edits to the action definitions file however this is not officially supported and should be attempted at the users own risk see “Adding New Devices”.

To bind an action to a button select the action. A 5 second timer will be displayed until a button is pressed or the action is cancelled.

To unbind an action select the action and press Clear.

1.3.4 Input Presets


Some supported devices have multiple face layouts due to wheel rims or share the same Device Produce ID and Vender ID with another device.

Because of this some official devices come bundled with multiple input binding setups for the optimal layout.

Selecting a preset from the list will apply the preset to the selected device only.

1.4 Calibration Wizard

The main input devices can be auto calibrated following the in-game calibration wizard.

First set the device drivers to the max wheel rotation it can handle.

On the first screen rotate the steering wheel to full lock in either direction, hold it in place and press any button.


Next rotate the steering wheel at 90 degrees in either direction, hold it in place and press any button.


Depress all connected pedals as far as possible and press any button.


The device is now configured and can be previewed. The outputs on screen should now match the device inputs.

If this is not the case try to re-calibrate or check the input bindings on any devices connected (a device may be bound to an action when it is not used).

1.5 Save Management


New to DiRT 4 a set number of attached device actionmaps are stored within the save game. As such the game now has the ability to swap between device setups without losing bindings for each device disconnected and reconnected.

If an input binding was incorrectly made for an unofficial device preventing unbinding (let’s say a menu control was bound forcing the menus to infinitely scroll up preventing selection of the binding to unbind) this can be recovered by using Save Management.

  • Disconnect the device miss-bound.
  • Select Reset Input Bindings on the save management screen.

Now when the broken device is re-connected the device will be reset to default bindings.

WARNING: Any devices not currently connected will lose their bindings and be reset to default.

2 Manual Data Entry

Warning: All changes to xml files are saved in the players save game, see “Save Management” or “Input Presets” on how to reset saved input/load changed bindings.

2.1 Adding New Devices

New devices are added to the inputdevicesdevice_defines.xml to allow the game to know additional information not available through the device drivers. Adding a definition also allows the creation of presets allowing plug and play functionality.

To add a new device the first thing needed is the USB Product ID (PID) and Vender ID (VID).
Officially supported devices are listed the following appendix:
Appendix 1: Official Supported Wheels
Appendix 2: Official Supported Add-ons
Appendix 3: Official Supported Gamepads
Appendix 4: Unofficial Support

To get the PID/VID on Windows 10 navigate to Devices and Printers, right click on the device and select properties.

From here select Hardware and Properties.

On the new window select Events.

In the information box there should be some events prefixed “HID” with the PID and VID listed after underscores.

The PID and VID can be combined along with “{PID#VID#-0000-0000-0000-504944564944}” to create a device id.

{00010EB7-0000-0000-0000-504944564944}

With the device id a basic device_defines.xml entry can be created.

<device id=”{00010EB7-0000-0000-0000-504944564944}” name=”ftec_clubsport” version=”2″ priority=”100″ type=”wheel” official=”false” />

Additional parameters for the device definition are described below.

  • Name
    The name of the device matching the name used in the action maps. Must be lower case with no spaces and special characters except underscore.

  • Priority
    The higher the priority the more likely the device is used in automatic selection mode as the steering device over other devices.

    Current priorities include:

    • 0 : reserved for not_supported devices
    • 1-5, 99 : reserved for library defaults
    • 6-98 : pads
    • 100+ : wheels

  • Version (Optional)
    Hardware version of the device, used in conjunction with action map device versioning. The hardware version could be the device revision if the same action map is used to change some axis if required.

  • Type (Optional)
    The type of device, if set to ‘unknown’ the input system will use the device type returned from the driver, otherwise it will overwrite with the selection.

    • wheel
    • pad
    • joystick
    • keyboard
    • mouse
    • pedal
    • shifter
    • handbreak
    • unknown – (Default)
    • not_supported

  • FFB (Optional)
    Force enables or disables support for ffb ignoring if the device driver returns if ffb is supported.

    • default – (Default) – Uses the value returned from the drivers
    • enabled – Force enables the ffb even if the drivers return disabled.
    • disabled – Force disables the ffb even if the drivers return enabled.

  • FFB_Force (Optional)
    • 1.0 – (Default)

  • FFB_Friction (Optional)
    • 1.0 – (Default)

  • FFB_High_Pass (Optional)
    • 0.0 – (Default)

  • Default (Optional)
    Only used by input library defaults, not to be used by externals.

  • Collections_Max (Optional)
    Single-function device with multiple TLC
    [link]

    If a hardware device supports multiple collections a collection limit of 0 or above 1 will allow new devices to be created by the input system with the postfix ‘_col##’ to the hardware id.

    These devices can be used to extend functionality with additional device id’s.
    e.g.

    <device id=”{00050EB7-0000-0000-0000-504944564944}” name=”ftec_csl_p1″ priority=”100″ type=”wheel” collections_max=”2″ />

    Secondary devices can now be setup with a collection id to change the device settings and assign it’s own action map for plug and play functionality.

    <device id=”{00050EB7-0000-0000-0000-504944564944}_col02″ name=”ftec_csl_p1_col02″ priority=”100″ type=”wheel” ffb=”disabled” />

    Collection options:

    • 0 – No collection limit (will create the maximum number of collections the device supports).
    • 1 – (Default)
    • >1

  • Official
    Official devices provided by Codemasters are semi-protected in game and cannot be fully edited.

    WARNING: Custom devices without an action map must disable this option to prevent save game corruption.

    Custom user/manufacture devices external to official Codemasters patch releases MUST set this flag to false.

2.2 Blocking Unsupported Devices

Non supported devices are devices that are detected by the game but are not compatible.

To prevent these devices from interfering with the game a new id can be added to inputdevicesdevice_defines.xml.

<device id=”{C626046D-0000-0000-0000-504944564944}” name=”space_navigator” priority=”0″ type=”not_supported” />

Setting Type to “not_supported” prevents the above device from causing undesired behaviour in game.

2.3 Custom Preset

Custom presets allow devices to auto bind enabling plug and play functionally or add additional presets to be selected from in game.

To add a preset first open inputaction_defines.xml (“Appendix 6: action_defines.xml”).

This file defines the input actions available in the game. These actions need to be added to any new preset (action map).

Only the actions that are needed have to be copied to reduce the file size.

For example creating an action map for a pedal set copy the driving actions, create a new xml file in inputactionmaps with a lower case name (my_pedal_set.xml) with the following:

<?xml version=”1.0″ encoding=”utf-8″?> <action_map name=”my_pedal_set” device_name=”my_device_name” library=”lib_direct_input” version=”1″> </action_map>

Note: All text must be lower case and names must be entered without special characters or spaces.

Replace “my_pedal_set” with the name of the xml (without the file extension) and “my_device_name” with the name of the device (see Adding New Devices for reference).

Library should be replaced with lib_direct_input or lib_xinput depending on the type of device.

Next copy the actions required from action_defines.xml.

<?xml version=”1.0″ encoding=”utf-8″?> <action_map name=”my_pedal_set” device_name=”my_device_name” library=”lib_direct_input” version=”1″> <group name=”driving”> <action name=”accelerate” /> <action name=”brake” /> <action name=”clutch” /> </group> </action_map>

Make sure to delete any “protection” attributes.

Next expand the actions to contain axis.

<?xml version=”1.0″ encoding=”utf-8″?> <action_map name=”my_pedal_set” device_name=”my_device_name” library=”lib_direct_input” version=”1″> <group name=”driving”> <action name=”accelerate”> <axis name=”di_x_axis_rotation” type=”negative” deadzone=”0.0″ saturation=”1.0″ /> </action> <action name=”brake”> <axis name=”di_y_axis_rotation” type=”negative” deadzone=”0.0″ saturation=”1.0″ /> </action> <action name=”clutch”> <axis name=”di_z_axis_rotation” type=”negative” deadzone=”0.2″ saturation=”0.6″ /> </action> </group> </action_map>

Axis contain the following attributes:

  • Name
    The name of the axis associated with the device library, see the following for the axis names:
    Appendix 7: Direct Input Axis
    Appendix 8: X Input Axis

  • Type
    • positive – (Default)
    • negative
    • upper
    • lower
  • Deadzone (Optional)
    • 0.0
  • Saturation (Optional)
    • 1.0
  • Threshold (Optional)
    Point where the action termines that the axis is “pressed/held” and will be “released”.

    • 0.5
  • Device_Version (Optional)
    Used in conjunction with the device definition, if specified the axis will only be available if the device definition version matches.

If any changes are made to the action map, increase the action map version before launching the game.

<action_map name=”my_pedal_set” device_name=”my_device_name” library=”lib_direct_input” version=”1″>
<action_map name=”my_pedal_set” device_name=”my_device_name” library=”lib_direct_input” version=”2″>

Troubleshooting

How do I remap any locked action or the pause action, the line is greyed out?

On officially supported devices certain actions have been locked in order to prevent user error breaking the user’s experience. There is a workaround available for experienced users so any action can be unlocked for re-binding.

Open “inputaction_defines.xml” and remove

protection=”protected”

from the action to allow re-binding.

To be able to re-bind Pause “cancel_keybinding” must be removed on the actionmap for the device being re-bound.

Open the action map for the device being used in “inputactionmaps” and delete the following three lines:

<action name=”cancel_keybinding”> <axis name=”*” /> </action>

This binding is used to cancel the current binding in the bindings screen (for instance hitting escape if accidently selecting bind on an action that should not be changed). Without this being removed the original pause button cannot be re-assigned to another action.

Appendix 1: Official Supported Wheels

Appendix 2: Official Supported Add-ons

Appendix 3: Official Supported Gamepads

Appendix 4: Unofficial Support

Appendix 5: device_defines.xml

<device_list> <!– Multi ID –> <!– ======= Clubsport ======= –> <!– Default bases with Unknown Rim PC –> <device id=”{038E0EB7-0000-0000-0000-504944564944}” name=”ftec_clubsport” version=”1″ priority=”100″ type=”wheel” /> <device id=”{00010EB7-0000-0000-0000-504944564944}” name=”ftec_clubsport” version=”2″ priority=”100″ type=”wheel” /> <device id=”{00040EB7-0000-0000-0000-504944564944}” name=”ftec_clubsport” version=”3″ priority=”100″ type=”wheel” /> <device id=”{00050EB7-0000-0000-0000-504944564944}” name=”ftec_csl_pc” version=”1″ priority=”100″ type=”wheel” /> <!– CSL –> <device id=”{0E030EB7-0000-0000-0000-504944564944}” name=”ftec_csl_p1″ version=”1″ priority=”100″ type=”wheel” /> <device id=”{62040EB7-0000-0000-0000-504944564944}” name=”ftec_csl_pedals” version=”1″ priority=”100″ type=”pedal” /> <!– ======= End Clubsport ======= –> <!– ======= Thrustmaster ======= –> <device id=”{B65A044F-0000-0000-0000-504944564944}” name=”tm_f430″ priority=”100″ type=”wheel” /> <device id=”{B65E044F-0000-0000-0000-504944564944}” name=”tm_t500_rs” priority=”100″ type=”wheel” ffb_friction=”0.6″ ffb_force=”0.9″/> <device id=”{B677044F-0000-0000-0000-504944564944}” name=”tm_t150″ priority=”100″ type=”wheel” /> <device id=”{B66E044F-0000-0000-0000-504944564944}” name=”tm_t300_rs” priority=”100″ type=”wheel” ffb_friction=”1.5″ ffb_force=”0.9″/> <device id=”{B689044F-0000-0000-0000-504944564944}” name=”tm_ts_pc” priority=”100″ type=”wheel” /> <device id=”{B667044F-0000-0000-0000-504944564944}” name=”tm_t80″ priority=”100″ type=”wheel” /> <device id=”{B67F044F-0000-0000-0000-504944564944}” name=”tm_tmx” priority=”100″ type=”wheel” /> <device id=”{B67E044F-0000-0000-0000-504944564944}” name=”tm_tmx” priority=”100″ type=”wheel” /> <device id=”{B662044F-0000-0000-0000-504944564944}” name=”tm_t500_rs_f1″ priority=”100″ type=”wheel” ffb_friction=”0.6″ ffb_force=”0.9″/> <device id=”{B660044F-0000-0000-0000-504944564944}” name=”tm_shifter” priority=”100″ type=”shifter” /> <!– ======= End Thrustmaster ======= –> <!– ======= Logitech ======= –> <device id=”{C262046D-0000-0000-0000-504944564944}” name=”lg_g920″ priority=”100″ type=”wheel” /> <device id=”{C24F046D-0000-0000-0000-504944564944}” name=”lg_g29″ priority=”100″ type=”wheel” /> <!– ======= End Logitech ======= –> <device id=”{10201DD2-0000-0000-0000-504944564944}” name=”sim_steering” version=”1″ priority=”100″ type=”wheel” ffb_force=”0.5″ official=”false” /> <device id=”{22301DD2-0000-0000-0000-504944564944}” name=”sim_steering” version=”2″ priority=”100″ type=”wheel” ffb_force=”0.5″ official=”false” /> <device id=”{22331DD2-0000-0000-0000-504944564944}” name=”sim_steering” version=”3″ priority=”100″ type=”wheel” ffb_force=”0.5″ official=”false” /> <!– Single ID –> <device id=”{804C1FC9-0000-0000-0000-504944564944}” name=”simxperience_accuforce_pro” priority=”100″ type=”wheel” /> <device id=”{00110EB7-0000-0000-0000-504944564944}” name=”ftec_csr_elite” priority=”100″ type=”wheel” /> <device id=”{01970EB7-0000-0000-0000-504944564944}” name=”ftec_porsche_wheel” priority=”100″ type=”wheel” /> <device id=”{C294046D-0000-0000-0000-504944564944}” name=”lg_driving_force_ex” priority=”97″ type=”wheel” /> <device id=”{C29A046D-0000-0000-0000-504944564944}” name=”lg_driving_force_gt” priority=”96″ type=”wheel” /> <device id=”{C298046D-0000-0000-0000-504944564944}” name=”lg_driving_force_pro” priority=”98″ type=”wheel” ffb_friction=”0.15″ /> <device id=”{C216046D-0000-0000-0000-504944564944}” name=”lg_dual_action” priority=”94″ type=”pad” /> <device id=”{C218046D-0000-0000-0000-504944564944}” name=”lg_f510″ priority=”94″ type=”pad” /> <device id=”{C219046D-0000-0000-0000-504944564944}” name=”lg_f710_and_cordless_rumblepad_2″ priority=”94″ type=”pad” /> <device id=”{C299046D-0000-0000-0000-504944564944}” name=”lg_g25″ priority=”100″ type=”wheel” /> <device id=”{C29B046D-0000-0000-0000-504944564944}” name=”lg_g27″ priority=”100″ type=”wheel” /> <device id=”{CA03046D-0000-0000-0000-504944564944}” name=”lg_momo_racing” priority=”100″ type=”wheel” ffb_friction=”0.15″ /> <device id=”{0034045E-0000-0000-0000-504944564944}” name=”ms_sidewinder_ffb” priority=”100″ type=”wheel” ffb=”enabled” /> <device id=”{00030E8F-0000-0000-0000-504944564944}” name=”sl_strikefx” priority=”94″ type=”pad” /> <device id=”{910511C0-0000-0000-0000-504944564944}” name=”sl_torid” priority=”94″ type=”pad” /> <device id=”{B655044F-0000-0000-0000-504944564944}” name=”tm_fgt_3_in_1″ priority=”100″ type=”wheel” /> <device id=”{B653044F-0000-0000-0000-504944564944}” name=”tm_rgt_ffb_pro” priority=”100″ type=”wheel” /> <device id=”{B669044F-0000-0000-0000-504944564944}” name=”tm_tx” priority=”100″ type=”wheel” /> <device id=”{00080E8F-0000-0000-0000-504944564944}” name=”grid2_pad” priority=”100″ type=”wheel” official=”false” /> <!– rename Grid2 Pad/Wheel combi device from Race Star–> <device id=”{05C4054C-0000-0000-0000-504944564944}” name=”ps4_pad” priority=”100″ type=”pad” ffb_high_pass=”150.0″ official=”false” /> <device id=”{0BA0054C-0000-0000-0000-504944564944}” name=”ps4_pad” priority=”100″ type=”pad” ffb_high_pass=”150.0″ official=”false” /> <!– Wireless dongle –> <device id=”{B678044F-0000-0000-0000-504944564944}” name=”tm_usb_adapter” priority=”100″ type=”pedal” /> <!– USB dongle –> <!– Library Hard Coded –> <device id=”keyboard” name=”keyboard” priority=”2″ type=”keyboard” default=”true” /> <device id=”mouse” name=”mouse” priority=”1″ type=”mouse” default=”true” /> <device id=”xinput_pad” name=”xinput_pad” priority=”5″ type=”pad” default=”true” /> <device id=”xinput_wheel” name=”xinput_wheel” priority=”99″ type=”wheel” default=”true” ffb_force=”10.0″ /> <device id=”pad_virtual” name=”pad_virtual” priority=”0″ type=”pad” default=”true” /> <!– Library Default (fallbacks) –> <device id=”lib_direct_input” name=”lib_direct_input” priority=”5″ type=”unknown” default=”true” /> <device id=”lib_direct_input_pad” name=”lib_direct_input_pad” priority=”5″ type=”pad” default=”true” /> <device id=”lib_direct_input_wheel” name=”lib_direct_input_wheel” priority=”99″ type=”wheel” default=”true” /> <!– Not Supported –> <!– Devices here are defined to invalid action maps so no action map is assigned by default. –> <device id=”{C626046D-0000-0000-0000-504944564944}” name=”space_navigator” priority=”0″ type=”not_supported” /> <device id=”{046DBEEF-0000-0000-0000-504944564944}” name=”space_navigator_driver” priority=”0″ type=”not_supported” /> </device_list>

Appendix 6: action_defines.xml

<action_defines> <group name=”driving”> <action name=”accelerate” /> <action name=”brake” /> <action name=”change_view” /> <action name=”clutch” /> <group name=”gear”> <group name=”h_pattern”> <action name=”1″ /> <action name=”2″ /> <action name=”3″ /> <action name=”4″ /> <action name=”5″ /> <action name=”6″ /> <action name=”7″ /> <action name=”reverse” /> </group> <group name=”sequential”> <action name=”up” /> <action name=”down” /> </group> </group> <action name=”handbrake” /> <action name=”headlights” /> <action name=”horn” protection=”hidden” /> <group name=”look”> <action name=”back” /> <action name=”down” /> <action name=”left” /> <action name=”right” /> <action name=”up” /> </group> <action name=”pause” protection=”protected” /> <action name=”reset_vehicle” /> <action name=”roadside_repair” /> <group name=”seat”> <group name=”move”> <action name=”forward” /> <action name=”backward” /> <action name=”up” /> <action name=”down” /> </group> <group name=”tilt”> <action name=”up” /> <action name=”down” /> </group> <action name=”reset” /> </group> <group name=”steer”> <action name=”left” /> <action name=”right” /> </group> <action name=”wipers” /> </group> <group name=”school”> <action name=”instructor_recap” /> </group> <group name=”network”> <action name=”push_to_speak” /> <group name=”toggle”> <action name=”voice” /> </group> </group> <group name=”menu” protection=”protected” > <group name=”button”> <action name=”3″ /> <action name=”4″ /> <action name=”start” /> <action name=”select” /> <group name=”shoulder”> <action name=”left” /> <action name=”right” /> </group> <group name=”trigger”> <action name=”left” /> <action name=”right” /> </group> </group> <group name=”navigate”> <action name=”back” jpn_alt=”select” /> <action name=”down” /> <action name=”left” /> <action name=”right” /> <action name=”select” jpn_alt=”back” /> <action name=”up” /> <group name=”scroll”> <action name=”down” /> <action name=”up” /> </group> <action name=”cancel_keybinding” protection=”hidden” /> </group> <group name=”view”> <action name=”down” /> <action name=”in” /> <action name=”left” /> <action name=”out” /> <action name=”right” /> <action name=”up” /> </group> <group name=”cursor” protection=”hidden” > <group name=”button”> <action name=”left” /> <action name=”right” /> <action name=”middle” /> <action name=”4″ /> <action name=”5″ /> </group> <group name=”wheel”> <action name=”up” /> <action name=”down” /> </group> </group> </group> <group name=”replay” protection=”protected” > <action name=”exit” jpn_alt=”pause” /> <action name=”forward” /> <action name=”rewind” /> <action name=”playback_step_up” /> <action name=”playback_step_down” /> <action name=”pause” jpn_alt=”exit” /> <group name=”toggle”> <action name=”music” /> <action name=”ui” /> </group> <group name=”camera”> <action name=”previous” /> <action name=”next” /> </group> </group> <group name=”spectator” protection=”protected” > <action name=”replay” /> <!– not in code –> <group name=”toggle”> <action name=”list” /> <action name=”ui” /> </group> <group name=”camera”> <action name=”previous” /> <action name=”next” /> </group> </group> </action_defines>

Appendix 7: Direct Input Axis

di_x_axis
di_y_axis
di_z_axis
di_x_axis_rotation
di_y_axis_rotation
di_z_axis_rotation
di_slider_0
di_slider_1
di_pov_0
di_pov_1
di_pov_2
di_pov_3
di_dpad_0_up
di_dpad_0_down
di_dpad_0_left
di_dpad_0_right
di_dpad_1_up
di_dpad_1_down
di_dpad_1_left
di_dpad_1_right
di_dpad_2_up
di_dpad_2_down
di_dpad_2_left
di_dpad_2_right
di_dpad_3_up
di_dpad_3_down
di_dpad_3_left
di_dpad_3_right
di_button_0
di_button_1
di_button_2
di_button_3
di_button_4
di_button_5
di_button_6
di_button_7
di_button_8
di_button_9
di_button_10
di_button_11
di_button_12
di_button_13
di_button_14
di_button_15
di_button_16
di_button_17
di_button_18
di_button_19
di_button_20
di_button_21
di_button_22
di_button_23
di_button_24
di_button_25
di_button_26
di_button_27
di_button_28
di_button_29
di_button_30
di_button_31
di_button_32
di_button_33
di_button_34
di_button_35
di_button_36
di_button_37
di_button_38
di_button_39
di_button_40
di_button_41
di_button_42
di_button_43
di_button_44
di_button_45
di_button_46
di_button_47
di_button_48
di_button_49
di_button_50
di_button_51
di_button_52
di_button_53
di_button_54
di_button_55
di_button_56
di_button_57
di_button_58
di_button_59
di_button_60
di_button_61
di_button_62
di_button_63
di_button_64
di_button_65
di_button_66
di_button_67
di_button_68
di_button_69
di_button_70
di_button_71
di_button_72
di_button_73
di_button_74
di_button_75
di_button_76
di_button_77
di_button_78
di_button_79
di_button_80
di_button_81
di_button_82
di_button_83
di_button_84
di_button_85
di_button_86
di_button_87
di_button_88
di_button_89
di_button_90
di_button_91
di_button_92
di_button_93
di_button_94
di_button_95
di_button_96
di_button_97
di_button_98
di_button_99
di_button_100
di_button_101
di_button_102
di_button_103
di_button_104
di_button_105
di_button_106
di_button_107
di_button_108
di_button_109
di_button_110
di_button_111
di_button_112
di_button_113
di_button_114
di_button_115
di_button_116
di_button_117
di_button_118
di_button_119
di_button_120
di_button_121
di_button_122
di_button_123
di_button_124
di_button_125
di_button_126
di_button_127
di_x_axis_vel
di_y_axis_vel
di_z_axis_vel
di_x_axis_ang_vel
di_y_axis_ang_vel
di_z_axis_ang_vel
di_slider_0_vel
di_slider_1_vel
di_x_axis_acc
di_y_axis_acc
di_z_axis_acc
di_x_axis_ang_acc
di_y_axis_ang_acc
di_z_axis_ang_acc
di_slider_0_acc
di_slider_1_acc
di_x_axis_force
di_y_axis_force
di_z_axis_force
di_x_axis_torque
di_y_axis_torque
di_z_axis_torque
di_slider_0_force
di_slider_1_force

Appendix 8: X Input Axis

xinput_dpad_up
xinput_dpad_down
xinput_dpad_left
xinput_dpad_right
xinput_button_start
xinput_button_back
xinput_button_left_stick
xinput_button_right_stick
xinput_button_left_shoulder
xinput_button_right_shoulder
xinput_button_a
xinput_button_b
xinput_button_x
xinput_button_y
xinput_left_trigger
xinput_right_trigger
xinput_left_stick_x
xinput_left_stick_y
xinput_right_stick_x
xinput_right_stick_y

SteamSolo.com