Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Input Repeater doesn't work with VJoy Axis Remaps #245

Open
treydeal opened this issue Dec 28, 2024 · 16 comments
Open

Input Repeater doesn't work with VJoy Axis Remaps #245

treydeal opened this issue Dec 28, 2024 · 16 comments
Labels
resolved / verification needed The issue has been resolved and tested but needs additional verification

Comments

@treydeal
Copy link

Hi again! I've got an axis on my joystick set to a relative VJoy axis, and as a workaround in order to set this axis in a game, I have another button on the joystick (with a Conditional combination I'd never make use of, so it's not like I'm losing a real functional output) that does nothing but a macro of -1 / 0 / 1 on the same VJoy axis a couple times. I thought the repeater may not work because it's relative instead of absolute, but absolute seems to have the same issue when tested with another joystick axis to absolute VJoy remap...I can see where the "real" joystick axis is being pulsed by the repeater when watching the Input Viewer, but it doesn't actually pulse the VJoy output axis when it repeats. This would be wonderful to have fully functional if possible!

Just tested and confirmed present on version 13.40.16ex m50 - let me know if I can get any further info for you!

@muchimi
Copy link
Owner

muchimi commented Dec 28, 2024

If I understand this correctly, you are looking for a way to set a value on an output vjoy using another button?
Conditions may be a challenge depending on the wiring and the particular setup, however I have added to vjoy remap a relative mode to the set axis mode that lets you add/remove a set value from an existing VJOY device, thus mimicking I think what you are trying to do without conditions. This will be in the next patch.

image

I'm not sure if this helps or not.

It would be helpful to me to see your profile XML to see your exact configuration and how you've set things up conditions wise.

@muchimi muchimi added the researching More research shall go into this label Dec 28, 2024
@treydeal
Copy link
Author

treydeal commented Dec 28, 2024

Apologies, let me try to explain more clearly - I kinda crammed my issue and my workaround into one thought. So let's say I have my joystick's RZ axis configured with a VJoy Remap, and the remap output is the RZ axis on a VJoy device. This all works exactly as expected so far. So I'm ready to bind that axis in a game - since I don't want the joystick's real RZ axis being bound, I'd use the Input Repeater from the Tools menu in Joystick Gremlin.

The expected behavior here is that I'd be able to move my joystick's RZ axis, and the Input Repeater would repeatedly move the VJoy RZ axis for several seconds after, giving me a chance to bind VJoy RZ to the game. However, no VJoy RZ axis output happens at all as a result of the Input Repeater.

What I mentioned with binding the button is my current workaround for the issue - basically I have to bind my own "repeater" function to move the VJoy RZ axis, since the Input Repeater doesn't repeat the VJoy RZ movement when I move the physical joystick's RZ.

Curiously, if I do a VJoy Remap on a button, something like Set Axis Value to 1 on press, and Set Axis Value to 0 on release, this does get repeated as expected by the Input Repeater, but if I do a VJoy Axis to Button - even though the Input Viewer shows that the physical joystick's axis is being repeated into the Range Min to Range Max region while the Input Repeater is cycling - I don't get any VJoy button output. All of this leads me to believe that the Input Repeater seems to ignore physical joystick axes as an input source, even though the Input Repeater appears to be cycling through the physical joystick's axis range when watching the Input Viewer's values.

Hopefully that helps clarify the issue - I'm happy to post an XML, but outside of the Input Repeater not repeating the VJoy outputs, the XML is all working as expected!

@muchimi
Copy link
Owner

muchimi commented Jan 18, 2025

I think this one was resolved recently with the pass on the Input Repeater. One discovery was that non-sequential axes were not loading correctly (GremlinEx assumed it was sequential - my bad). Can you see if the issue still persists in m65?

@treydeal
Copy link
Author

treydeal commented Jan 18, 2025

Just checked - issue still seems to be occurring for me. Buttons work great through repeater, but axes have no vjoy output:

vjoy-repeater.mp4

Edit- Here's another clip showing the type of workaround I had to create in another profile:

vjoy-repeater2.mp4

@muchimi
Copy link
Owner

muchimi commented Jan 19, 2025

The input repeater was skipping certain axes.
Please see if the issue has been resolved as of m66.
https://github.com/muchimi/JoystickGremlinEx/releases/download/13.40.16ex_m/joystick_gremlin_13_40_16_m66.zip

@muchimi muchimi added resolved / verification needed The issue has been resolved and tested but needs additional verification and removed researching More research shall go into this labels Jan 19, 2025
@treydeal
Copy link
Author

Should I test with specifically m66? I just tested with the newest build available, m66a, and the issue still seems to persist. I made a new profile with the same type of remap as the videos, both with X remapping to VJoy 1's X and RY remapping to VJoy 1's RY.

@muchimi
Copy link
Owner

muchimi commented Jan 20, 2025

Are your VJOY inputs sequential or do you skip some?

@treydeal
Copy link
Author

I’m not sure what you mean by sequential - are you talking about the device IDs as vJoyConf sees them? I have device 1 and device 2 enabled there, all others disabled.

@muchimi
Copy link
Owner

muchimi commented Jan 20, 2025

I'm sorry - I completely did not understand what you wanted to do. The input repeater functionality is not what I think you are looking for.

What I think you are looking for is to use the remap function to bind to VJOY, then use that VJOY as input to do something else in the same profile?

Example: hardware_input -> vjoy A -> vjoy B?

@treydeal
Copy link
Author

Not for this use case, no - I want to bind a vjoy axis in-game, without it also recognizing the physical device’s axis during binding. I want to move the physical axis, have Input Repeater output the vjoy axis mapped to that physical axis, while I click the action in-game I want bound to the vjoy axis. Once it’s bound I’ll turn Input Repeater off until I need to bind a vjoy remap in-game again.

@muchimi
Copy link
Owner

muchimi commented Jan 21, 2025

Sounds like what you are looking for is what HIDHIde is supposed to do for you: hide physical input.
The way it works is HID hide is a bit like a firewall for hardware input devices, and you tell it which process can see the hardware, and which cannot. You can hide the devices completely from a game, but let the GremlinEx process see them.

So what happens is when you run the game, it only sees the vjoy device.

You can ping the general channel on discord and either I or someone else will guide you throught his. The setup of this is covered in the manual as well, although HIDHide is a bit like voodoo magic.

I think this is what you're looking for. It is not possible to "hide" one device from a process without HIDHide.

@treydeal
Copy link
Author

treydeal commented Jan 21, 2025

I feel like there's still some confusion here...I'm familiar with HIDHide, but I don't want to hide any of my physical devices. I'm trying to use this:

Image

...where you can turn that on, push a button that you've got a vJoy Remap on, and Input Repeater will "fire" that button remap over and over for about 5 seconds or so. So let's say I do a vJoy Remap for my physical device's Button 1 to a vJoy device's Button 1. With Input Repeater turned on, I can push my physical button 1, then click whatever function I want to bind in the game, and while Input Repeater is still firing vJoy Button 1 for a few seconds, the game will see vJoy Button 1 as what I want to bind for that function. Once I have all of those mapped, I can go back and turn Input Repeater off and just play.

All of the above - regarding physical buttons - works so far exactly as expected, but if I make a vJoy Remap for any axis - we'll say my physical device's X axis, and I do a vJoy Remap for that to a vJoy device's X Axis - when I move my physical X axis, the Input Repeater doesn't actually repeat it like it does for the button. The Input Viewer makes it look as if it's trying to fire that axis, but nothing is actually happening on the vJoy device.

I can try to make a more complete video of the issue if that's helpful to try to show what I'm doing, with the physical control shown and have some captions and callouts for where exactly the issue is, but the problem I'm trying to bring attention to is that the Input Repeater has at some point broken when you're trying to have it repeat an action that you've bound to a physical axis. This used to work, but now it doesn't.

@muchimi
Copy link
Owner

muchimi commented Jan 24, 2025

Thank you for the explanation. I think what happened here is the way events are tracked changed.
Repeater was not a module that was updated for this new tracking, so it wasn't finding the event, so not "repeating" it.
I am making a change that I think will address this in the next patch.

@muchimi muchimi added Resolved in upcoming patch resolved / verification needed The issue has been resolved and tested but needs additional verification and removed resolved / verification needed The issue has been resolved and tested but needs additional verification Resolved in upcoming patch labels Jan 24, 2025
@treydeal
Copy link
Author

Thanks for the new build - I tried out 69 and 69a on new profiles, but it looks like the behavior of Input Repeater is unchanged...I can see my vJoy Remaps are working correctly when I'm moving the input myself, but Repeater doesn't activate the vJoy Remap during its repeating cycle. Physical button presses are still repeated when configured with vJoy Remaps for Button or Button to Axis, but phsyical axis activations are not repeated when configured with vJoy Remaps for Axis or Axis to Button.

@muchimi
Copy link
Owner

muchimi commented Feb 9, 2025

Current pre-release is m71.
I wanted to make sure that you are running the profile when using the repeater feature as there will of course be no VJOY output at all unless the profile is running to generate it?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
resolved / verification needed The issue has been resolved and tested but needs additional verification
Projects
None yet
Development

No branches or pull requests

2 participants