Next Generation Emulation banner

Moga Pro Power Triggers not detected

24K views 121 replies 27 participants last post by  tysonggraham 
#1 ·
Hi all, first time poster here :).

I own a Moga Pro Power for about a year, and have been banging my head over those triggers no one seems to be able to make work in windows in HID(B) mode. Tried probably most of the remaping, key emulating softwares but none seem to detect it. Except zeemouse which connects it with Native(A) mode, and can map the triggers to keyboard strokes. So i had a glimmer of hope that i could muster it with mapping the keys to keyboard, and then using vjoy to map the keys to virtual gamepad and go through 360 ce. Alas, it turned out that while triggers work in zeemouse, the left analog stick and the d-pad are connected and cant be used as separate buttons in Native(A) mode, either by moga design or by zeemouse developer choice, and my dreams were crushed :).
One more piece of soft that detects the triggers, this one in HID(B) mode, is the pcsx2 emu with lilypad gamepad plugin, which when mapped it detects the buttons as R2-Accelerator, L2-Brake.
Joy.cpl doesnt see those buttons, but in x360ce under the device tab in device objects they are present, so i would figure x360ce detects those buttons but is unable to map them? Here are some screenshots:



All in all the gamepad sends an event to windows, otherwise lilypad wouldnt see any input. I have also read reports that the triggers work under linux.
so i guess its a driver issue due to laziness/dont care of the developer to release updated driver for windows for their device.
Is there any chance in hell to make the triggers work with 360ce, maybe make the lilipad plugin work with x360ce, or some voodoo with few pieces of soft to make this happen?
Any suggestion is appreciated.
Devs, Im at your disposal for any testing, this bugger cost me too many sleepless nights with no result...
 
See less See more
2
#3 ·
With vjoy + x360ce i managed to map all the buttons in the x360 gui with no problems. I only mentioned that i tried that combo and it didnt suit my needs, whether it works correctly in all scenarios i havent tried, but thats not the issue here.

In your previous message which you deleted, suggesting newer drivers for the controller... As you probabaly checked, they are non-existent.
So the issue still remains, windows receives events from the missing axes but they cant be mapped. So any workaround would be great.
Maybe an option in x360 ce to detect windows events? some libusb workaround for the particular controller? Im not into programming, so im talking out of my ass here :).
But if such or similar feature would be implemented(as i mentioned lilypad plugin can do this with the controller in hid mode) , it would potentialy make x360 ce compatible with all the axes/buttons of wider range of gamepads not having correct/updated drivers for windows.

Thanks for your reply and interest in this issue.
 
#5 ·
Its strange that imo fairly popular controller would have such bad support from the manufacturer.
But thanks to you Moga owners can rejoice, a ray of hope finally. You're my favorite person of the month.
As soon as you implement that function in your test versions, if you see fit you could suggest scenarios to me to try out and i will gladly spend some time testing the feature and give you feedback on it.
Did i mention you're my favorite person of the month ? :)
 
#7 ·
It makes more sense now since you explained it.
Moga people were probably making a wheel but got the wrong molds, and thought "screw it, it will be a gamepad" :) .
One would think its because its an Android controller, but In HID mode triggers arent working in stock Android too, so it really beats me why would they do such a stunt.
But luckily there's always smart people that can rectify not so consumer oriented companies screw-ups.
Cant wait to try the new feature as soon as it is implemented.
Kudos to you for a great piece of software that x360ce is.
 
#8 ·
Update.
I managed to make the triggers work, sort of.I did it by sacrificing the vertical axes of the analog joysticks by remapping them through registry.
Not the most optimal solution, but it does the job for car racing(no need for vertical axes as accelerator brake are on the triggers) ,fighting games like Mortal Kombat X (D-pad can be used for directional control), etc.
In case anyone is interested, this can be done by adding the following registry keys:
In "HKEY_CURRENT_USER\System\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM\VID_20D6&PID_6271" add key named "Axes", under "Axes" add keys "1" and "5", in "1" and "5" add "binary value" and name it "Attributes", right click "Attributes" and modify with load of "FFFFFFFFFFFFFFFFFFFF"(quotations are just to differentiate terms, so dont use them when making the keys/binary values or copy/pasting from here). It should look like this:



Squall, do you have any idea if there is a chance for the axes to be permanently added through registry without sacrificing existing axes? Im kind of stuck here at the moment.
 
#10 ·
Update.
I managed to make the triggers work, sort of.I did it by sacrificing the vertical axes of the analog joysticks by remapping them through registry.
Not the most optimal solution, but it does the job for car racing(no need for vertical axes as accelerator brake are on the triggers) ,fighting games like Mortal Kombat X (D-pad can be used for directional control), etc.
In case anyone is interested, this can be done by adding the following registry keys:
In "HKEY_CURRENT_USER\System\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM\VID_20D6&PID_6271" add key named "Axes", under "Axes" add keys "1" and "5", in "1" and "5" add "binary value" and name it "Attributes", right click "Attributes" and modify with load of "FFFFFFFFFFFFFFFFFFFF"(quotations are just to differentiate terms, so dont use them when making the keys/binary values or copy/pasting from here). It should look like this:



Squall, do you have any idea if there is a chance for the axes to be permanently added through registry without sacrificing existing axes? Im kind of stuck here at the moment.
To make things easier , you can export 2 instances of the "Axes" key from the registry and create 2 .reg files. 1 with the "Attributes" values empty, and the other with "FFFFFFFFFFFFFFFFFFFF" for the values. So you can seamlessly switch between "triggers with vertical joysticks disabled=>standard axes without triggers" by importing the needed .reg file. Windows 8 does this switch on the fly no need for restart.

none that i know of, its a windows limitation of the remapping.
I was hoping there is , but alas. Any other ideas how could this be done through windows to be permanent? Technically it should be possible, i need just suggestion. I don't mind doing the reading and trying to figure it out myself.
I know lot of developers of free apps frown upon questions of the type "When", but i hope it isnt a taboo question for you :)... Could you share your plans and any ETA(if available) on the "Special Case Support" feature for x360ce?
 
#12 · (Edited)
No rush here, been living with this for a long time now :), at least there is some progress with the registry mapping triggers which i hope will make the days of few Moga owners, as workarounds for moga are pretty scarce on the net as i come to find.
Yep, i have seen the post. Great to have some new blood into the project. I also see the new developer isn't sitting idle, loads of great new bugfixes/features ahead.
I wish you great cooperation.

Edit: oh, and i wouldnt have figured the registry thing if you haven't mentioned "Special Case". Isnt directly connected but it lead me to the right info, so thanks for that.
 
#19 ·
Just tried it, with all axes/sliders/buttons for each trigger, and no luck.
Did you implement any fixes in the app that were meant to add "special case support"? Or are we just trying because you're thinking "who knows we might have done something unknowingly and it will start to work" :).
I will mention again the lilypad plugin for pcsxe.Triggers work great on it. I dont know how the relations between developers go here, but maybe some insight from them would help enhance x360ce. Lilypad should be opensource, right?So maybe looking through their code? Thats from the top of my head, like i said im not a programmer and i couldnt possibly know how hard or easy would be to do the things i mentioned.Im leaving that to the smarter ones here . And ill keep on suggesting things that seem logical to me no matter how absurd they might sound to you, thats basically my job as a user on a forum, isnt it :p. In hopes that my triggers that have been neglected by me and never been passionately touched like a real trigger should be, will one day work.
 
#22 ·
Signed up just to chime in here. A long time ago, I managed to get a proof of concept running on Windows that accurately read the analog value of the triggers on both my Moga Pro and my Moga Hero Power. Honestly I haven't given it much thought since, but seeing this thread has convinced me to finish it up and release it. Expect a version that binds to a gamepad and outputs to vJoy within a few days, I'll try to keep you guys posted.
 
#28 ·
Kudos to you badkeming, what a breath of fresh air :). Will definitely try your workaround.

Nice to see that Moga owners slowly are starting to come out of the woodwork and into this thread(which afaik is the only one on the net with some kind of progress done).
Lets put some pressure on those lazy x360ce developers :) , laying on some beach while they should be making us happy no matter the cost on their time and personal lives :p
 
#24 ·
Just tried using your alpha with x360ce. It does seem to work, as x360ce detects every single button on the controller now, including proper values for the triggers. However, there does seem to be some lag between me pressing a button and x360ce, or even windows on the VJoy controller, registering the button as being pressed. When I connect directly to windows (when the triggers don't work), there is no perceivable lag. I'm on windows 8.1 x64 if that helps. Really looking forward to the finished version of your program, as it is the only one that allows me to use x360ce. Keep up the good work
 
#26 ·
Can you try using it in-game and tell me how it goes?
That's a known issue, but it seems to only manifest itself in joystick testers, and not inside of any games. I've noticed the same problem in Dolphin's controller config UI.
It's a low priority fix because it seems to work fine once you're ingame, and I have no idea what causes it.
OMG, I feel so dumb for asking right now. I didn't even check in-game performance after seeing the lag in x360ce. However, as you said, the controller works flawlessly in the actual games with your tool. You are awesome!!! I can't wait for you to release a final version of this. Also, mind if I asked how you managed to get the triggers working, out of curiosity?
 
#27 ·
I'll be releasing the source some time eventually, but in the meantime I'll go ahead and explain it. The controller itself sends the data correctly, but for whatever reason, Windows and whatever drivers it's using just completely ignore the 2 bytes that define the state of the left and right trigger. Fortunately, Windows actually has an API that allows me to read the raw information coming from the device, rather than what's interpreted by the drivers. The Windows API for it is more involved than I felt like getting in to at the time (I wrote the original POC a year ago). I found a library, HIDAPI, that makes it easy to get this data. After that, it was just a matter of passing it through vJoy (whose library is also pretty easy to use).

This is also a good opportunity to explain one of the quirks with my application: You might have noticed that if any application is attempting to read the gamepad (Dolphin is pretty bad about this) you can't attach to it in my application. This is due to limitations in the Windows API that require the device to be completely free before you can read the raw input. I don't know why they do this.
 
#32 · (Edited)
Here's my first alpha. It's quick, dirty, and fussy, but once it's working it's just fine. Enjoy!
Thank you very much badkeming for trying to get this to work. I tried to follow the README.txt by first installing vJoy and configuring it as described the SETUP section. When I tried to connect to the Moga pro controller from the program (shown as BEKEN Android controller), I get the message Unable to connect to device.

Any guess on what's causing that message? Or is there any way I could print some logs from the program if it helps with the troubleshooting? I'm running Windows 10 x64 here, if it helps, and yea I'm aware that it's super new and we aren't expecting much compatibility for it yet.
 
#33 ·
Thank you very much badkeming for trying to get this to work. I tried to follow the README.txt by first installing vJoy and configuring it as described the SETUP section. When I tried to connect to the Moga pro controller from the program (shown as BEKEN Android controller), I get the message Unable to connect to device.

Any guess on what's causing that message? Or is there any way I could print some logs from the program if it helps with the troubleshooting? I'm running Windows 10 x64 here, if it helps, and yea I'm aware that it's super new and we aren't expecting much compatibility for it yet.
Hi. Unfortunately, I too was eager to upgrade to windows 10. I can confirm that I now get the same "Unable to connect to device" error under Windows 10 Pro x64 as you do. The program was previously working flawlessly under windows 8.1
 
#35 · (Edited)
Oops, totally forgot about this thread. I've been running Windows 10 for a while but haven't gotten the opportunity to work on the application much. I'll get right on this.

E1: Okay, ran into the same issue you guys are talking about. Going to spend some time digging into the issue, it smells to me like some new Win10 "feature" is hogging the device.

E2: It looks like HIDAPI might not be compatible with Windows 10. Not sure if there's anything I can do about this. I'll try to look further but it might be the end of the line for this short-lived software if I can't fix it--It's possible to accomplish what this software does directly using Windows APIs, but I simply don't have the time to maintain this without a helper library.

E³: I've got nothing. HIDAPI's error handling for devices that won't open is literally nonexistent (only signal is a pass or fail). Honestly I was already planning to switch to Linux, so I'm not sure how much deeper I'm going to dig here.

E⁴: Looks like I was right. For some ridiculous reason, the System process is randomly taking holds on the controller... There's not a lot I can do about this unless I find something new. Try randomly disabling Windows features and see if the issue is suddenly fixed. I'm going to sleep.
 
#37 ·
All I know at this point is that it's being held by the system process at pid 4, so I certainly can't just kill it and call it a day. It might be possible to open the device if I just change the sharing mode or something. I'll fiddle around and see if I can make any progress.
 
#38 ·
Reposting this, forgot to pack the readme in the zip file...

Bingo! I fixed it. It was a matter of changing one line in the HIDAPI source code and recompiling. Blech. Just had to change the device sharing settings. As an added benefit, this should for the most part remove any issues with connecting to the device if another program is hogging it. Only problem here is that some games will see the controller twice and get confused. Oh well. Here's the updated version. I've also added partial support for multiple controllers by allowing you to select the vJoy device. You can now start one instance of the application for each moga device you have and send them to different vJoy devices for multiplayer games and whatnot.
 

Attachments

This is an older thread, you may not receive a response, and could be reviving an old thread. Please consider creating a new thread.
Top