---------------------------------------------------------------------------------------------------- INPUT MAPPING HELP TEXT ---------------------------------------------------------------------------------------------------- The purpose of this document is explain how to use StarSiege's input mapping utility. It will allow complete control over how you control your HERC. SECTIONS: 1. CHANGES 2. CREATING A CUSTOM KEYMAPPING 3. USING MAKES AND BREAKS 4. USING PARAMETERS 5. LOADING A CUSTOM KEYMAPPING 6. INPUT 7. ACTION DEFINITIONS 8. EXAMPLES 1. CHANGES --------------------------------------------------------------------------------------- Since the first ATR, there have been several changes with keymapping. The syntax has been changed slightly to look more like a C function call. For example, the statement "bindAction keyboard make p TO ACTION_FIRE 1.0" now would look like: bindAction( keyboard, make, p, TO, IDACTION_FIRE, 1.0); Note that after each bindAction call, you must include a ";". This is true in for all *.cs files. Additionally, almost all previous action tags (e.g.,ACTION_FIRE), have been preserved, except now all action tags start with "ID". Another change is the firing system. The current system is based around weapon groups and firing chains. There are 3 weapon groups to which a weapon can belong ( a weapon can belong to multiple groups). When you fire, the currently selected weapon group executes in 1 of 2 modes, either Series, or All. The Series mode will fire all weapons in the group sequentially, while the All mode fires all weapons in unison. Additionally you can fire only one particular weapon by using IDACTION_WEAPON_SELECT. When this tag is used, you will continue to fire that weapon until you select a group. Weapon Linking and the Alpha Strike feature (bug) have both been removed, as the new weapon system makes them obsolete. IDACTION_WEAPON_SELECT Selects weapon, number selects weapon IDACTION_WEAPON_GROUP_SELECT Selects weapon group, numbers range from 0.0 to 2.0 IDACTION_WEAPON_ADJ Cycles through all weapons, number is added to current weapon selection IDACTION_WEAPON_GROUP_ADJ Cycles through weapon groups, number is added to current group selection IDACTION_WEAPON_MODE_SELECT Toggles mode of fire, 0.0 = fire series, 1.0 = fire all IDACTION_WEAPON_GROUP_TOGGLE Toggles weapon in/out of selected weapon group, number indicates weapon The way Starsiege handles joystick hat input has changed also. The original x, y axes can still be used, but the hat can also be treated like a set of 4 buttons labeled (upov,dpov,rpov,lpov). The hat isn't automatically centered. This means that if you were using the hat to zoom in/out, or some other action that requires a postive and negative value, include center in the bindAction call. 2. CREATING A CUSTOM KEYMAPPING ------------------------------------------------------------------------------------------------------ The easiest way to get started is to open one of the included keymaps in ..\es3Alpha\keymaps directory, and use that keymap file as reference. Once you've modified the file to your liking, save the *.cs file in ..\es3Alpha\keymaps directory. The Keymapping files can be nested, or "included" within each other. In the Joystick.cs file, the following lines indicate other keymap files that are combined with the joystick.cs file to create a complete keymap for multiple input devices and functions: #------------------------------------------------------------------------------ # include generic camera controls exec _defCamera.cs #------------------------------------------------------------------------------ # include generic keyboard controls exec _defKeyboard.cs This is done mainly for convenience. If you wish to create a single file that contains "everything" you can do so. 3. USING MAKES AND BREAKS ------------------------------- It is crucial to use the "make" and "break" keywords correctly. When binding input to actions such as firing, moving, or looking ( actions that should generally occur only when holding down a key or button ), use the "make" to initiate the action, and "break" to turn it off. Example: "bindAction( keyboard, make, space, TO, IDACTION_FIRE, 1.0);" "bindAction( keyboard, break, space, TO, IDACTION_FIRE 0.0);" The value at the end represents a toggle, where 1.0 is on and 0.0 is off. 4. USING PARAMETERS -------------------------------- Most actions require a value at the end of a binding statement ( see ACTION DEFINITIONS below for more info ). There are five additional parameters that you have the option of using. They are: flip: Reverses the coordinate system for the chosen action (ACTION_YAW -1.0 would turn left instead of right) Example : "bindAction( joystick, yaxis, TO, IDACTION_LOOK_Y, flip);" deadzone: Kills all input that lies within the specified range. (e.g.,If you enter 'deadzone 0.1', the deadzone will be 10% of your total axis ). Example: "bindAction( joystick, xaxis, TO, IDACTION_YAW, deadzone, 0.1);" center: Centers your the coordinate system of your control device from (0.0, 1.0) to (-1.0,1.0) Example: "bindAction( joystick, yaxis, TO, IDACTION_SPEED, center);" square: Changes the growth rate of constant input (e.g., pulling down on a joystick)from linear to parabolic. Example: "bindAction( joystick, yaxis, TO, IDACTION_SPEED, square);" scale: Scales the sensitivity of an input signal, based on the value you give it. Example:"bindAction( joystick, zaxis, TO, IDACTION_SPEED, scale, 0.2);" Note that it is possible to string five of these parameters onto the end of one action. For example, you could enter a line that looked like this: "bindAction( joystick, yaxis, TO, IDACTION_SPEED, deadzone, 0.2, center, square, scale, 0.1);". This would have the effect of giving a deadzone of 20% in the center the yaxis of your joystick, while scaling the input signal by a factor of 0.1. Pushing forward would increase your HERC's forward throttle at a parabolic rate, and pulling back would do the same thing, in reverse. 5. LOADING A CUSTOM KEYMAP FILE -------------------------------- In order to load a custom keymap file, it needs to be located in the ..\es3Alpha\keymaps directory. At the Player Setup Menu, click on the Input Configuration field. This will call up a list of the available KeyMap files. Highlight the one you want to load. 6. INPUT -------------------------------------------------------------------------------------------- JOYSTICK INPUT( keyword is "joystick" ): "zaxis" Throttle control "yaxis" Up/down "xaxis" Left/right "rzaxis" Twist left right (e.g., sidewinder joysticks) "rxaxis" extra input "ryaxis" extra input "slider0" extra input "slider1" extra input "xpov" left/right on joystick hat "ypov" up/down on hat "upov" up direction on hat "dpov" down direction on hat "rpov" right direction on hat "lpov" left direction on hat "button0" varies per joystick "button1" "button2" "button3" "button4" "button5" "button6" "button7" "button8" "button9" "button10" "button11" "button12" MOUSE INPUT( keyword is "mouse" ): "xaxis" "yaxis" "zaxis" "button0" "button1" "button2" "button3" KEYBOARD INPUT( keyword is "keyboard" ): Note that key modifiers( alt, shift, control) are supported, but the modifier must come before the key (e.g., "shift s"). Any key not listed below is represented by it's direct keyboard character. "escape" Esc "backspace" BackSpace "tab" Tab "enter" Enter "control" Control "shift" Shift "alt" Alt "capslock" Caps Lock "numlock" Num Lock "numpad1" Numpad1 "numpad2" Numpad2 "numpad3" Numpad3 "numpad4" Numpad4 "numpad5" Numpad5 "numpad6" Numpad6 "numpad7" Numpad7 "numpad8" Numpad8 "numpad9" Numpad9 "numpad0" Numpad0 "numpad+" Numpad plus "numpad-" Numpad minus "numpad/" Numpad slash "numpad*" Numpad star "scroll" Scroll Lock "numpadequals" Numpad Equals "stop" Stop "numpadenter" Numpad Enter "numpadcomma" Numpad Comma "sysreq" Print Screen/ Sys Req "home" Home "up" Up Arrow "down" Down Arrow "left" Left Arrow "right" Right Arrow "end" End "next" Next "insert" Insert "delete" Delete "win" Windows "app" Apps 7. ACTION DEFINITIONS ------------------------------------------------------------------------------ ACTIONS PARAMETER DEFINITIONS IDACTION_FIRE Fires weapon, 1.0 = true, 0.0 = false IDACTION_WEAPON_SELECT Selects weapon, number selects weapon IDACTION_WEAPON_GROUP_SELECT Selects weapon group, numbers range from 0.0 to 2.0 IDACTION_WEAPON_ADJ Cycles through all weapons, number is added to current weapon selection IDACTION_WEAPON_GROUP_ADJ Cycles through weapon groups, number is added to current group selection IDACTION_WEAPON_MODE_SELECT Toggles mode of fire, 0.0 = fire series, 1.0 = fire all IDACTION_WEAPON_GROUP_TOGGLE Toggles weapon in/out of selected weapon group, number indicates weapon IDACTION_REACTOR Toggles reactor, no number required IDACTION_LOOK_X Looks left/right, -1.0 = left, 1.0 = right IDACTION_LOOK_Y Looks up/down, -1.0 = down, 1.0 = up IDACTION_LOOK_CENTER Look center, No number required IDACTION_MOVE_X Move left/right, -1.0 = left, 1.0 = right IDACTION_MOVE_Y Move forward/backward, 1.0 = forward, 1.0 = back IDACTION_MOVE_Z Move up/down, -1.0 = down, 1.0 = up IDACTION_PITCH Pitch rotation IDACTION_YAW Yaw rotation IDACTION_ROLL Roll rotation IDACTION_STOP Stops HERC, no Number needed IDACTION_SPEED Speed, 1.0 = positive acceleration, -1.0 = negative acceleration IDACTION_TURBO Toggles turbo mode IDACTION_CROUCH Toggle Crouch, no number needed IDACTION_CAMOUFLAGE Toggle Camouflage, no number needed IDACTION_TARGET_ADJ_ENEMY next/prev enemy target, -1.0 = cycle back, 1.0 = cycle forward IDACTION_TARGET_ADJ_FRIENDLY next/prev friendly, -1.0 = cycles back, 1.0 = cycles forward IDACTION_TARGET_CLOSEST_ENEMY targets closest enemy, no number needed IDACTION_TARGET_CLOSEST_FRIENDLY targets closest friendly, no number needed IDACTION_TARGET_SELECTED targets object currently under aiming reticle, no number needed IDACTION_USE_PROJECTILE_CAM Sets projectile cam for next shot IDACTION_SENSOR_MODE_TOGGLE Toggles between active and passive radar, no number needed IDACTION_SENSOR_RANGE_TOGGLE Cycles through ranges, no number needed IDACTION_SENSOR_RANGE_SET Sets range, number indicates something IDACTION_SHIELD Toggles Shield on/off, no number needed IDACTION_SHIELD_TRACK Shield tracking on/off, no number needed IDACTION_SHIELD_FOCUS_ADJ Adjusts shield balance, number is added to current shield focus IDACTION_SHIELD_FOCUS_SET Set shield balance, number sets shield focus IDACTION_SHIELD_ROTATION_ADJ Adjusts shield rotation, number is added to current shield rotation IDACTION_SHIELD_ROTATION_SET Set shield rotation, number sets shield rotation IDACTION_NAVPOINT_NEXT Selects next navpoint, no number needed IDACTION_NAVPOINT_PREV Selects previous navpoint, no number needed IDACTION_NAVPOINT_SET Selects navpoint, number indicates which navpoint is selected IDACTION_DAMAGE_ROTATE Toggles HUD damage indicator rotation IDACTION_DAMAGE_ANIMATE Toggles HUD damaga indicator animation IDACTION_NEXT Selects next HERC while in OrbitCam IDACTION_PREV Selects previous HERC while in OrbitCam IDACTION_REVERSE_THROTTLE Toggle forward/reverse throttle IDACTION_ZOOM_SET Set zoom factor, number indicates zoom factor IDACTION_ZOOM_ADJ Adjust zoom factor, number is added to current zoom factor IDACTION_CENTER_TURRET Centers Turret IDACTION_CENTER_BODY Centers Body IDACTION_AUTOTARGET Autotargets enemy, no number needed 8. EXAMPLES ----------------------------------------------------------------------------------- These examples are some of the more commonly asked questions about creating a custom keymapping: Q: How do I use my joystick axis to look? A: bindAction( joystick, xaxis, TO, IDACTION_LOOK_X, deadzone, 0.1, center, square); bindAction( joystick, yaxis, TO, IDACTION_LOOK_Y, deadzone, 0.1, center, square); Q: How do I use the joystick hat to look? A: bindAction( joystick, xpov, TO, IDACTION_LOOK_X, center, flip); bindAction( joystick, ypov, TO, IDACTION_LOOK_Y, center); Q: How do I reconfigure the throttle ? A: It depends on which device you want to use as input. For keyboard, you might want something like this: bindAction( keyboard, make, up, TO, IDACTION_SPEED, +1.0); bindAction( keyboard, break, up, TO, IDACTION_SPEED, 0.0); For joystick zaxis ( throttle ): bindAction (joystick, zaxis, TO, IDACTION_SPEED, deadzone, 0.1, center, square); Q: When I look with my mouse/ joystick/ keyboard, the HERC response seems backwards. How do I fix this ? A: Simply add the flip parameter at the end of the appropriate action in your custom keymap file. If flip is already there, remove it. This will flip the response of your HERC. Q: I added a keyboard command, but it dosn't seem to work. What's the deal? A: Make sure you typed 'make' or 'break' before the specific key you wanted to bind. Otherwise nothing will happen. Also, key combinations involving more than two keys will not work. Q: Whenever I try to use the joystick hat, my HERC fires or does some other incorrect action. A: Most likely you need to recalibrate your joystick. To do this, select Start menu/settings/control panel/Game Controllers. and calibrate.