Game Fixes

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 allows you to bind any action to arbitrary combinations of keys or buttons on the controller, the mouse or the keyboard. Use a simple GUI to create individual input profiles with advanced options, such as separate sensitivities for bow aiming or the usage of of non-standard actions like roll-only. It also includes a complete fix of the mouse controls as well as dedicated support for the Steam Controller.

Overview

Description

The Dark Souls Input Customizer (DSIC) allows full customization of the controls of Dark Souls. It uses an intuitive input system that allows the rebinding of every action to arbitrary combinations of keys or buttons on the controller, mouse or 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, 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

  • Allows any action to be bound 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
  • 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 only works with the latest, fully patched Steam version.

Important: The mod relies on the layout of the executable. Older versions or ones that otherwise have been tempered with probably will not work. This also means that if the game were to be patched — which is very unlikely at this point — it might break the mod and require it to be updated.

Install

The mod does not make any permanent changes to the system, the game or the configuration of the game and can easily be removed (see below).

  1. Install Durante’s DSFix if you haven’t 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:

  • 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
  • The GUI requires the Microsoft .NET Framework 4.6.1, which should already be installed on most systems. If you are having problems starting the GUI, you can download the required version here

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, which is per default set to the '-' key on the numpad. 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

Binding System

The binding system allows you to bind any action to an arbitrary combination of keys and buttons on the controller, mouse or keyboard. The system works reactively. To bind an action, double left click the corresponding box. When the box turns green, press the combination of keys or buttons you would like to assign. The combination is set once any pressed keys or buttons are released.

The mod should work with arbitrary devices that are either mice, keyboards or XInput compatible controllers. In the case of keyboards you should be able to use almost any keyboard key, independent of the keyboard type or layout. The key names are dependent on the layout currently set in Windows. If you are using an English layout, the key names will be in English, while an AZERTY layout will lead to French names. Bear in mind that the key names are automatically determined by using a Windows function and not all keys have pleasant display names.

A few additional notes on the binding system:

  • Each key or button pressed before another acts as a modifier for the next one
  • Any key or button can be used as a modifier, not just ALT, CTRL or SHIFT
  • There is no limit to how many keys or buttons can participate in a binding. You can set a combination involving half a dozen of them if you want to
  • The order you are pressing the keys or buttons in is only important during the binding process to differentiate between bindings that involve the same modifiers
  • To unbind an action double right click the corresponding box

Profiles

Profiles can be used to create specific configurations for certain builds or to use different control schemes for multiple people who are using the same computer. The check mark on the tab indicates which profile is currently active and being used by the mod. You can also toggle all available profiles while in the game by using the Toggle Profile binding.

On first launch, DSIC will create a set of standard profiles for each basic control method — mouse and keyboard, gamepad and the Steam Controller. You can either modify these basic profiles or create as many new ones as you want by clicking the + button on the profile bar. To rename or delete a profile, just right click the tab.

The profile system works on the basis of files. If you want to share a profile with someone else, just copy the file with the corresponding name.

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.

However, since Dark Souls is also a PvP game, I am willing to listen to peoples concerns. Should there be a significant negative response, the bindings could for example forcibly be disabled when using DSIC together with Dark Souls PvP Watchdog.

If you have an opinion about this, please participate in the discussion in the official reddit thread in /r/pcgaming.

Additional Information

What You Should Know

Since the mod consists of an executable DLL-File, I could have put any harmful shenanigans in there. You just have to trust me that the file is clean.

If you don’t — and why should you — feel free to use a meta online virus scanner like VirusTotal to verify the file. Be aware however, that because the fix uses “hacking techniques” such as injection and hooking, it could trigger anti-virus software without being harmful.

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.

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

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 fix. Without him, creating the fix 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, you can find more information on my website. There you can also find out more about other fixes that I have done and means to contact me if you have a question, want to provide feedback, bug reports or suggestions.

Version History

v1.0:

  • Initial public release

Dark Souls Mouse Fix – Update to Beta 1.4

I did have some free time on my hands again and took the opportunity to tackle some of the bigger remaining issues of the mouse fix for Dark Souls. This is a major update and should remedy many gripes and problems some people had with the previous version. It has gotten a fairly well reception and I am pretty confident that from this point forward there are no issues left that could be considered major. You can find the latest version on Nexus here or on PC Gaming Wiki here.

Instead of just posting the change log as I normally do, I will summarize them in reasonable sections.

New Binding System:

This is a big one. The old binding system was very clunky and restrictive, because users had to manually select the key they wanted to bind from a predefined list of keys out of a dropdown menu. I was not a big fan of that system in the first place, but it was the only thing feasible I could do at that point in time. To keep that list manageable, I only included the most common keys. This was a problem because people are using a wide variety of keyboard layouts and languages, which sometimes prevented them from binding the keys they wanted. Another issue was that the old system did not properly support modifier keys, which had to be added manually for each option. This was overall one of the most requested features.

After I had thought about the problem for a while, I came up with a solution I am quite happy with. The new binding system allows you to bind any action to an arbitrary combination of keyboard keys, mouse buttons or the mouse wheel. Have you ever wanted to switch your magic spell with Space+W+~+MouseWheelUp? Now you can. Instead of manually selecting a key from a limited set of predefined keys, the new system works reactively. To bind an action, double left click the corresponding box. When the box turns green, press the combination of keys you would like to assign. The combination is set once any pressed keys are released.

You should be able to use almost any keyboard key, independent of the keyboard type or layout. The key names are dependent on the layout currently set in Windows. If you are using an English layout, the key names will be in English, while an AZERTY layout will lead to French names.

Bear in mind that the names the keys are getting in the GUI are sometimes not entirely correct. For example, both the left and the right control keys can be referred to by the same identifier, while keys like Page Up might refer to the corresponding key on the numpad. This is because the key names are generated dynamically by using a Windows function, which does not distinguish between certain keys and does not always lead to pleasant display names. However, this is entirely a cosmetic issue and the keys will get recognized in the game as they are pressed in the GUI.

A few additional notes on the binding system:

  • Each key pressed before another acts as a modifier for the next one
  • Any key can be used as a modifier key, not just ALT, CTRL or SHIFT
  • There is no limit to how many keys can participate in a combination. You can set a combination involving half a dozen keys if you want to
  • The order you are pressing the keys in is only important during the binding process to differentiate between bindings that involve the same modifier keys
  • To unbind an action double right click the corresponding box

There are some videos out there that show how the binding works in practice. For example this one.

Manual Targeting Option:

It is now possible to enable the switching of targets by flicking the mouse. After the keybindings, this was the second most requested feature. I honestly did not anticipate that so many people would prefer to switch targets by using the mouse instead of a dedicated binding.

Manual targeting can either be always enabled or specified by a hold or a toggle binding. Additionally, one of the things that always prevented me from using this kind of target switching was how easy it was to unintentionally switch targets. For this reason, I also added a Targting Threshold option, which determines how far you have to move the mouse for a target switch to occur. Take a look into the GUI tooltips for more information.

Non-Standard Bindings:

Added a set of non-standard bindings. It is now possible to bind Leap Attack, Kick, Dash Only, Roll Only and Auto Run actions to further enhance the customization of the controls. See the corresponding GUI tooltips for details.

There has been some considerable amount of thinking and discussion about whether to include non-standard bindings at all in the fix. I actually started a discussion about this in the main reddit thread when the mouse fix first came out, but it did not really gain much traction. The question was at which point something ceases to be a matter of controls and begins to just make the game easier. Especially with the Kick and Leap Attack, one might argue that being able to execute them well is part of the learning process of the game.

In the end, I decided to include them because they do not allow you to do anything that cannot also be done manually. Additionally, the actions are not that difficult to execute in the first place and most of the bindings could also be easily replicated without the fix, by using external tools such as AutoHotkey. I am personally also not a fan of context-sensitive bindings and it is nice to see that there are also other people out there who prefer to have dedicated bindings for rolling and dashing.

However, if you are a purist, feel free not to use them. PC Gaming is all about choice after all.

Miscellaneous:

  • Added a custom mouse cursor that should be more suitable for the game. The cursor is enabled by default but can be disabled in the GUI
  • Added audio feedback for certain status changes, such as loading of the mouse fix, reloading the config or changing the input mode
  • Multiple changes to the usability of the GUI, including a revision of the labels and tooltips
  • Added a complete initial default config that should be decently intuitive for most players that are not familiar with the game

These are just some little quality of life features to improve the overall experience. They should be pretty self-explanatory. The custom cursor is called Das Black and was created by a user named aroche. If you want to know how it looks, you can find pictures of it on his Devian Art page.

Major Bugfixes:

  • The GUI no longer loads a local d3d3.dll to prevent conflicts with certain mods/injectors, such as DSPW or SweetFX/ReShade (thanks to SeanPesce for his feedback and research on the issue)
  • The Auto Cursor will no longer enable the cursor and lock the camera when UI elements are shown that cannot be controlled with the mouse, such as subtitles or certain floating messages
  • Fixed a bug that caused the Auto Cursor to not recapture the cursor correctly after having switched out of the game

I am very happy that I got these fixed.

The first one was not only quite annoying, but also confusing to the user. Although not many people seem to use SweetFX with Dark Souls, Dark Souls PvP Watch Dog (DSPW) is a popular tool and I got many reports of people who had no idea why starting the GUI caused an error box of DSPW, which lead them to believe the mouse fix was incompatible with the it.

The Auto Cursor problem was probably the most severe ingame bug, as it could potentially lock you out from controlling your character in situations where that could actually cause you to die. Aside from some very rare situations involving keys opened by doors (see Known Issues), the Auto Cursor should now work correctly in all situations.

That is it for now. Aside from potential hotfixes, it will probably take a while before the mod is updated again. But as always, do not hesitate to provide feedback or suggestions. I will keep them in mind. Also, if more people are suggesting a feature, it is more likely that it will get implemented.

Have fun.

Origin Update For Mass Effect and Dead Space Mouse Fixes

I recently started to have a little bit more free time at my disposal again and used it to tackle an annoying problem that plagued the mouse fixes for both Dead Space and Mass Effect. The change logs for both games are as follows:

Beta 0.5:

  • The fix should now correctly work with Origin versions from any region

This might not look very impressive, but fixing this issue involved tackling a more severe underlying problem with Origin. Although the fixes were advertised to work with Origin, they would show an unsupported version pop-up for some users, while working fine for others.

Games are often available on a variety of distribution platforms, which usually all come with their own executable file of the game. This means that even if the versions are practically the same, the executables of say the Steam version most likely will have a different layout compared to the Origin or GOG version. A game can also have multiple versions on the same platform. This is most often the case for games that are distributed with certain languages that are only available in some regions.

While other game fixes work on a more abstract level, fixes like the ones for Dead Space of Mass Effect hook into the game and need to know the specific locations (i.e. memory addresses) of functions or data to hook into. If the addresses are wrong, the game usually just crashes. For this reason, every version has to be supported separately by a fix. This is often not trivial, because a fix might rely on several addresses which all have to be determined individually for every version. This also presupposes that I have access to every version in the first place, which is often not the case. Additionally, this process usually has to be repeated every time a game is patched.

Fortunately, the number of different official versions is often rather small and the chances that an older game gets patched are often pretty slim. By restricting a fix to only support the latest, fully patched version it is usually feasible to cover most — if not all — official distribution sources.

However, as it turned out, Origin does not like to play ball with this approach. While Steam usually only provides multiple versions if they actually differ from a content point of view (e.g. languages or censoring), Origin seems to always distribute technically different version for every region, even if they are practically identical. It is hard to tell how many regions Origin uses, but I saw different versions for Western Europe, Eastern Europe, Northern Europe, North America, Russia and more.

Because it is not feasible to support all of them, the updated versions of the mouse fixes now use a pattern matcher to handle Origin versions. Because they are usually very similar, it is possible to search for certain memory patterns in the executable, instead of specifying the addresses directly.

This should hopefully be sufficient to properly handle Origin versions for all fixes in the future.

Dark Souls Mouse Fix – Update to Beta 1.3 – Preliminary Modifiers, Experimental Steam Controller Support

Although I really should do other things right now, I invested some more time into the mouse fix to add some often requested features and fix some annoying bugs.

Beta 1.3 change log:

  • Added preliminary modifier bindings that turn left and right attacks into heavy attacks (see Configuration for details)
  • Made all modifier bindings non-blocking so they can also be used as a modifier in the ingame settings where applicable (see Configuration for details)
  • Added proper Input Mode setting to the config that allows easy switching between mouse and controller input (see Configuration for details)
  • Added experimental Steam Controller support (see Configuration for details)
  • Replaced Toggle Mouse Fix binding with Toggle Input Mode
  • Fixed bug that prevented the number keys from getting bound correctly
  • Fixed bug in the GUI that prevented an action from getting unbound correctly when there was a default binding for it

From the documentation:

Modifier Bindings

Modifiers change the behavior of a binding when they are down. The current implementation is preliminary and has some shortcomings:

  • Modifiers are currently only available for movement as well as left and right attack. The implementation will be overhauled in the future to allow all actions to be bound with a modifier
  • Any key or mouse button can be set as a modifier
  • While a mouse wheel direction can be set as a modifier, it will not work properly, because rolling the mouse wheel cannot be hold down
  • A key or button used as a modifier will not be blocked in the game to make it also usable as a modifier with the ingame keybindings. This also means that it may be necessary to unbind some ingame keybindings to make everything work properly

As you can see there are some drawbacks to the modifiers. Although I am really not happy with the way the modifier keys are implemented right now, I figured it would be better to have them for at least those bindings which seem to be most important to people, rather than not having them at all. But to be honest, I cannot wait to have some free time again to do modifiers and bindings in general properly.

Again from the documentation:

Input Mode:

The input mode specifies the behavior of the fix:

  • Mouse: Enables raw mouse camera and keyboard standard action bindings, deactivates controller input and vibrations
  • Gamepad: Standard controller behavior, disables raw mouse camera and keyboard standard action bindings
  • Steam Controller (experimental): Standard controller behavior with the exception that the raw mouse camera is enabled and the right analog stick is disabled

This point might be surprising to some people, but I had an unanticipated amount of requests to make the fix usable with the Steam Controller. Apparently the new mouse movement is a big improvement to the usual analog controls of the gamepad. I had actually posted an experimental version a few days back in the Steam Controller reddit, which now got fully incorporated into the fix alongside a few bugfixes.

I also took the opportunity to implement a proper input mode, because there previously was no clear divide in the code that specified when which components of the fix should be active or not. As you can see, it is now properly supported to have the fix installed alongside a controller and to switch between the input modes, even on-the-fly, without having to fiddle around with the setup.

This is all I can do for the moment. Although there are still things left to do and also a lot of room for improvements in other areas, most of those things either require a considerable update of the software or another deep look into the engine of the game, both of which I unfortunately currently do not have time for.

As always, let me know if you encounter any problems.

Dark Souls Mouse Fix – Update to Beta 1.2

I just updated the fix to a new version:

Beta 1.2 change log:

  • Added option to bind movement to the config. These differ on a technical level from those in the ingame settings (see Configuration for details)
  • Disabled hardware acceleration for the GUI to avoid conflicts with post-processing injectors such as ReShade or SweetFX
  • It is now possible to resize the GUI in vertical direction to use it with low-resolution displays
  • The GUI now groups options by category

Although I’m sure some people were hoping for something more impressive, the GUI changes were necessary to help people who previously could not really use the fix at all in the intended way.

However, the first point might be more interesting than it seems. There is an issue with the keyboard controls that has been in the game since launch. If the player runs diagonally and does not move the camera at the same time, the character might sometimes not roll in that direction, although the input is correctly performed. Although this problem can be mitigated by moving the camera, it can sometimes happen by accident, when you are not thinking about it. Now, the new keybindings to move the character differ on a technical level from those you can bind ingame and I could not reproduce the rolling problem with them, which was reliably possible with the standard controls. Some people also reported that the new bindings fix the problem of sometimes moving without input after exiting lock-on mode. They might also improve other things regarding the input.

However, further testing is needed before I can say that those problems are indeed gone and that there are no unwanted side-effects. If you try them out I would appreciate the feedback.

Dark Souls Mouse Fix – Initial Reception and Update To Beta 1.1.2

The first release of version Beta 1.0 of the Dark Souls Mouse Fix had kind of a slow start on /r/pcgaming, and at first I was a little bit worried that it might get lost in the stream of news about Ryzen, GDC and Mass Effect: Andromeda. But after a few hours it really gained some traction, also thanks to some additional help from other people who spread the news around. Aside from the expected few people who expressed their disdain to even think about playing the Souls games with mouse and keyboard, the initial reaction was quite positive and it is always nice to see that you’ve helped people to enjoy a game more.

There also was valuable feedback for some problems that were not discovered during alpha testing. I did my best over the course the day to fix the ones that were most severe and updated the fix several times accordingly.

Updates:

Beta 1.0

  • Initial public release

Beta 1.1

  • It is no longer possible to accidentally flip the camera and invert the input by looking too far up or too far down
  • The camera no longer suddenly jumps when exiting lock-on/focus mode
  • The mouse wheel can now correctly be bound to any standard action

Beta 1.1.1 – Hotfix

  • Reverts changes regarding the mouse wheel in the previous update, which introduced a bug that caused buttons and keys to not be usable as a hold

Beta 1.1.2 – Hotfix

  • The mouse wheel can now correctly be bound again to any standard action

This should bring the fix to a level on which it should be comfortable to play for most people.

I’ll definitively continue to work on it, as there are a ton of things that can be improved upon, especially regarding the GUI and implementing additional features, such as truly customizable keybindings, including modifier keys. I was also surprised to see people asking for Steam Controller support, because apparently the mouse fix improves the camera movement with it.

However, I cannot say how much time I can put into it in the next few weeks, because I have to take care of a few other pressing things first.

I’ll maybe write another update on unresolved issues and upcoming features, if people are interested.

Dark Souls Mouse Fix

What is this?

This fix makes Dark Souls use raw mouse input without any additional smoothing or acceleration. It offers a flexible binding system, automatic cursor support for the UI, improved targeting and an easy configuration using a GUI.

Overview

Description

Important: This is a beta version. Although it underwent some thorough testing before the first public release, there might still be some issues that need to be addressed. If you encounter any problems see the Contact And Support section on how to get in touch with me

Although there already is a mouse fix for Dark Souls, which did a great job in helping many people (including me) to play the game with mouse and keyboard over the years, it is not an optimal solution. Because it emulates a controller, there are still some issues with sensitivity, apparent negative acceleration and overall sluggish movement. Using the cursor in the UI is also a hassle, because it has to be manually enabled and disabled via keybindings.

Instead of emulating a controller, this fix injects raw mouse input directly into the game’s camera functions, thereby avoiding any additional transformations. It also provides an auto cursor feature which automatically manages the visibility and capture settings of the cursor depending on the current situation.

Features

  • True raw mouse input without controller emulation
  • No additional smoothing or acceleration
  • Flexible options such as individual horizontal and vertical sensitivities for camera movement and bow aiming
  • Allows any action to be bound to any combination of mouse buttons, the mouse wheel or keyboard keys
  • UI Auto Cursor mode that enables and disables the cursor when in a menu or when switching out of the game
  • Improved target switching
  • Includes a GUI for easy configuration
  • Steam Controller support
  • Compatible with DSFix

Instructions

Supported Versions

This fix only works with the latest, fully patched Steam version.

Important: The fix relies on the layout of the executable. Older versions or ones that otherwise have been tempered with probably won’t work. This also means that if the game were to be patched — which is very unlikely at this point — it might break the fix and require it to be updated.

Install

The fix does not make any permanent changes to the system, the game or the configuration of the game and can easily be removed (see below).

  1. Install Durante’s DSFix if you haven’t already
  2. Extract the contents of the DarkSoulsMouseFix.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 DarkSoulsMouseFix.dll. No additional configuration of DSFix is necessary
  4. Start DarkSoulsMouseFixGUI.exe to set mouse setting and keybindings 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:

  • You should hear a Mouse fix loaded message on game launch when the fix is installed correctly
  • If you currently have DSMFix installed, it is not necessary to remove it. Just replace the dinput8dllWrapper dsmfix.dll entry in DSFix.ini with dinput8dllWrapper DarkSoulsMouseFix.dll
  • It is not necessary to unplug the controller if you have one. You can even enable the controller on-the-fly by using the Input Mode Toggle binding (see Configuration)
  • The GUI requires the Microsoft .NET Framework 4.6.1, which should already be installed on most systems. If you are having problems starting the GUI, you can download the required version here
  • I would recommend increasing the FPS limit to 60 in DSFix for the complete smooth experience. Keep in mind that there are some problems with unlocking the FPS though. You can find more information about that on PC Gaming Wiki here

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:

  • You can change settings while in the game by using the Reload Config binding, which is per default set to the '-' key on the numpad. Just change the settings in the GUI as necessary, press save and then use the binding to reload the config ingame. You should hear a Mouse Fix 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
  • Although it is not necessary to bind a standard action when you are happy with the ingame setting, it is strongly recommended to exclusively use the bindings in the GUI of the fix
  • It is not necessary to unbind a key or button in the ingame settings to use it with the fix
  • The GUI also provides tooltips with additional information about a setting

Binding System

The new binding system allows you to bind any action to an arbitrary combination of keyboard keys, mouse buttons or the mouse wheel. Instead of manually selecting a key from a limited set of predefined keys, the new system works reactively. To bind an action, double left click the corresponding box. When the box turns green, press the combination of keys you would like to assign. The combination is set once any pressed keys are released.

You should be able to use almost any keyboard key, independent of the keyboard type or layout. The key names are dependent on the layout currently set in Windows. If you are using an English layout, the key names will be in English, while an AZERTY layout will lead to French names. Bear in mind that the key names are automatically determined by using a Windows function and not all keys have pleasant display names.

A few additional notes on the binding system:

  • Each key pressed before another acts as a modifier for the next one
  • Any key can be used as a modifier key, not just ALT, CTRL or SHIFT
  • There is no limit to how many keys can participate in a combination. You can set a combination involving half a dozen keys if you want to
  • The order you are pressing the keys in is only important during the binding process to differentiate between bindings that involve the same modifier keys
  • To unbind an action double right click the corresponding box

Auto Cursor Mode

The Auto Cursor mode automatically manages the state of the cursor behavior depending on the current situation:

  • It captures and hides the cursor when ingame and not in a menu
  • It releases and shows the cursor when in the main menu, in a system menu or when the window goes into background, e.g. when using alt-tab
  • It overrides all cursor settings in DSFix

Non-Standard Bindings

Non-standard bindings perform actions that usually have to be performed by using a context-sensitive key or a combination of keys. They are provided for convenience as they could also be implemented by using external tools, such as Auto Hotkey. Although they do not allow anything that cannot also be done manually, purists of the game might not want to use them.

Movement Bindings

The keybindings to move the character differ on a technical level from those you can bind ingame. They should fix the problem of sometimes not being able roll when running diagonally and not moving the camera at the same time, which existed in the game since launch.

Input Mode

The input mode specifies the behavior of the fix:

  • Mouse and Keyboard: Enables raw mouse camera and keyboard bindings, deactivates controller input and vibrations
  • Gamepad: Standard controller behavior, disables raw mouse camera and keyboard bindings
  • Steam Controller: Standard controller behavior with the exception that the raw mouse camera is enabled and the right analog stick is disabled

Note that:

  • The Auto Cursor setting is independent of the input mode. For example, it is possible to play with a controller and only use the mouse for menu navigation if you want to
  • The input mode can be toggled with the Input Mode Toggle binding. The toggle order is the following: Mouse -> Gamepad -> Steam Controller -> Mouse -> …
  • You should hear a corresponding sound message when the input mode is changed by using the binding

Additional Information

What You Should Know

Since the fix consists of an executable DLL-File, I could have put any harmful shenanigans in there. You just have to trust me that the file is clean.

If you don’t — and why should you — feel free to use a meta online virus scanner like VirusTotal to verify the file. Be aware however, that because the fix uses “hacking techniques” such as injection and hooking, it could trigger anti-virus software without being harmful.

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.

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

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 fix. Without him, creating the fix 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’ve done would not be worth much.

Contact And Support

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

Version History

Beta 1.4.1 – Hotfix:

  • The GUI no longer loads a local dxgi.dll to prevent conflicts with SweetFX

Beta 1.4:

  • Replaced the binding system with an entirely new one, which allows the binding of arbitrary key combination with almost any key on any keyboard (see Binding System section for details)
  • Added Manual Targeting options that allow the switching of targets by flicking the mouse instead of using a binding (also available in Steam Controller input mode)
  • Added non-standard bindings for Kick, Leap Attack, Dash Only, Roll Only and Auto Run actions (see the corresponding tooltips or the Non-Standard Bindings section for details)
  • Added a custom mouse cursor that should be more suitable for the game. The cursor is enabled by default but can be disabled in the GUI
  • Added audio feedback for certain status changes, such as loading of the mouse fix, reloading the config or changing the input mode
  • Multiple changes to the usability of the GUI, including a revision of the labels and tooltips
  • The GUI no longer loads a local d3d3.dll to prevent conflicts with certain mods/injectors, such as DSPW or SweetFX/ReShade (thanks to SeanPesce for his feedback and research on the issue)
  • The Auto Cursor will no longer enable the cursor and lock the camera when UI elements are shown that cannot be controlled with the mouse, such as subtitles or certain floating messages
  • Fixed a bug that caused the Auto Cursor to not recapture the cursor correctly after having switched out of the game
  • Added a complete initial default config that should be decently intuitive for most player that are not familiar with the game

Beta 1.3:

  • Added preliminary modifier bindings that turn left and right attacks into heavy attacks (see Configuration for details)
  • Made all modifier bindings non-blocking so they can also be used as a modifier in the ingame settings where applicable (see Configuration for details)
  • Added proper Input Mode setting to the config that allows easy switching between mouse and controller input (see Configuration for details)
  • Added experimental Steam Controller support (see Configuration for details)
  • Replaced Toggle Mouse Fix binding with Toggle Input Mode
  • Fixed bug that prevented the number keys from getting bound correctly
  • Fixed bug in the GUI that prevented an action from getting unbound correctly when there was a default binding for it

Beta 1.2:

  • Added option to bind movement to the config. These differ on a technical level from those in the ingame settings (see Configuration for details)
  • Disabled hardware acceleration for the GUI to avoid conflicts with post-processing injectors such as ReShade or SweetFX
  • It is now possible to resize the GUI in vertical direction to use it with low-resolution displays
  • The GUI now groups options by category

Beta 1.1.2 – Hotfix:

  • The mouse wheel can now correctly be bound again to any standard action

Beta 1.1.1 – Hotfix:

  • Reverts changes regarding the mouse wheel in the previous update, which introduced a bug that caused buttons and keys to not be usable as a hold

Beta 1.1:

  • It is no longer possible to accidentally flip the camera and invert the input by looking too far up or too far down
  • The camera no longer suddenly jumps when exiting lock-on/focus mode
  • ~~The mouse wheel can now correctly be bound to any standard action~~

Beta 1.0:

  • Initial public release