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.
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.
- 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.
- 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.