Menu

My Issues & Suggestions

blackwind
2020-08-17
2020-09-09
  • blackwind

    blackwind - 2020-08-17

    Hey,

    Love your program! Here are a few issues and suggestions I came up with:

    1.) /load, as of the current version, appears to do nothing. Specifying a profile filename that exists and is located in the default profiles folder just loads an empty profile even when I order my command-line arguments as the readme suggests.

    2.) Even if /load worked, it would run in a separate instance. The purpose of /load, I assume, is to change profiles on the fly, so perhaps another parameter, /hotswap, could be added to load the profile in the currently running instance. Alternately, hot-swapping could be the default, and /new could open a new instance for the rare cases that would be useful.

    3.) With the ability to operate on the currently running instance, /stop and /exit should be added.

    4.) /minimize shows the program window briefly before minimizing. It'd be great if that didn't happen.

    5.) I figured out some of the trickier functionality after lots of experimentation, but stuff like calculators and timers should definitely be added to the readme. Their usage isn't the most intuitive.

    6.) In Windows, you're supposed to write configuration data to %APPDATA% ("C:\Users[Username]\AppData\Roaming") and never ever to Program Files. The default profiles folder should be "%APPDATA%\Virtual Controller" instead of "C:\Program Files\Virtual Controller\Profiles".

    7.) Quick Bind works well in DirectInput mode, but always immediately assigns Z Axis before I can hit a button in XInput mode. Seems like a bug to me. If it matters, I'm using an Xbox One controller.

    8.) XInput provides access to XInput devices' Guide button (the center Xbox logo button on Xbox controllers). It'd be great if the program supported this button, as it'd be the ideal method of switching between virtuals.

    9.) My biggest problem with the program is that I'm using it to swap between and control vXboxes with a physical Xbox controller, and there's no lock mode for gamepads, so all my button presses are registered by the physical AND virtual device. I'm assuming lock mode isn't possible via the XInput or DirectInput APIs or you would've already added it. Is there any sort of workaround I could use to drop/ignore physical button presses when they're currently bound to a virtual device?

    Thanks!

     
  • VIRTUAL

    VIRTUAL - 2020-08-20

    1-2) "/load" works for me. More data is required for analysis.
    2-3) For this, an internal device "Program" was created.
    4) For this I need to rewrite some of the initialization code. Why do you need this?
    5) Detailed documentation is my weak point.
    6) I like to keep all files in one place (it helps a lot when uninstalling programs + simple transfer of configuration to another computer). What are the benefits of storing data in AppData?
    7) This is a error. Fixed this bug recently (1.0.7.2).
    8) I don’t know how to do it through SharpDX.
    9) https://sourceforge.net/p/vjoy-controller/discussion/general/thread/486ba7d879/

     
  • blackwind

    blackwind - 2020-08-24

    1-2.) Happy to provide any additional data you request, but I've since read in another thread that, according to you, /load is broken in v1.7.0 and a prior version should be used if you need that functionality. I can confirm v1.7.2 is no different. A simple "/load vXbox1.vcd" with no other parameters still just opens an empty profile.

    2-3.) My use case is to launch Virtual Controller, exit Virtual Controller, and switch between profiles using AntiMicro, my existing gamepad mapping tool. Although the "Program" device would allow profiles to be switched and enabled/disabled, it doesn't (and can't) allow me to launch Virtual Controller only when I need it running.

    4.) Borderless windowed mode for games. Launching Virtual Controller displays Virtual Controller over top of my game briefly before disappearing, which isn't the end of the world, but is annoying nonetheless.

    6.) In Windows Vista and higher, UAC prevents writes to Program Files unless a program is run as Administrator. Any files written to system directories such as Program Files are transparently redirected to "%LOCALAPPDATA%\VirtualStore". Because Virtual Controller runs as Administrator, it's not affected by this limitation, but Microsoft developer documentation still requests you write to %APPDATA% as I suggested. For users, the benefit of this is that, if their account is stored on a network, their Virtual Controller profiles (and all other files placed in %APPDATA%) automatically roam to each PC they log into.

    See here for a full rundown: https://www.codeproject.com/Articles/17968/Making-Your-Application-UAC-Aware

    7.) I confirm this bug is now fixed, but I recommend setting a default deadzone for controllers to 20% instead of 0%. Even though the triggers aren't interfering with Quick Bind anymore, if my sticks are even a nanometer off center, they get picked up by Quick Bind now instead. Setting deadzone to 20% fixed that, and I think it's a reasonable default.

    8.) Apparently SharpDX doesn't have this functionality and the project is no longer maintained, but someone suggested how it could be added here: https://github.com/sharpdx/SharpDX/issues/1074

    9.) Would still love to see an official, built-in solution someday, but thanks for the pointers in the meantime!

     
  • VIRTUAL

    VIRTUAL - 2020-09-04

    1-2) More data. I have tried creating a cmd file in the root folder with content:
    VirtualController.exe /load WalkBtn.vcd
    and it works great.

    4) Why do you launch the Virtual Controller after the game, and I always launch it before the game? I can make it so that the main form is minimized by default at startup, but this gives a different visual effect - at startup, make the form "not minimized" (if there is no "minimize" flag).
    6) As far as I know: the virtual controller does not work with administrator rights (by default). The Profiles folder does not require administrator rights. %APPDATA% is hidden from normal user, I don't like that.
    7) Currently: 5% dead zone for any axis-type controls.
    8) This is just a suggestion, no future code. I am not ready to investigate this for the theoretical addition of just one button.

     
  • blackwind

    blackwind - 2020-09-04

    1-2.) I'm not sure what other data I can provide. I'm using the installed version, not a portable version, and I call VirtualController.exe using the full path which should make no difference. Whether I do it from a command prompt or AntiMicro, VC opens up with an empty profile. If it's working for you, that makes no sense to me whatsoever.

    4.) Just because I only want it running when I need it running. Your proposed solution sounds like a sensible one, I'd be in favor of that change.

    6.) Fair enough. Just figured I'd pass along that tidbit as a fellow developer, but it doesn't bother me personally, as I immediately symlinked the Profiles folder to %APPDATA% when I noticed you were writing to Program Files.

    7.) My configuration defaulted to 0%, which may be because I started a profile after a failed /load instead of with the menus. In any case, 5% is still way too low, for well-used Xbox 360 controllers in particular, which are well known for deadzones that get worse and worse over the life of the controller.

    8.) Fair enough.

     
  • VIRTUAL

    VIRTUAL - 2020-09-09

    It's seems profile-file is corrupted (or empty).

    On start:
    1) load Autosave.vcd (last profile).
    2) if "/load vXbox1.vcd" exist in command-line args, then load vXbox1.vcd.

    If these (or one of these) files is corrupted then unexpected things may occur.

    Can you attach your profile-files (Autosave.vcd + vXbox1.vcd) to your message?

     

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.