Gamepad

Prey XInput Fix

Download Sources


TL;DR

This fix resolves controller issues in Prey that were introduced with patch v1.05, by forcing the game to use XInput instead of the Steam Controller API by Valve.

Quick start guide:

  1. Open the archive and choose the button prompts you want to use by opening the corresponding folder
  2. Extract the file dinput8.dll to the release sub-folder of Prey. For example: "C:\Program Files (x86)\Steam\steamapps\common\Prey\Binaries\Danielle\x64\Release\"
  3. Start the game like you would normally, for example directly through Steam or Big Picture mode
  4. Important: If the fix does not work, make sure that you have turned off the usage of the Steam Controller API (see below)

Features

While Prey originally offered good controller support, patch v1.05 introduced various issues. Instead of choosing either XInput or the Steam Controller API based on the user settings, the game always uses the latter. This results in problems with the movement as well as certain controller settings or the controller not working at all if the user has disabled the usage of the Steam Controller API in game’s properties in Steam.

This fix re-enables XInput support and forces the game to use it, regardless of the settings.

Instructions

Supported Versions

This fix is is designed for latest, fully patched Steam installation of Prey and might crash when it is used with any other version than v1.06.

Install

The fix does not make any permanent changes to the game or to Windows and can easily be removed.

Important: When using a non-XInput controller such as the DS4, you will need a XInput emulator like DS4Windows for this fix to work

  1. Open the archive and choose the button prompts you want to use by opening the corresponding folder
  2. Extract the file dinput8.dll to the release sub-folder of Prey. For example: "C:\Program Files (x86)\Steam\steamapps\common\Prey\Binaries\Danielle\x64\Release\"
  3. Start the game like you would normally, for example directly through Steam or Big Picture mode
  4. Important: If the fix does not work, make sure that you have turned off the usage of the Steam Controller API (see below)

Although the fix forces the game to use XInput, it is necessary to disable the usage of the Steam Controller API in the game’s settings.

The safest way to do this is the following:

  1. In the Steam client go to the menu Steam -> Settings -> Controller -> General Controller Settings
  2. Make sure PS4/XBox Configuration Support is checked
  3. Go to Big Picture mode and find Prey in you library
  4. Click Mange Game -> Controller Options and uncheck Use Steam Configuration for Non-Steam Controllers
  5. Uncheck the setting from step 1 again, depending on whether it was checked in the first place

Uninstall

  1. Remove or rename the dinput8.dll from the folder of the game.

Known Issues

There are currently no known issues with using the fix.

Additional Information

Antivirus Software

Since this fix consists of an executable DLL file that uses “hacking techniques” such as injection and hooking, it could be classified as malicious by antivirus software. In that case, it might be necessary to add an exception rule to the scanner.

If you lack the trust in random people on the internet — and I would not blame you — feel free to use a meta online virus scanner like VirusTotal to verify the file.

Loading Other Fixes/Mods/Injectors

To increase the compatibility with other mods or injectors that are using a wrapper DLL, this fix offers two methods for remote loading of additional files. Note that there might still be compatibility issues between the different fixes, mods or injectors that have nothing to do with the loading process.

File method:

The fix will load another dinput8.dll automatically if it has the name dinput8_Remote.dll. Just rename the DLL you want to load accordingly. Using this method will lead to an error if the renamed DLL is not itself a dinput8.dll.

Folder method:

The fix will also automatically load all DLLs regardless of their names in a dinput8_Remote sub-directory. Just create a corresponding folder in the install directory of the fix. This is the only way to load multiple (conflicting) files.

Contact And Support

If you like this fix and want to support the development or show your appreciation with a donation, you can find more information on my website. There you can also find out more about other mods that I have done and means to contact me if you have a question, want to provide feedback, bug reports and suggestions.

Version History

v0.6:

  • Added support for Mooncrash DLC

v0.5:

  • Upgraded the fix to game version v1.06

v0.4:

  • Controller movement no longer gets stuck on interactive items when using PS4 prompts

v0.3:

  • Added a separate version that shows button prompts of the PS4 instead of the XBox controller
  • Added more detailed instructions to the readme file

v0.2:

  • Added support for demo version of Prey
  • Added measures to make the fix more robust to updates of the game

v0.1:

  • Initial release
Advertisements

Dark Souls Input Customizer

What is this?

Have you ever wanted to open the gesture menu by Left Trigger + Spacebar + Mouse Wheel Down? Now you can! The Dark Souls Input Customizer is the successor to the Dark Souls Mouse Fix and allows you to bind any action to arbitrary combinations of keys or buttons on the controller, the mouse or the keyboard via a simple GUI. In addition to a complete fix of the mouse controls, the mod also provides advanced options, such as separate sensitivities for bow aiming or the usage of of non-standard actions like Kick, the creation of input profiles, as well as dedicated support for the Steam Controller.

You can download the mod from PC Gaming Wiki here, from Nexusmods here or from ModDB here.

Overview

Description

The Dark Souls Input Customizer (DSIC) offers full customization of the controls of Dark Souls. It uses a flexible input system that allows the rebinding of every action to arbitrary combinations of keys or buttons on the controller, the mouse or the keyboard. Although this can in part also be achieved with existing tools, DSIC is much more flexible and wraps it all up in an easy to use package, along with additional functionality that is specially tailored to Dark Souls.

DSIC also fully includes the Dark Souls Mouse Fix, which does not have to be installed separately.

Features

  • Bind any action to an arbitrary combination of keys or buttons on the controller, mouse or keyboard
  • Flexible options such as individual sensitivities for camera movement and bow aiming
  • Non-standard bindings such as Roll-Only, Kick or Leap Attack
  • Complete fix of the mouse controls with UI cursor support and no additional smoothing or acceleration
  • Includes a GUI for easy configuration
  • Steam Controller support
  • Compatible with DSFix

Instructions

Supported Versions

This mod is designed for the latest, fully patched Steam version and might not work when used with an older or otherwise modified executable.

Install

The mod does not make any permanent changes to the game or to Windows and can easily be removed.

  1. Install Durante’s DSFix if you have not already
  2. Extract the contents of the DarkSoulsInputCustomizer.zip to the same folder. For example: "C:\Program Files (x86)\Steam\steamapps\common\Dark Souls Prepare to Die Edition\DATA"
  3. Look for the dinput8dllWrapper line in DSFix.ini and set it to dinput8dllWrapper DarkSoulsInputCustomizer.dll. No additional configuration of DSFix is necessary
  4. Start DarkSoulsInputCustomizerGUI.exe to set bindings and other settings as desired
  5. Start the game normally, for example directly through Steam. If you want to change the settings while in the game, see the Configuration section below on how to do that

A few additional notes on the installation:

  • See Loading Other Fixes/Mods/Injectors for information on how to solve conflicts with other mods that also use a DirectInput wrapper DLL
  • You should hear a DSIC loaded message on game launch when the fix is installed correctly. This sound can be turned of in the config
  • If you currently have the Dark Souls Mouse Fix installed, make sure to replace the line with dinput8dllWrapper DarkSoulsInputCustomizer.dll instead of just adding another one

Uninstall

  1. Set the dinput8dllWrapper setting in DSFix.ini to none and delete the files of the fix

Configuration

Although the configuration using the GUI should be easy and straight-forward, there are some things to note:

  • The GUI provides tooltips with additional information about a setting
  • You can change settings while in the game by using the Reload Config binding. Just change the settings in the GUI as necessary, press save and then use the binding to reload the config in-game. You should hear a DSIC Reloaded sound message when the reloading was successful
  • You may also want to enable borderlessFullscreen in DSFix for easier switching between the GUI and the game
  • It is not necessary to unbind a key or button in the in-game settings to use it with the fix

Movement And Camera Control

The Movement/Camera Control setting determines how the camera and the basic movement of the character are controlled:

  • Keyboard and Mouse: Enables raw mouse input for camera control and uses bindings for movement. Deactivates analog sticks and vibrations
  • Gamepad: Standard controller behavior. Uses the left and right analog stick for movement and camera control. Disables raw mouse camera
  • Steam Controller: Enables raw mouse input for camera control and uses the left analog stick for movement. This requires that the mouse is mapped to the right control pad in the Steam Controller software

Note that this setting has no effect on any other bindings. It is entirely possible to use keyboard or mouse bindings in Gamepad mode an vice versa. This mod is all about customization and the input system is purposefully designed to be as flexible as possible. This should hopefully also help people who are using unusual controllers or are otherwise not able to play the game in the regular way.

Non-Standard Bindings

Non-standard bindings execute actions that usually have to be performed by using a context-sensitive key or a combination of keys. DSIC currently offers bindings for:

  • Kick and Leap Attack
  • Roll Only and Dash Only
  • Auto Run

Although they do not allow anything that cannot also be done manually, there has been some debate in the past over whether automation like this could be considered cheating. I am still not convinced by that and am currently of the opinion that the listed actions are primarily a matter of the controls and not the player’s skill; especially since similar effects can already be achieved with external tools, such as AutoHotkey or severals different types of gaming software.

Known Issues

The Auto Cursor currently briefly activates the cursor when opening certain doors with keys. This is not easily fixable but should only be a minor issue, due to the short duration and small number of situations where this problem occurs.

The dialog that pops up when summoning a co-op partner can currently not be controlled with the mouse cursor.

All keybindings are currently disabled in the main menu. This is on purpose to prevent issues when navigating the menu and when entering a character name.

Additional Information

Antivirus Software

Since this mod consists of an executable DLL file that uses “hacking techniques” such as injection and hooking, it could be classified as malicious by antivirus software. In that case, it might be necessary to add an exception rule to the scanner.

If you lack the trust in random people on the internet — and I would not blame you — feel free to use a meta online virus scanner like VirusTotal to verify the file.

GUI Requirements

The GUI requires the Microsoft .NET Framework 4.7.1 to work; which should already be installed on most systems. If you are having problems starting the program, you can download the required version either through a recommended Windows update (Windows 7 and later) or at Microsoft here.

Loading Other Fixes/Mods/Injectors

To increase the compatibility with other mods or injectors that are using a wrapper DLL, this fix offers two methods for remote loading of additional files. Note that there might still be compatibility issues between the different fixes, mods or injectors that have nothing to do with the loading process.

File method:

The mod will load another dinput8.dll automatically if it has the name dinput8_Remote.dll. Just rename the DLL you want to load accordingly. Using this method will lead to an error if the renamed DLL is not itself a dinput8.dll.

Folder method:

The mod will also automatically load all DLLs regardless of their names in a dinput8_Remote sub-directory. Just create a corresponding folder in the install directory of the mod. This is the only way to load multiple (conflicting) files.

Input Bindings

The GUI allows the binding of an action to an arbitrary combination of keys and buttons on the keyboard, the mouse or an XInput compatible controller. The system purposefully does not restrict conflicts, so multiple actions can be bound to the same key.

Key Names:

In case of the keyboard there might be a discrepancy between the key that was pressed and the one that is displayed. This is because the names are automatically translated based on the keyboard layout by using a Windows function. However, the mod always uses the physical keys as they were used during the creation of the binding, independent of the name that is displayed.

Modifiers:

Modifier bindings can be created by just using the corresponding key combinations. If you bind one action to Space and another another to LCTRL + Space and a third one to LALT + LCTRL + Space, only one of them will be triggered when Space is down, depending on the state of LCTRL and LALT. The system is not restricted to the usual modifier keys ALT, CTRL or SHIFT. Any key or button pressed before another acts as a modifier for the next one. Note that the order of the keys or buttons is only relevant during the binding process to distinguish bindings with the same modifiers. In the above example, Space could be held down and the other actions triggered by pressing LCTRL or LALT afterwards.

Acknowledgments

I would like to thank Kaibz for his extensive testing, detailed feedback and valuable suggestions during the development of the alpha versions of the mod. Without him, creating the mod would have taken even longer than it already did.

Additionally, I would also like to give a shout-out to the author of the original DSMFix for Dark Souls, which allowed me to enjoy several playthroughs of the game over the years.

Finally, I would like to thank Durante, author of DSFix, who made the game playable in the first place. Without his work, everything I have done would not be worth much.

Contact And Support

If you like this mod and want to support the development or show your appreciation with a donation, you can find more information on my website. There you can also find out more about other mods that I have done and means to contact me if you have a question, want to provide feedback, bug reports and suggestions.

Version History

v1.1:

  • Updated the input system. Among other things, it now only blocks button and key presses from reaching the game if they were responsible for triggering a binding
  • Updated the address system to increase the compatibility with modified versions of the game
  • Updated the loading system to add support for remote loading of additional DLLs for increased compatibility with other mods (see Loading Other Fixes/Mods/Injectors)
  • Auto-Lock Camera is now Cursor Lock and locks the camera when the cursor is shown. In addition, the camera is now always being locked when the game is not in the foreground
  • Show UI Cursor is now Invert UI Cursor and either temporarily shows the cursor or allows movement of the camera, depending on whether the cursor is currently visible
  • Updated the GUI to .NET version 4.7.1 to fix a problem where the program would crash on startup (shout-out to /u/XodmQ for his help in investigating this issue)
  • Fixed a bug that caused keys and buttons to “stick” under some circumstances
  • Fixed a bug that caused manual cursor visibility and capture changes to sometimes not being applied correctly
  • Fixed a bug that caused the Manual Targeting Threshold to not being respected with Auto UI Cursor disabled
  • Fixed a bug that caused the mouse cursor to not correctly be recaptured in fullscreen mode when switching back into the game from the desktop
  • Fixed a display bug in the GUI that caused some keys to falsely be displayed as the corresponding versions on the numpad

v1.0:

  • Initial public release