OS: Debian GNU/Linux 12 (Bookworm)
Hardware: Thrustmaster T.16000M FCS HOTAS
Version: 7.10 Hotfix 3 (538965)
Modified: No
Game start: Young Gun
Configuration changes: See reproduction steps below
When the left mouse button is released while pressing/holding down a joystick button during flight, a context menu for the selected target is triggered, with the pre-requisite that the left mouse button is not bound to the Steer Towards Cursor control. In general, it looks like any mouse button that is bound to the Target Object (Mouse) control and not to any other will behave this way. Ordering of the press/release sequence is important (see reproduction steps) - mouse down, joystick button press, mouse release.
This being a little bit of a bizarre bug, to provide some context on how I ran into it - I have been trying to improve my control schema with the HOTAS, and ended-up experimenting with a couple of external applications - AntiMicroX, xbindkeys, and xdotool. The AntiMicroX application has allowed me to simulate a mouse-click on the center of the screen using one of the throttle (D-Pad Right) buttons. The other two I have used for some macro functionality to simulate a couple of missing controls/bindings/behaviours (like F2-like rename ship binding, calling up mission offers etc). So basically the AntiMicroX was effectively sending in a same-ish sequence like listed in the reproduction steps (both mouse and joystick button press).
Just to emphasize - the reproduction steps listed below have been 100% reliable for me even without the above-listed applications running, with pure vanilla game, straight out of fresh new game. I have checked multiple times to ensure that none of the above applications are running for reproducing the problem (ps aux and all). I have gone even as far as to fully reboot the machine prior to testing (just in case something is borked on a deeper level) after applying all pending upgrades. If you happen not to be able to reproduce the problem on your side, I will happily start with an unconfigured X4 game from scratch to see if I missed any other relevant configuration steps (heck, I could even create a new account on the machine just to be sure).
Reproduction steps:
- Connect the Thrustmaster T.16000M to the computer.
- Connect the Thrustmaster TWCS to the computer.
- Launch the game.
- Configure the controls as follows:
- Configure the Thrusmaster T.16000M to be the joystick number one, and Thrustmaster TWCS to be joystick number two.
- Reset controls to Default - Keyboard & Mouse / Controller profile.
- Under General Controls, unbind Steer Towards Cursor binding from the left mouse button.
- Under General Controls, unbind the joystick button you will be using for testing. For example D-Pad Right on TWCS (in loaded profile it should not be assigned to anything already).
- Set the Gamepad Mode to Off
- Start a new game, skip the prologue sequence.
- Get into the ship, fly out of the station, and find some ship that can be targeted, then pause the game (just to test in peace).
- Click once on a target with left mouse button to select it.
- Hover the mouse cursor over target, press the left mouse button down, then press a button on joystick (D-Pad Right) while still holding the left mouse button down, release the button on joystick, and finally release the left mouse button as well.
- Context menu for the targeted ship will pop up.
- From what I can tell, the important thing is that the joystick button has been pressed and released while the mouse button has been pressed - so there can be some variations in reproduction steps so long as that part is respected.
- Reproduction step require that the Gamepad Mode is Off or Only with Controllers. I noticed that a small mouse icon just under the speed indicator/FLR 0 seems to pop in and out of existence when doing this type of joystick/mouse combo.
- If the Gamepad Mode is set to For all Controllers/Joysticks, issue cannot be reproduced. What is interesting is that in this mode the little mouse indicator icon from above does not flicker in and out.
- If you hover the mouse cursor over selected target, then lift the mouse off the mouse pad surface while still managing to keep the cursor on top of target, you will reduce number of mouse events generated. In this set-up you can make sure that only the mouse click (and not movement) events are registered. In this instance it is clearly visible that the mouse icon under the speed meter pops back into existence when the mouse button is released - so maybe something accidentally gets carried over in state when that happens (this is just me making huge assumptions about your internal code, sorry if it sounds like rambling
)?