headkaze Posted February 1, 2010 Posted February 1, 2010 VJoy Virtual Joystick is a driver and icon tray application for converting keystrokes into joystick input. It supports two virtual joysticks as well as command line control. It has signed drivers and supports 64-bit systems such as Vista and Windows 7.Visit VJoy WebsiteVJoy Virtual Joystick Driver v1.2 released!- 2 Joysticks- 8 Axes with a range of -32768 to 32767- 32 Buttons- 4 POV'sVJoy SDK v1.2 is now available for using VJoy in your own applications. There are many real world applications using VJoy right now such as a Steel Batallion Controller, replacing axes for Flight Simulator, head tracking, using Wiimotes and Kinect to control games or even to interface with robots. Some of the things people are using VJoy for are pretty amazing! Check out the new VJoy SDK v1.2 which includes source code to control the drivers in languages such as C++, C#, VB.NET, Delphi and VB6.Download VJoy SDK v1.2 1 Quote
bkenobi Posted February 1, 2010 Posted February 1, 2010 NICE!!! So, does this more or less replace PPJoy in functionality? Thanks for the contribution! Quote
headkaze Posted February 1, 2010 Author Posted February 1, 2010 NICE!!! So, does this more or less replace PPJoy in functionality? Thanks for the contribution! It does more or less do what PPJoy's KeyToJoy functionality but it has some advantages even though a new version of PPJoy has been released recently with 64-bit support.- VJoy has signed drivers- It has a much nicer program that runs in the icon tray- It supports key blocking (although unfortunately Vista and Win7 contains a bug that makes this not work)- No more having this unsightly floating app that you have to try and hide and kill off later- No annoying virtual joysticks to setup and install - you get two of them ready to goIf you want parallel port to joystick support you will need to get PPJoy instead.BTW Coding drivers is a PITA! Quote
bkenobi Posted February 1, 2010 Posted February 1, 2010 I've never liked how PPJoy worked (needing to stay active the way it does). That's one reason why I've found other ways to do things whenever possible. This will be nice going forward!Btw, is there a way to use a mouse as input? I'm thinking about how I used a GlovePIE script to convert mouse movement into an analog axis primarily. Just curious. Quote
wubble Posted February 2, 2010 Posted February 2, 2010 Fantastic, this will be very useful to a lot of people Quote
headkaze Posted February 2, 2010 Author Posted February 2, 2010 Btw, is there a way to use a mouse as input? I'm thinking about how I used a GlovePIE script to convert mouse movement into an analog axis primarily. Just curious.There is a program I was working on called "XLaunch" which was going to be able to convert any type of input to any other type of input. It orignally used PPJoy but obviously now would make use of my own drivers. Unfortunately now that I'm working on my next game with Flash (this time for the iPhone) I don't see me finding much time to finish it. I think XPAdder would be nice to add support that XLaunch and VJoy were aiming for. One program for all your input translation needs. Going from joystick to keyboard is easy, but writing drivers to go the other way is not. Anyway one day I might finish it, who knows? Quote
bkenobi Posted February 2, 2010 Posted February 2, 2010 It's cool as is. There's no reason to defend your programming decisions. You made the program the way you wanted it, so you should stand by it. Nice work! Quote
headkaze Posted February 2, 2010 Author Posted February 2, 2010 It's cool as is. There's no reason to defend your programming decisions. You made the program the way you wanted it, so you should stand by it. Nice work! Well actually I had planned to make XLaunch before VJoy and then realised it was pointless unless there was a 64-bit driver for the KeyToJoy. Also SF IV came out and it only supported one keyboard so that was another driving force originally. Then just as I finished VJoy another solution appeared, and then just as I decided to release VJoy "free for non-commercial use" I find the programmer of PPJoy who orignally said he wasn't going to continue development released a 64-bit version of PPJoy.So really it's been alot of bad luck. I spent several weeks writing VJoy, and even nearly lost my PC in the process with a nasty blue screen on bootup. Since drivers are written in kernal mode they don't crash - they BSOD. So then I smartly moved to using a Virtual Machine for all my testing. Then I had to write the JoyToKey app.. well it was alot of work so I wanted to see if there was commercial interest which is how the drivers got signed by Ultimarc. In the end though with all the bad luck I just decided to release it and hope there was some commercial application down the line. In the end it got released for the benefit of the community so I'm happy if people get some use out of it! Quote
Tom Speirs Posted February 4, 2010 Posted February 4, 2010 Ben,Could be wrong here, but Im pretty sure the GameEx key blocking works on Vista. I think I tested the feature on it. Try it. Quote
headkaze Posted February 4, 2010 Author Posted February 4, 2010 Could be wrong here, but Im pretty sure the GameEx key blocking works on Vista. I think I tested the feature on it. Try it.I researched this quite a bit and I'll post the results here. You will have the same problems with GameEx blocking certain games in Vista and Win7.I have created a set of binaries to prove that there is some sort of bug in Vista / Win7 relating to WH_KEYBOARD_LL global key hook. The bug seems to only effect DInput7 and not DInput8. I have not tested other versions of DInput.You can download my test applications @ DInputBlockTest.zipInside Vista/Windows 7:1. Launch DInput7.exe and DInput8.exe2. Press the SPACE bar and you will see the apps output that you pressed SPACE to the console3. Now launch KeyHook.exe4. Press the SPACE bar and you will see the space key is now blocked in both DInput7.exe and DInput8.exeNow close everything by pressing ESC1. This time launch KeyHook.exe first2. Now launch DInput7.exe and DInput8.exe3. Press the SPACE bar and notice that only DInput8.exe's keys are being blockedHere is a screenshot showing how DInput7.exe does not have it's keys blocked.Running RawInput.exe shows that WH_KEYBOARD_LL does indeed block Raw Input / WM_INPUT messages in XP / Vista / Win7.You can run these apps in either order on XP and the key hook will always block the input.The problem seems to be version checking code in DirectInput...I had a look and it is a bug in DInput.dll's version checking code. On OS's with a major version higher than 5, the flag to use Raw Input processing isn't set. When that flag isn't set, low-level hooks are installed to monitor both mouse and keyboard input. XP and it's major version of 5, sets the raw input flag so it uses that to get device data instead of the hooks, which are never installed.So in other words because of this version checking bug it's using a low-level hook which is inserted above all other keyboard hooks so you can't block input. When it uses Raw Input processing in XP as it should you can successfully block input. The conclusions we made is the only way to fix this would be to install the global keyhook after the game is launched or hack the DInput dll's to always get a version number of 5 from GetVersion/GetVersionEx. Quote
Tom Speirs Posted February 4, 2010 Posted February 4, 2010 No worries, just worked in my tests. Obviously some stuff works some stuff doesnt, and what I tested did.PS: In my last tests it wasnt blocking input but I managed to get round it with code. Its probably not fool proof but it worked. Quote
headkaze Posted February 4, 2010 Author Posted February 4, 2010 No worries, just worked in my tests. Obviously some stuff works some stuff doesnt, and what I tested did.Yeah it depends on how the app is reading key input. I did find that even with DInput8 it sometimes has some issues blocking input too, not sure why (could just be a permission issue there or the same problem I can't remember). If a game uses Raw Input to read input (like MAME) there are no problems. The main problem seems to be with DInput7.So anyway the key blocking in VJoy should work for some games.. I should probably change the docs to say that.I know it was bold of me to say that Vista and Win7 contains a bug, but I did have the evidence to back that statement Quote
Tom Speirs Posted February 4, 2010 Posted February 4, 2010 Yeah it depends on how the app is reading key input. I did find that even with DInput8 it sometimes has some issues blocking input too, not sure why (could just be a permission issue there or the same problem I can't remember). If a game uses Raw Input to read input (like MAME) there are no problems. The main problem seems to be with DInput7.So anyway the key blocking in VJoy should work for some games.. I should probably change the docs to say that.I know it was bold of me to say that Vista and Win7 contains a bug, but I did have the evidence to back that statement I added above I did have an issue with it not blocking and I made some updates to GameEx for this which seemed to work. Might be a different issue though. I think its worth at least checking out. Quote
headkaze Posted February 6, 2010 Author Posted February 6, 2010 I added above I did have an issue with it not blocking and I made some updates to GameEx for this which seemed to work. Might be a different issue though. I think its worth at least checking out.Do you have any specific details on the updates needed to make it work? Quote
Tom Speirs Posted February 6, 2010 Posted February 6, 2010 Do you have any specific details on the updates needed to make it work?I can give you the code. First of all I just meant try it within GameEx, see if it does work, nothing to lose. Its likely im wrong but no harm in trying. Quote
headkaze Posted February 6, 2010 Author Posted February 6, 2010 I can give you the code. First of all I just meant try it within GameEx, see if it does work, nothing to lose. Its likely im wrong but no harm in trying.I don't have GameEx setup on my Win7 machine yet.. if you want to test it download DInputBlockTest.zip and run RawInput.exe, DInput7.exe and DInput8.exe .. launch GameEx trying to block space bar (VK 0x20).. if no output goes to the console then it's successfully blocked it. Quote
headkaze Posted October 15, 2012 Author Posted October 15, 2012 VJoy Virtual Joystick Driver v1.2 released!- 2 Joysticks- 8 Axes with a range of -32768 to 32767- 32 Buttons- 4 POV'sVJoy SDK v1.2 is now available for using VJoy in your own applications. There are many real world applications using VJoy right now such as a Steel Batallion Controller, replacing axes for Flight Simulator, head tracking, using Wiimotes and Kinect to control games or even to interface with robots. Some of the things people are using VJoy for are pretty amazing! Check out the new VJoy SDK v1.2 which includes source code to control the drivers in languages such as C++, C#, VB.NET, Delphi and VB6.Download VJoy SDK v1.2 1 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.