Jump to content

~KSP a'la DS4~


HouseFox

Recommended Posts

Hello KSP forums!

Today I bring you about 6 hours of work- that is- the configuration files for a nearly-seamless Kerbal Space Program using a Dualshock 4 (PS4) Controller! YAY!

v1.0 I guess..

(please read the whole thing BEFORE doing anything)

~~Introduction~~

Configuring a Dualshock 4 for use in a PC game that only just barely supports controllers is a real pain, so I've taken the liberty of carefully crafting the InputMapper profile (KSP.xml) as well as the KSP settings (settings.cfg) to take away the guesswork on establishing a baseline setup for using the DS4 in KSP with the InputMapper program. The benefits of using a DS4 for KSP should be clear- using the trackpad as a mouse and the control sticks for more precise control of your craft is just great! Please feel absolutly free to post your modifications to either file, I'm posting this code under creative commons open-source style- hack away! :P

~~Installation~~

[mind the directions above the sections of code to get the required files]

1. Buy, install, and run Kerbal Space Program (32-bit version) at least once.

2. Acquire a Dualshock 4 controller along with the appropriate USB cable to allow PC connection.

3. Download, install, and run InputMapper (link below) at least once.

4. Make sure your DS4 works on your setup.

5. Navigate to C:\Users\~yourprofile~\AppData\Roaming\InputMapper\Profiles ("~yourprofile~" will be your windows profile name).

6. Drag and drop KSP.xml from the InputMapper Profile folder into the aforementioned Profiles folder of your InputMapper directory.

7. Navigate to your KSP install root directory.

8. Replace the stock settings.cfg file in your KSP directory with the settings.cfg file in the KSP Controls folder.

9. Plug in your DS4.

10. Run InputMapper and switch the profile to KSP. (easy enough to set InputMapper to switch to the KSP profile when it's launched)

11. Run KSP. (I have the graphical settings maxed @ 1920x1080 so before doing so you may need to run Launcher.exe from the KSP install folder and tweak the graphical settings)

12. Check if everything works fine, then-

13. Go directly to space! (or stay in the atmosphere, both are fine)

~~Notes On The Controls~~

- I edited a hidden control that allows you to switch the UI Mode between Docking and Staging using the left and right analog stick buttons.

- Messing with the axis controls in the settings menu of KSP is not recommended aside from sensitivity changes (IE DON'T CHANGE THE BINDINGS FROM THE MENU IN GAME), messing with the sensitivity is fine though.

- If you MUST change the axis bindings, edit the settings.cfg file in notepad to make sure the modeMask lines don't change, as that provides isolation between your Docking and Staging control modes.

- Feel free to change any of the primary button controls, as I only used the secondary bindings for the controller, the primaries are the default KSP settings with one tweak so that me the camera controls don't also control your camera.

- Editing the InputMapper profile is perfectly fine if you don't touch the bindings on the first tab.

- I would recommend backing up these files first if you are going to make any changes.

- Although this is a very comprehensive configuration, I would still recommend that you use a mouse+keyboard for menus and ship assembly, and you'll have to use at least a mouse for camera controls.

~~Summary of Controls~~

Left Trigger - Toggle RCS

Right Trigger - Toggle SAS

Left Shoulder Button - Hold SAS

Right Shoulder Button - Stage

D-pad Up - Linear Throttle Increase

D-pad Down - Linear Throttle Decrease and apple Brakes

D-pad Left - Throttle Full Cut

D-pad Right - Throttle Maximum

Share Button - IVA Switch

Trackpad Movement - Curcor Movement

Trackpad Tap - Left Mouse Button

Trackpad Scroll - Scroll Wheel

(Swipe up or down with 2 fingers)

Trackpad Button - Orbital View Switch

Options Button - Menu

Triangle Button - Time Warp Faster

Circle Button - Landing Gear

X Button - Camera Mode Switch

Square Button - Time Warp Slower

Right Analog Up - [staging Mode]- Pitch Down

[Docking Mode]- Translate Down

Right Analog Down - [staging Mode]- Pitch Up

[Docking Mode]- Translate Up

Right Analog Left - [staging Mode]- Yaw Left

[Docking Mode]- Translate Left

Right Analog Right - [staging Mode]- Yaw Right

[Docking Mode]- Trandlate Right

Right Analog Button - Switch To Staging Mode

Playstation Button - Toggle Lights

Left Analog Up - [Docking Mode]- Translate Forward

Left Analog Down - [Docking Mode]- Translate Backward

Left Analog Left - [staging Mode]- Roll Left

Left Analog Right - [staging Mode]- Roll Right

Left Analog Button - Switch to Docking Mode

I don't even remember the specific controls for kerbals, but the D-pad moves them and I loosely used modified translation controls for the EVA pack among some other miscellaneous controls.

On that note, be careful EVA-ing Kerbals because I know the board/ let go controls overlap the time warp controls, but it's survivable.

~~Important Links~~

- InputMapper - https://inputmapper.com/

- Kerbal Space Program - https://kerbalspaceprogram.com/en/

- Xbox 360 driver for w8.1 - http://support.xbox.com/en-US/xbox-360/accessories/connect-wired-controller-computer

(needed for InputMapper to correctly emulate the Xbox 360 controller in windows)

settings.cfg in plaintext (just copy+paste into a notepad document, and then rename it "settings.cfg")

// KSP Game Settings

SETTINGS_FILE_VERSION = 1.0.0
TUTORIALS_EDITOR_ENABLE = False
TUTORIALS_FLIGHT_ENABLE = False
VAB_USE_CLICK_PLACE = True
VAB_USE_ANGLE_SNAP = False
VAB_ANGLE_SNAP_INCLUDE_VERTICAL = False
VAB_CAMERA_ORBIT_SENS = 0.04
VAB_CAMERA_ZOOM_SENS = 0.1
FLT_CAMERA_ORBIT_SENS = 0.04
FLT_CAMERA_ZOOM_SENS = 0.5
FLT_CAMERA_WOBBLE = 0.1
FLT_CAMERA_CHASE_SHARPNESS = 1.5
FLT_CAMERA_CHASE_USEVELOCITYVECTOR = True
FLT_VESSEL_LABELS = True
SPACENAV_CAMERA_SENS_ROT = 30
SPACENAV_CAMERA_SENS_LIN = 20
SPACENAV_CAMERA_SHARPNESS_LIN = 8
SPACENAV_CAMERA_SHARPNESS_ROT = 10
CAMERA_FX_EXTERNAL = 0.8137396
CAMERA_FX_INTERNAL = 1
SIMULATE_IN_BACKGROUND = True
PHYSICS_FRAME_DT_LIMIT = 0.04
MAX_VESSELS_BUDGET = -1
CONIC_PATCH_DRAW_MODE = 3
CONIC_PATCH_LIMIT = 3
SHOW_PWARP_WARNING = False
EVA_ROTATE_ON_MOVE = True
SPACENAV_FLIGHT_SENS_ROT = 5
SPACENAV_FLIGHT_SENS_LIN = 1
KERBIN_TIME = True
CALL_HOME = False
DONT_SEND_IP = False
SEND_PROGRESS_DATA = True
CHECK_FOR_UPDATES = True
VERBOSE_DEBUG_LOG = False
SHOW_CONSOLE_ON_ERROR = False
AUTOSAVE_INTERVAL = 300
AUTOSAVE_SHORT_INTERVAL = 30
SHOW_SPACE_CENTER_CREW = True
UI_SIZE = 768
UI_OPACITY = 1
SHIP_VOLUME = 0.5
AMBIENCE_VOLUME = 0.3768498
MUSIC_VOLUME = 0
UI_VOLUME = 0.5
VOICE_VOLUME = 0.5
SOUND_NORMALIZER_ENABLED = True
SOUND_NORMALIZER_THRESHOLD = 1
SOUND_NORMALIZER_RESPONSIVENESS = 16
SOUND_NORMALIZER_SKIPSAMPLES = 0
SCREEN_RESOLUTION_WIDTH = 1920
SCREEN_RESOLUTION_HEIGHT = 1080
FULLSCREEN = True
QUALITY_PRESET = 5
ANTI_ALIASING = 8
TEXTURE_QUALITY = 0
SYNC_VBL = 0
LIGHT_QUALITY = 64
SHADOWS_QUALITY = 64
FRAMERATE_LIMIT = 60
FALLBACK_PART_SHADERS = False
PLANET_FORCE_SHADER_MODEL_2_0 = False
PLANET_SCATTER = True
PLANET_SCATTER_FACTOR = 1
AERO_FX_QUALITY = 3
SURFACE_FX = True
EDGE_HIGHLIGHTING_PPFX = True
SCREENSHOT_SUPERSIZE = 0
INPUT_KEYBOARD_SENSIVITITY = 2
dontShowLauncher = False
TRACKIR_ENABLED = False
INPUT_DEVICES
{
Wireless Controller = 1
Controller (XBOX 360 For. = 0
}
PITCH_DOWN
{
primary = W
secondary = None
group = 0
modeMask = 5
modeMaskSec = 7
}
PITCH_UP
{
primary = S
secondary = None
group = 0
modeMask = 5
modeMaskSec = 7
}
YAW_LEFT
{
primary = A
secondary = None
group = 0
modeMask = 5
modeMaskSec = -1
}
YAW_RIGHT
{
primary = D
secondary = None
group = 0
modeMask = 5
modeMaskSec = -1
}
ROLL_LEFT
{
primary = Q
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
ROLL_RIGHT
{
primary = E
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
THROTTLE_UP
{
primary = LeftShift
secondary = UpArrow
group = 0
modeMask = 1
modeMaskSec = 7
}
THROTTLE_DOWN
{
primary = LeftControl
secondary = DownArrow
group = 0
modeMask = 1
modeMaskSec = 7
}
SAS_HOLD
{
primary = F
secondary = Joystick2Button4
group = 0
modeMask = -1
modeMaskSec = 7
}
SAS_TOGGLE
{
primary = T
secondary = Joystick2Button7
group = 0
modeMask = -1
modeMaskSec = 7
}
LAUNCH_STAGES
{
primary = Space
secondary = Joystick2Button5
group = 0
modeMask = 1
modeMaskSec = 7
}
Docking_toggleRotLin
{
primary = Space
secondary = None
group = 0
modeMask = 6
modeMaskSec = 7
}
CAMERA_MODE
{
primary = C
secondary = Joystick2Button8
group = 0
modeMask = -1
modeMaskSec = -1
}
CAMERA_NEXT
{
primary = V
secondary = Joystick2Button1
group = 0
modeMask = -1
modeMaskSec = -1
}
PAUSE
{
primary = Escape
secondary = Joystick2Button9
group = 0
modeMask = -1
modeMaskSec = -1
}
PRECISION_CTRL
{
primary = CapsLock
secondary = None
group = 0
modeMask = -1
modeMaskSec = 7
}
ZOOM_IN
{
primary = KeypadPlus
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
ZOOM_OUT
{
primary = KeypadMinus
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
SCROLL_VIEW_UP
{
primary = PageUp
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
SCROLL_VIEW_DOWN
{
primary = PageDown
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
SCROLL_ICONS_UP
{
primary = Home
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
SCROLL_ICONS_DOWN
{
primary = End
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
CAMERA_ORBIT_UP
{
primary = None
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
CAMERA_ORBIT_DOWN
{
primary = None
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
CAMERA_ORBIT_LEFT
{
primary = None
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
CAMERA_ORBIT_RIGHT
{
primary = None
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
CAMERA_RESET
{
primary = Backspace
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
TIME_WARP_INCREASE
{
primary = Period
secondary = Joystick2Button3
group = 0
modeMask = -1
modeMaskSec = -1
}
TIME_WARP_DECREASE
{
primary = Comma
secondary = Joystick2Button0
group = 0
modeMask = -1
modeMaskSec = -1
}
MAP_VIEW_TOGGLE
{
primary = M
secondary = Joystick2Button13
group = 0
modeMask = -1
modeMaskSec = -1
}
UIMODE_STAGING
{
primary = Joystick2Button11
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
UIMODE_DOCKING
{
primary = Joystick2Button10
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
TRANSLATE_DOWN
{
primary = I
secondary = None
group = 0
modeMask = -1
modeMaskSec = 2
}
TRANSLATE_UP
{
primary = K
secondary = None
group = 0
modeMask = -1
modeMaskSec = 2
}
TRANSLATE_LEFT
{
primary = J
secondary = None
group = 0
modeMask = -1
modeMaskSec = 2
}
TRANSLATE_RIGHT
{
primary = L
secondary = None
group = 0
modeMask = -1
modeMaskSec = 2
}
TRANSLATE_FWD
{
primary = H
secondary = None
group = 0
modeMask = -1
modeMaskSec = 6
}
TRANSLATE_BACK
{
primary = N
secondary = None
group = 0
modeMask = -1
modeMaskSec = 6
}
RCS_TOGGLE
{
primary = R
secondary = Joystick2Button6
group = 0
modeMask = -1
modeMaskSec = 7
}
FOCUS_NEXT_VESSEL
{
primary = RightBracket
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
FOCUS_PREV_VESSEL
{
primary = LeftBracket
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
TOGGLE_UI
{
primary = F2
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
TOGGLE_STATUS_SCREEN
{
primary = F3
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
TAKE_SCREENSHOT
{
primary = F1
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
TOGGLE_LABELS
{
primary = F4
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
TOGGLE_TEMP_GAUGES
{
primary = F10
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
TOGGLE_TEMP_OVERLAY
{
primary = F11
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
TOGGLE_FLIGHT_FORCES
{
primary = F12
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
QUICKSAVE
{
primary = F5
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
QUICKLOAD
{
primary = F9
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
THROTTLE_CUTOFF
{
primary = X
secondary = LeftArrow
group = 0
modeMask = -1
modeMaskSec = 7
}
THROTTLE_FULL
{
primary = Z
secondary = RightArrow
group = 0
modeMask = -1
modeMaskSec = 7
}
LANDING_GEAR
{
primary = G
secondary = Joystick2Button2
group = 0
modeMask = -1
modeMaskSec = 7
}
HEADLIGHT_TOGGLE
{
primary = U
secondary = Joystick2Button12
group = 0
modeMask = -1
modeMaskSec = 7
}
BRAKES
{
primary = B
secondary = DownArrow
group = 0
modeMask = -1
modeMaskSec = 1
}
TOGGLE_SPACENAV_FLIGHT_CONTROL
{
primary = ScrollLock
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
TOGGLE_SPACENAV_ROLL_LOCK
{
primary = None
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
WHEEL_STEER_LEFT
{
primary = A
secondary = None
group = 0
modeMask = 5
modeMaskSec = -1
}
WHEEL_STEER_RIGHT
{
primary = D
secondary = None
group = 0
modeMask = 5
modeMaskSec = -1
}
WHEEL_THROTTLE_DOWN
{
primary = S
secondary = None
group = 0
modeMask = 5
modeMaskSec = -1
}
WHEEL_THROTTLE_UP
{
primary = W
secondary = None
group = 0
modeMask = 5
modeMaskSec = -1
}
EVA_forward
{
primary = W
secondary = UpArrow
group = 268435456
modeMask = -1
modeMaskSec = -1
}
EVA_back
{
primary = S
secondary = DownArrow
group = 268435456
modeMask = -1
modeMaskSec = -1
}
EVA_left
{
primary = A
secondary = Joystick2Button4
group = 268435456
modeMask = -1
modeMaskSec = -1
}
EVA_right
{
primary = D
secondary = Joystick2Button5
group = 268435456
modeMask = -1
modeMaskSec = -1
}
EVA_yaw_left
{
primary = Q
secondary = LeftArrow
group = 268435456
modeMask = -1
modeMaskSec = -1
}
EVA_yaw_right
{
primary = E
secondary = RightArrow
group = 268435456
modeMask = -1
modeMaskSec = -1
}
EVA_Pack_forward
{
primary = W
secondary = UpArrow
group = 268435456
modeMask = -1
modeMaskSec = -1
}
EVA_Pack_back
{
primary = S
secondary = DownArrow
group = 268435456
modeMask = -1
modeMaskSec = -1
}
EVA_Pack_left
{
primary = A
secondary = None
group = 268435456
modeMask = -1
modeMaskSec = -1
}
EVA_Pack_right
{
primary = D
secondary = None
group = 268435456
modeMask = -1
modeMaskSec = -1
}
EVA_Pack_up
{
primary = LeftShift
secondary = None
group = 268435456
modeMask = -1
modeMaskSec = -1
}
EVA_Pack_down
{
primary = LeftControl
secondary = None
group = 268435456
modeMask = -1
modeMaskSec = -1
}
EVA_Jump
{
primary = Space
secondary = Joystick2Button3
group = 268435456
modeMask = -1
modeMaskSec = -1
}
EVA_Run
{
primary = LeftShift
secondary = Joystick2Button2
group = 268435456
modeMask = -1
modeMaskSec = -1
}
EVA_ToggleMovementMode
{
primary = LeftAlt
secondary = Joystick2Button10
group = 268435456
modeMask = -1
modeMaskSec = -1
}
EVA_TogglePack
{
primary = R
secondary = Joystick2Button11
group = 268435456
modeMask = -1
modeMaskSec = -1
}
EVA_Use
{
primary = F
secondary = Joystick2Button1
group = 268435456
modeMask = -1
modeMaskSec = -1
}
EVA_Board
{
primary = B
secondary = Joystick2Button0
group = 268435456
modeMask = -1
modeMaskSec = -1
}
EVA_Orient
{
primary = Space
secondary = Joystick2Button8
group = 268435456
modeMask = -1
modeMaskSec = -1
}
EVA_Lights
{
primary = L
secondary = Joystick2Button12
group = 268435456
modeMask = -1
modeMaskSec = -1
}
Editor_pitchUp
{
primary = S
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
Editor_pitchDown
{
primary = W
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
Editor_yawLeft
{
primary = A
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
Editor_yawRight
{
primary = D
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
Editor_rollLeft
{
primary = Q
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
Editor_rollRight
{
primary = E
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
Editor_resetRotation
{
primary = Space
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
Editor_modePlace
{
primary = Alpha1
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
Editor_modeOffset
{
primary = Alpha2
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
Editor_modeRotate
{
primary = Alpha3
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
Editor_modeRoot
{
primary = Alpha4
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
Editor_coordSystem
{
primary = F
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
Editor_toggleSymMethod
{
primary = R
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
Editor_toggleSymMode
{
primary = X
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
Editor_toggleAngleSnap
{
primary = C
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
Editor_fineTweak
{
primary = LeftShift
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
AXIS_PITCH
{
PRIMARY
{
name = Controller (XBOX 360 For.
axis = 4
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = 1
}
SECONDARY
{
name = None
axis = -1
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = 1
}
}
AXIS_ROLL
{
PRIMARY
{
name = Controller (XBOX 360 For.
axis = 0
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = 1
}
SECONDARY
{
name = None
axis = -1
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = 1
}
}
AXIS_YAW
{
PRIMARY
{
name = Controller (XBOX 360 For.
axis = 3
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = 1
}
SECONDARY
{
name = None
axis = -1
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = 1
}
}
AXIS_THROTTLE
{
PRIMARY
{
name = None
axis = -1
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = 7
}
SECONDARY
{
name = None
axis = -1
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = 7
}
}
AXIS_THROTTLE_INC
{
PRIMARY
{
name = None
axis = -1
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = 7
}
SECONDARY
{
name = None
axis = -1
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = 7
}
}
AXIS_CAMERA_HDG
{
PRIMARY
{
name = None
axis = -1
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = -1
}
SECONDARY
{
name = None
axis = -1
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = -1
}
}
AXIS_CAMERA_PITCH
{
PRIMARY
{
name = None
axis = -1
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = -1
}
SECONDARY
{
name = None
axis = -1
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = -1
}
}
AXIS_TRANSLATE_X
{
PRIMARY
{
name = Controller (XBOX 360 For.
axis = 3
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = 2
}
SECONDARY
{
name = None
axis = -1
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = 2
}
}
AXIS_TRANSLATE_Y
{
PRIMARY
{
name = Controller (XBOX 360 For.
axis = 4
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = 2
}
SECONDARY
{
name = None
axis = -1
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = 2
}
}
AXIS_TRANSLATE_Z
{
PRIMARY
{
name = Controller (XBOX 360 For.
axis = 1
inv = True
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = 2
}
SECONDARY
{
name = None
axis = -1
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = 2
}
}
AXIS_WHEEL_STEER
{
PRIMARY
{
name = Controller (XBOX 360 For.
axis = 3
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = 2
}
SECONDARY
{
name = None
axis = -1
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = -1
}
}
AXIS_WHEEL_THROTTLE
{
PRIMARY
{
name = Controller (XBOX 360 For.
axis = 1
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = 2
}
SECONDARY
{
name = None
axis = -1
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = -1
}
}
axis_EVA_translate_x
{
PRIMARY
{
name = Controller (XBOX 360 For.
axis = 3
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = -1
}
SECONDARY
{
name = None
axis = -1
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = -1
}
}
axis_EVA_translate_y
{
PRIMARY
{
name = Controller (XBOX 360 For.
axis = 4
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = -1
}
SECONDARY
{
name = None
axis = -1
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = -1
}
}
axis_EVA_translate_z
{
PRIMARY
{
name = None
axis = -1
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = -1
}
SECONDARY
{
name = None
axis = -1
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = -1
}
}
axis_EVA_pitch
{
PRIMARY
{
name = None
axis = -1
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = -1
}
SECONDARY
{
name = None
axis = -1
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = -1
}
}
axis_EVA_yaw
{
PRIMARY
{
name = Controller (XBOX 360 For.
axis = 0
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = -1
}
SECONDARY
{
name = None
axis = -1
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = -1
}
}
axis_EVA_roll
{
PRIMARY
{
name = None
axis = -1
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = -1
}
SECONDARY
{
name = None
axis = -1
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = -1
}
}
AXIS_MOUSEWHEEL
{
PRIMARY
{
name = Mouse ScrollWheel
axis = -1
inv = False
sensitivity = 1
deadzone = 0
scale = 0.4002998
group = 0
modeMask = -1
}
SECONDARY
{
name = None
axis = -1
inv = False
sensitivity = 1
deadzone = 0.05
scale = 1
group = 0
modeMask = -1
}
}
MODIFIER_KEY
{
primary = LeftAlt
secondary = RightAlt
group = 0
modeMask = -1
modeMaskSec = -1
}
AbortActionGroup
{
primary = Backspace
secondary = None
group = 0
modeMask = -1
modeMaskSec = 7
}
CustomActionGroup1
{
primary = Alpha1
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
CustomActionGroup2
{
primary = Alpha2
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
CustomActionGroup3
{
primary = Alpha3
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
CustomActionGroup4
{
primary = Alpha4
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
CustomActionGroup5
{
primary = Alpha5
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
CustomActionGroup6
{
primary = Alpha6
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
CustomActionGroup7
{
primary = Alpha7
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
CustomActionGroup8
{
primary = Alpha8
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
CustomActionGroup9
{
primary = Alpha9
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
CustomActionGroup10
{
primary = Alpha0
secondary = None
group = 0
modeMask = -1
modeMaskSec = -1
}
TRACKIR
{
activeFlight = True
activeIVA = True
activeEVA = True
activeMap = True
activeKSC = True
activeTrackingStation = True
activeEditors = True
LinX
{
upperClamp = 1
lowerClamp = -1
factor = 0.0001
}
LinY
{
upperClamp = 1
lowerClamp = -1
factor = 0.0001
}
LinZ
{
upperClamp = 1
lowerClamp = -1
factor = 0.0001
}
Pitch
{
upperClamp = 1
lowerClamp = -1
factor = 0.0001
}
Yaw
{
upperClamp = 1
lowerClamp = -1
factor = 0.0001
}
Roll
{
upperClamp = 1
lowerClamp = -1
factor = 0.0001
}
}
TERRAIN
{
preset = High
version = 1.0.0
PRESET
{
name = Low
PLANET
{
name = Kerbin
minDistance = 4
minSubdivision = 1
maxSubdivision = 6
}
PLANET
{
name = KerbinOcean
minDistance = 4
minSubdivision = 1
maxSubdivision = 6
}
PLANET
{
name = Mun
minDistance = 4
minSubdivision = 1
maxSubdivision = 6
}
PLANET
{
name = Minmus
minDistance = 4
minSubdivision = 1
maxSubdivision = 5
}
PLANET
{
name = Bop
minDistance = 4
minSubdivision = 1
maxSubdivision = 5
}
PLANET
{
name = Duna
minDistance = 4
minSubdivision = 1
maxSubdivision = 6
}
PLANET
{
name = Eve
minDistance = 4
minSubdivision = 1
maxSubdivision = 6
}
PLANET
{
name = EveOcean
minDistance = 4
minSubdivision = 1
maxSubdivision = 6
}
PLANET
{
name = Gilly
minDistance = 4
minSubdivision = 1
maxSubdivision = 5
}
PLANET
{
name = Ike
minDistance = 4
minSubdivision = 1
maxSubdivision = 6
}
PLANET
{
name = Laythe
minDistance = 4
minSubdivision = 1
maxSubdivision = 6
}
PLANET
{
name = LaytheOcean
minDistance = 4
minSubdivision = 1
maxSubdivision = 6
}
PLANET
{
name = Moho
minDistance = 4
minSubdivision = 1
maxSubdivision = 6
}
PLANET
{
name = Tylo
minDistance = 4
minSubdivision = 1
maxSubdivision = 6
}
PLANET
{
name = Vall
minDistance = 4
minSubdivision = 1
maxSubdivision = 6
}
PLANET
{
name = Dres
minDistance = 4
minSubdivision = 1
maxSubdivision = 6
}
PLANET
{
name = Pol
minDistance = 4
minSubdivision = 1
maxSubdivision = 6
}
PLANET
{
name = Eeloo
minDistance = 4
minSubdivision = 1
maxSubdivision = 6
}
}
PRESET
{
name = Default
PLANET
{
name = Kerbin
minDistance = 6
minSubdivision = 1
maxSubdivision = 9
}
PLANET
{
name = KerbinOcean
minDistance = 6
minSubdivision = 1
maxSubdivision = 7
}
PLANET
{
name = Mun
minDistance = 6
minSubdivision = 1
maxSubdivision = 8
}
PLANET
{
name = Minmus
minDistance = 6
minSubdivision = 1
maxSubdivision = 6
}
PLANET
{
name = Bop
minDistance = 6
minSubdivision = 1
maxSubdivision = 6
}
PLANET
{
name = Duna
minDistance = 6
minSubdivision = 1
maxSubdivision = 8
}
PLANET
{
name = Eve
minDistance = 6
minSubdivision = 1
maxSubdivision = 9
}
PLANET
{
name = EveOcean
minDistance = 6
minSubdivision = 1
maxSubdivision = 7
}
PLANET
{
name = Gilly
minDistance = 6
minSubdivision = 1
maxSubdivision = 6
}
PLANET
{
name = Ike
minDistance = 6
minSubdivision = 1
maxSubdivision = 6
}
PLANET
{
name = Laythe
minDistance = 6
minSubdivision = 1
maxSubdivision = 9
}
PLANET
{
name = LaytheOcean
minDistance = 6
minSubdivision = 1
maxSubdivision = 7
}
PLANET
{
name = Moho
minDistance = 6
minSubdivision = 1
maxSubdivision = 8
}
PLANET
{
name = Tylo
minDistance = 6
minSubdivision = 1
maxSubdivision = 8
}
PLANET
{
name = Vall
minDistance = 6
minSubdivision = 1
maxSubdivision = 8
}
PLANET
{
name = Dres
minDistance = 6
minSubdivision = 1
maxSubdivision = 8
}
PLANET
{
name = Pol
minDistance = 6
minSubdivision = 1
maxSubdivision = 8
}
PLANET
{
name = Eeloo
minDistance = 6
minSubdivision = 1
maxSubdivision = 8
}
}
PRESET
{
name = High
PLANET
{
name = Kerbin
minDistance = 8
minSubdivision = 1
maxSubdivision = 10
}
PLANET
{
name = KerbinOcean
minDistance = 8
minSubdivision = 1
maxSubdivision = 7
}
PLANET
{
name = Mun
minDistance = 8
minSubdivision = 1
maxSubdivision = 9
}
PLANET
{
name = Minmus
minDistance = 8
minSubdivision = 1
maxSubdivision = 7
}
PLANET
{
name = Bop
minDistance = 8
minSubdivision = 1
maxSubdivision = 6
}
PLANET
{
name = Duna
minDistance = 8
minSubdivision = 1
maxSubdivision = 9
}
PLANET
{
name = Eve
minDistance = 8
minSubdivision = 1
maxSubdivision = 10
}
PLANET
{
name = EveOcean
minDistance = 8
minSubdivision = 1
maxSubdivision = 7
}
PLANET
{
name = Gilly
minDistance = 8
minSubdivision = 1
maxSubdivision = 7
}
PLANET
{
name = Ike
minDistance = 8
minSubdivision = 1
maxSubdivision = 7
}
PLANET
{
name = Laythe
minDistance = 8
minSubdivision = 1
maxSubdivision = 10
}
PLANET
{
name = LaytheOcean
minDistance = 8
minSubdivision = 1
maxSubdivision = 7
}
PLANET
{
name = Moho
minDistance = 8
minSubdivision = 1
maxSubdivision = 9
}
PLANET
{
name = Tylo
minDistance = 8
minSubdivision = 1
maxSubdivision = 9
}
PLANET
{
name = Vall
minDistance = 8
minSubdivision = 1
maxSubdivision = 9
}
PLANET
{
name = Dres
minDistance = 8
minSubdivision = 1
maxSubdivision = 9
}
PLANET
{
name = Pol
minDistance = 8
minSubdivision = 1
maxSubdivision = 9
}
PLANET
{
name = Eeloo
minDistance = 8
minSubdivision = 1
maxSubdivision = 9
}
}
}

InputMapper profile in plaintext, just copy it into a notepad document named "KSP.xml" and drop it in your appdata folder of InputMapper

<Profile>
<LightBar>
<Discharging>
<ColorA>{255,255,255}</ColorA>
<ColorB>{59,59,59}</ColorB>
<Mode>Battery</Mode>
</Discharging>
<Charging>
<ColorA>{0,255,0}</ColorA>
<ColorB>{0,131,0}</ColorB>
<Mode>Battery</Mode>
</Charging>
<Charged>
<ColorA>{0,255,0}</ColorA>
<ColorB>{0,136,0}</ColorB>
<Mode>Flash</Mode>
</Charged>
<Active>True</Active>
</LightBar>
<Mouse>
<TouchpadEnabled>True</TouchpadEnabled>
<ButtonForRightClick>True</ButtonForRightClick>
<MovementSensitivity>39</MovementSensitivity>
<ScrollSpeed>7</ScrollSpeed>
<DoubleClickSpeed>59</DoubleClickSpeed>
<SwipeSensitivity>0</SwipeSensitivity>
</Mouse>
<AxisTuning>
<LeftStick>
<Curve>0</Curve>
<Deadzone>0</Deadzone>
<Sensitivity>1</Sensitivity>
<Offset>0</Offset>
<DeadzoneType>Radial_Hard</DeadzoneType>
</LeftStick>
<RightStick>
<Curve>0</Curve>
<Deadzone>0</Deadzone>
<Sensitivity>1</Sensitivity>
<Offset>0</Offset>
<DeadzoneType>Radial_Hard</DeadzoneType>
</RightStick>
<LeftTrigger>
<Curve>0</Curve>
<Deadzone>0</Deadzone>
<Sensitivity>1</Sensitivity>
</LeftTrigger>
<RightTrigger>
<Curve>0</Curve>
<Deadzone>0</Deadzone>
<Sensitivity>1</Sensitivity>
</RightTrigger>
<GyroX>
<Reverse>False</Reverse>
<Center>1</Center>
<Sensitivity>1</Sensitivity>
</GyroX>
<GyroY>
<Reverse>False</Reverse>
<Center>1</Center>
<Sensitivity>1</Sensitivity>
</GyroY>
<GyroZ>
<Reverse>False</Reverse>
<Center>1</Center>
<Sensitivity>1</Sensitivity>
</GyroZ>
<AccelX>
<Reverse>False</Reverse>
<Sensitivity>1</Sensitivity>
</AccelX>
<AccelY>
<Reverse>False</Reverse>
<Sensitivity>1</Sensitivity>
</AccelY>
<AccelZ>
<Reverse>False</Reverse>
<Sensitivity>1</Sensitivity>
</AccelZ>
</AxisTuning>
<General>
<FlushHIDQueue>False</FlushHIDQueue>
<IdleDisconnectTimout>0</IdleDisconnectTimout>
<RumbleBoost>100</RumbleBoost>
<MixRumble>True</MixRumble>
<EnableXInputMapping>True</EnableXInputMapping>
</General>
<Mappings>
<SixAxis>
<GyroX>None</GyroX>
<GyroY>None</GyroY>
<GyroZ>None</GyroZ>
<AccelX>None</AccelX>
<AccelY>None</AccelY>
<AccelZ>None</AccelZ>
<JitterCompensation>90</JitterCompensation>
</SixAxis>
<Controls>
<DpadUp ActionType="Keyboard" FunctionType="None">38</DpadUp>
<DpadDown ActionType="Keyboard" FunctionType="None">40</DpadDown>
<DpadLeft ActionType="Keyboard" FunctionType="None">37</DpadLeft>
<DpadRight ActionType="Keyboard" FunctionType="None">39</DpadRight>
</Controls>
<Macros>
</Macros>
</Mappings>
<ApplicationBindings>
<Application>D:\Games\Steam\steamapps\common\Kerbal Space Program\KSP.exe</Application>
</ApplicationBindings>
</Profile>

Enjoy! :D

Sorry if this isn't exactly an Add-On, but I felt it belongs here.

Link to comment
Share on other sites

Now PC players of KSP can feel like they're playing KSP on PS4, but in reality, they're really playing on PC!

In all seriousness however, that is absolutely astounding. It's a brilliant idea and I can't believe nobody did it earlier.

It's really a shame that my only working PlayStation is a PS2 Slimline with two Dualshock 2 controllers :(. If I had a DS4 I would certainly use this. I will recommend it to my non-forum-goer-friends.

Link to comment
Share on other sites

Now PC players of KSP can feel like they're playing KSP on PS4, but in reality, they're really playing on PC!

In all seriousness however, that is absolutely astounding. It's a brilliant idea and I can't believe nobody did it earlier.

It's really a shame that my only working PlayStation is a PS2 Slimline with two Dualshock 2 controllers :(. If I had a DS4 I would certainly use this. I will recommend it to my non-forum-goer-friends.

Thank you very much for your support! :)

Amazing how many views this has gotten in one day!

There are a few threads floating around about configuring other more standard controllers to work with KSP, but I really found nothing for my DS4, so I decided to assist others making the same endeavor because the DS4 really is a different beast than most controllers in terms of configuration.

Hopefully I can keep this thread updated with changes I make because to my standards, this is still an unfinished project.

On that note, I do need help with a few things I can't quite wrap my head around, such as:

-I would like to find a way to make multi-button bindings in KSP to improve controller functionality.

-Having the camera control (which is absent in the current setup) to be the default use for the track pad would be nice, preferably with a method to switch back to cursor mode easily for those fiddly UI buttons (especially in modded KSP).

-I tried for a long time to get the throttle controls on the triggers, but KSP likes triggers to act like buttons for now, as well as the problem of having throttle up and throttle down being on the same axis.

Link to comment
Share on other sites

  • 1 year later...

thanks for this :D

I would definitely like to enjoy using this!

I would like to point out though that the way you have it set up for autolaunch in the input mapper profile is for people who've bought it on steam. I had to go in and change it to the location of my ksp directory, and also rename it to ksp_x64. I know this is an old post and idk if there's a newer one so I'd recommend adding this to your post, to avoid confusion :wink: 

the only controls that have worked for me are the dpad and touchpad controls, the rest I had to manually add in on the input mapper software.

good start though :D

Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...