Custom Game Controller

Cyberpunk 2077 Mods |

Custom Game Controller

Allows for joysticks and other gamepads to be used and configured via redscript in Cyberpunk 2077.

Example redscript configuration for the Xbox One controller (included in the mod):

// This replicates the regular Xbox One game controller setup
public class CustomGameController_045E_02EA extends ICustomGameController {
public func OnSetup() -> Void {
this.SetButton(1 – 1, EInputKey.IK_Pad_A_CROSS);
this.SetButton(2 – 1, EInputKey.IK_Pad_B_CIRCLE);
this.SetButton(3 – 1, EInputKey.IK_Pad_X_SQUARE);
this.SetButton(4 – 1, EInputKey.IK_Pad_Y_TRIANGLE);
this.SetButton(5 – 1, EInputKey.IK_Pad_LeftShoulder);
this.SetButton(6 – 1, EInputKey.IK_Pad_RightShoulder);
this.SetButton(7 – 1, EInputKey.IK_Pad_Back_Select);
this.SetButton(8 – 1, EInputKey.IK_Pad_Start);
this.SetButton(9 – 1, EInputKey.IK_Pad_LeftThumb);
this.SetButton(10 – 1, EInputKey.IK_Pad_RightThumb);
this.SetButton(11 – 1, EInputKey.IK_Pad_DigitUp);
this.SetButton(12 – 1, EInputKey.IK_Pad_DigitRight);
this.SetButton(13 – 1, EInputKey.IK_Pad_DigitDown);
this.SetButton(14 – 1, EInputKey.IK_Pad_DigitLeft);

this.SetAxis(1 – 1, EInputKey.IK_Pad_LeftAxisY, false, 0.5, 0.05);
this.SetAxis(2 – 1, EInputKey.IK_Pad_LeftAxisX, false, 0.5, 0.05);
this.SetAxis(3 – 1, EInputKey.IK_Pad_RightAxisY, false, 0.5, 0.05);
this.SetAxis(4 – 1, EInputKey.IK_Pad_RightAxisX, false, 0.5, 0.05);
this.SetAxis(5 – 1, EInputKey.IK_Pad_LeftTrigger, false, 0.0, 0.05);
this.SetAxis(6 – 1, EInputKey.IK_Pad_RightTrigger, false, 0.0, 0.05);
}

public func OnUpdate() -> Void {
}
}

All options are described here:
public abstract native class ICustomGameController extends IScriptable {
public native let pid: Uint16;
public native let vid: Uint16;
public native let id: Int32;
public native let buttons: array;
// This is the enum used by `switches` interally:
// Center = 0
// Up = 1
// UpRight = 2
// Right = 3
// DownRight = 4
// Down = 5
// DownLeft = 6
// Left = 7
// UpLeft = 8
public native let switches: array;
public native let axes: array;

public native let buttonKeys: array;
public native let axisKeys: array;
public native let axisInversions: array;
public native let axisCenters: array;
public native let axisDeadzones: array;

// Maps a controller button to a key
// button: 0-indexed
// key: https://nativedb.red4ext.com/EInputKey
public native func SetButton(button: Int32, key: EInputKey);

// Maps a controller axis to a key
// axis: 0-indexed
// key: https://nativedb.red4ext.com/EInputKey
// inverted: whether or not the axis should be inverted
// center: value between 0.0-1.0 that acts as the natural position of the axis
// deadzone: value between 0.0-1.0 that acts as a threshold for movement
public native func SetAxis(axis: Int32, key: EInputKey, inverted: Bool, center: Float, deadzone: Float);

// Called after the controller is created but not intialized (no values are read yet)
// Use this to call SetButton & SetAxis
public abstract func OnSetup() -> Void;

// Called after new values are read, but before they’re assigned
public abstract func OnUpdate() -> Void;

// Called when axis values are read from the controller, after center & deadzone correction
// index: 0-indexed axis index
// value: axis value to be compared & assigned if different
public abstract func GetAxisValue(index: Uint32, value: Float) -> Float;
}


Author: jackhumbert
This content was uploaded by website visitors. If you notice any mistake, please let us know.


The Cyberpunk 2077 mods offer a wide variety of free options to enhance and customize your game, making it more engaging and efficient. Download this Cyberpunk 2077 Custom Game Controller mod and, with no download limits, explore different options to upgrade your game and stay ahead by continually improving your gameplay experience.



Useful Information: How to install Cyberpunk 2077 Mods | How to Create Cyberpunk 2077 Mods | Cyberpunk 2077 Release Date | Cyberpunk 2077 System Requirements | About Cyberpunk 2077 Game | Cyberpunk 2077 News

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *