joystick-diagrams icon indicating copy to clipboard operation
joystick-diagrams copied to clipboard

[Advanced Feature Request] Support chained bindings

Open Tsudico opened this issue 3 years ago • 2 comments

I was reading through issue #39 and saw the following:

I’ve spread out the configuration of my Virpil Throttle over multiple places: the firmware, Joystick Gremlin and MSFS 2020 to get all the functionality I need

I've done a similar thing with my Virpil Constellation Alphas. The left and right sticks did not arrive with the same button bindings so I adjusted them using Virpil's software to make them consistent to be easier for me to remember. This makes it impossible to use the existing template. Compounding the issue, I run my bindings first through Joystick Gremlin so that I can alter some of the buttons to act like keyboard modifiers and virtual mouse before being used by Star Citizen which means Star Citizen doesn't even see the original joysticks but vJoy devices.

My ultimate wish for joystick diagrams would be to support a binding chain like this:

  1. Import the Virpil software configuration (it's XML) to adjust the default bindings in the existing template or if the program is unable to access a pre-defined binding (like Virpil offers), allow users to have modified bindings to the template defaults.
  2. Pass those bindings through the Joystick Gremlin profile to pick up keyboard modifiers and virtual mouse, which changes the bindings from Virpil to vJoy devices (tracked by VID/PID but GUID preferred since vJoy devices have the same VID/PID).
  3. And then apply that to my Star Citizen profile so that I get a complete map of my bindings but using the correct originating devices instead of some generic vJoy device.

The output of which would show me that when used with my "modifier" button of 30 on my left stick, my right stick's button 5 does action X, but without button 30 it does Y.

This means my binding chain would be: Device Template -> firmware modifications -> Joystick Gremlin -> Star Citizen

The previous person's would be similar: Device Template -> firmware modifications -> Joystick Gremlin -> MSFS 2020

I know this is not a simple feature to implement. Nothing I know of allows this sort of tracking though which would really make this program stand out if you could do it.

Tsudico avatar Jun 04 '21 16:06 Tsudico

Thanks for this, I can see the need but would need a lot more users to even begin thinking about this.

The system is moving to a plugin system, so what we're asking for here is interplay between multiple vendors code which could be very tricky.

Also if I add in parsing of virpil firmware files (I assume you're referring to the profile backup files) then I have to support and maintain that integration.

I'll keep this open, but most likely would only get looked at once modifiers are in as that seems far more common right now.

Rexeh avatar Jun 05 '21 13:06 Rexeh

The system is moving to a plugin system, so what we're asking for here is interplay between multiple vendors code which could be very tricky.

If you are moving to a plugin system, it seems that it should be easier, not harder to set up some sort of device binding chain because you can define your plugin interface. As long as the imports to the plugin match the exports from the plugin (for device binding) then it shouldn't matter what order the plugins run. Granted, most plugins likely would be either just export (manufacturer device) or just import (game like MSFS2020 or Star Citizen), but this would allow special plugins such as for Joystick Gremlin, Joy2Key, or a Modify Device plugin to change default bindings to add functionality in between.

I do understand of course that it would require a bit more thought into how the plugin system was done so as to best generalize inputs and outputs.

Also if I add in parsing of virpil firmware files (I assume you're referring to the profile backup files) then I have to support and maintain that integration.

I'm less concerned with adding Virpil (although the profile backups are XML which makes them an easier thing than other manufacturers). I do however think that having a way to change the "default" template without actually requiring you to make your own would be a good low hanging fruit. But that honestly is probably best a separate issue.

I'll keep this open, but most likely would only get looked at once modifiers are in as that seems far more common right now.

That makes sense and thanks for even considering it.

Tsudico avatar Jun 05 '21 22:06 Tsudico