muchimi / JoystickGremlinEx

Modified version of Joystick Gremlin to add features I wanted to have but were difficult to do as just a plugin, plus I wanted to run this as 64 bit and on a more current version of Python/QT.
GNU General Public License v3.0
33 stars 6 forks source link

Loop #114

Closed Raz0rLegend closed 1 week ago

Raz0rLegend commented 1 month ago

Hey ! i use your software everyday to play StarCitizen. I use it with hidhide to hide my proper hardware and have only the vjoys.. Starcitizen is capricious...

But because of my wireless keyboard and mouse, it looks like there's a wake up system which delete my joys too. Atm when it happens, i need to unhide, close JG and open JG again, is there a way, to maybe "F5" the hardware without any close ?

Thanks in advance !

image_2024-09-06_122028183

image_2024-09-06_121954065

muchimi commented 1 month ago

Thanks for the report. The keyboard and mouse don't report through the joystick interface, so there is no reason, on the surface, that the keyboard/mouse, wireless or not, should (1) report as a device change [multiple keyboards/mouse only show as a single device] (2) vjoy devices don't get shown or hidden.

I wanted to verify first that you are running the latest HID Hide (currently 1.5.230) and that this is the most current JGEX is running as an exclusion from HID Hide in the applications (it may require being re-added when a version change occurs).

Check verbose in options, clear all the other detailed verbose checkboxes to prevent flooding of the log unless the info we're looking for is not there. This enables various levels of detailed reporting as to what JGEX is doing and seeing.

When your keyboard/mouse connect, see what JGEX is doing in terms of device detection. I'll look on my end again to see if I can duplicate with a Bluetooth keyboard.

There is a potential for a logic bug here (VJOY is no longer loaded after a wireless change). In general, a device change that occurs at runtime is asking for trouble because it changes states and is not recommended, so there is also the question of why using a wireless keyboard should matter at all in the first place - is it reporting as completely new device - etc - etc.

We can start with the log file in verbose mode and see if anything happens there as that will list every device JGEX sees (or does not) and it should show the device connection (or disconnection). That will be a good starting point.

HID Hide should not impact this at all provided JGEX is excluded from filtering. This said, HID hide may also have some problems if it sees a new device that wasn't there before as it may not hide it, or it may hide it, which would in turn cause JGEX to not see it.

One thing I noted is you don't have device hiding enabled in HID HIde so the screenshot you show effectively disables HID Hide from the picture.

SC only sees the first 3 or 4 joystick devices (3 I recall but I don't know if it's changed recently with 3.24) - the only 3 it should see would be the first 3 vjoy devices you have setup as output.

To summarize: (1) provide or look at the JGEX log file in verbose mode to see if anything weird shows up there - including an error or warning (2) make sure JGEX is on the excluded list in HID Hide's application tab (3) enable HID hide device hiding (bottom checkbox on HID Hide) (4) verify VJOY monitor shows the correct expected output (that will verify JGEX is sending output to VJOY) [test this outside of SC] (5) you can test HID Hide by running joy.cpl from the run box in Windows - that will bring up the joystick list Windows can see, thus what SC can see. The key here is to not test this in SC because that can take forever (been there, done that).

muchimi commented 1 month ago

I did a slight behavior change in m22 today to address sleeping devices. Download RC m22 and see if it helps (m21 is still available for now in case m22 totally breaks although I tested this today and it didn't - by I know what it does on my box and what it does in the wild - two different things!).

The general idea: a new option is added to tell JGEX to ignore device changes at runtime. That is now enabled by default. The theory is a device that goes to sleep will not disrupt the profile and, when it reconnects, will pick up where it left off.

The downside is if a device is not detected (offline or sleeping) when the profile starts, it won't be usable until the profile is restarted or reloaded because a new connection won't be handled.

One way to look at it is the devices have to be visible in the tabs before the profile starts.

Raz0rLegend commented 3 weeks ago

I'm using the m22 right now.. It's the only one which doesn't bring an error a the launch.

image

I downloaded your last update, but this error is there.

image

Raz0rLegend commented 3 weeks ago

As we said, i'm using the last one of HID. The version is the 13_40_15_m2_5 image

Raz0rLegend commented 3 weeks ago

The solution i find to make works everything is the untick the hiding when the game is launched. As this, no issue.

muchimi commented 3 weeks ago

m2 hotfix 6 (updated zip file) has a number of fixes it that will address some startup issue although it doesn't do much for the VIGEM pieces.

The error in your earlier screenshot looks to be linked to a missing DLL, or an incorrect DLL, when that library tries to load, so I assume you don't have it installed or it may be a different version from what it's looking for. I'll look into the code today to see if this error can be handled better when it comes up.

Do you have VIGEM installed, and is so, which version? That will help narrow down the issue.

Raz0rLegend commented 3 weeks ago

The problem is I don't know VIGEM, it's maybe the issue. Isn't it ?

I'll try to dL it and I do you a sitrep.

muchimi commented 3 weeks ago

Also one more request - please include the log.txt located in the Joystick Gremlin Ex user folder (this is the same folder as where your profiles are located/saved by default). That will give me the rest of the exception.

Try the pre-release version as well here: https://github.com/muchimi/JoystickGremlinEx/releases/tag/13.40.15ex_m2

You don't need VIGEM - this is only needed if you want to output to a virtual gamepad for games that only use gamepad input like GTA or the like.

Raz0rLegend commented 3 weeks ago

Soon as possible ! Just so u know, Im playing star citizen.

muchimi commented 3 weeks ago

I added a bit more "catch-all" code around VIGEM in general. That will be in hotfix 7 probably later tonight as I go through the issues reported today.

Raz0rLegend commented 3 weeks ago

With the version you linked me it's the same issue.

image

Raz0rLegend commented 3 weeks ago

system.log

Here for the system log

Raz0rLegend commented 2 weeks ago

because of you, i resolved all my issues ! :)

New issue this time. I set an axis on the first vjoy, no response from the gremlin...

image image

I'm on the new 13.40.15ex (m4.4)

Raz0rLegend commented 2 weeks ago

On the past version, it works perfectly !

image

image

muchimi commented 2 weeks ago

Hmm, I am not able to duplicate it. Here's a similar setup in m4.5 (it's possible there was an earlier bug). I'll post hotfix 5 soon (tm). image

Raz0rLegend commented 2 weeks ago

I'll investigate thanks !

Ps : nice set 😊

muchimi commented 1 week ago

Marking this resolved pending new information. Current release: https://github.com/muchimi/JoystickGremlinEx/releases/download/13.40.15ex_m4/joystick_gremlin_13_40_15_m5_1.zip