GithubHelp home page GithubHelp logo

handheldcompanion's People

Contributors

0skillallluck avatar casperh2o avatar cerahmed avatar cheng77777 avatar corymanson avatar havner avatar hijae avatar indiesaudi avatar joshuatam avatar m33ts4k0z avatar moyogii avatar mseys avatar nefarius avatar radther avatar reg-chen avatar romracer avatar shadowflare avatar staubgeborener avatar trippyone avatar twjmy avatar valkirie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

handheldcompanion's Issues

Improvement: Confirmation dialogue for deleting profiles

Observed while testing, right now pressing the delete profile button will instantly delete the profile. Pressing it by accident is possible, perhaps add a confirmation dialogue box?

Perhaps additionally move the viewport up to the top, to show a new profile is now selected? It's possible now to hit delete and not even see anything change.

Feature: Split x and y multipliers for motion controls

Right now there is sensitivity for the motion control algorithms, in the past there was a feature that used the device width of 2.5x for the X direction but that was no longer an option to use within the sensors due to sensor fusion algorithms requiring the unmultiplied amount.

Need to be careful and consider data that is sent to DSU server and steering.

Overlay: Improve appareance by using shadowmap from helix sharpdx

Current WPF3D implamentation is with the basic version of Helix framework, which has a limited feature set and is CPU intensive: https://github.com/helix-toolkit/helix-toolkit/wiki/WPF-vs-WPF.SharpDX

One of the first improvements to do would be using a shadow map, which would create shadows from objects onto objects. Example of SharpDX: https://github.com/helix-toolkit/helix-toolkit/tree/develop/Source/Examples/WPF.SharpDX/ShadowMapDemo

What is a shadow map? https://www.opengl-tutorial.org/intermediate-tutorials/tutorial-16-shadow-mapping/

PS Now Integration

I apologize if this is the wrong area to ask this. I've been attempting to use this software to play PS4 games on my Aya Neo through PSNow. However, I get a wireless controller disconnected issue when attempting to play any PS4 game. The issue does not exist when navigating PSNow menus or PS3 games. Is there a solution?

Windows 11 finds Trojan in 0.8c

ThreatFound
Downloading Controller.Service-0.8c.exe sets off Windows Defender on Windows 11. Sabsik.FL.B!ml is found. 0.4 did not set off this warning.

Improvement: Rename DeltaMilliseconds to DeltaSeconds ie use correct unit

After some debugging, figured out DeltaMilliseconds is actually an amount of seconds, with a 100 Hz frequency of the program it's usually around 0.01xx.

The naming is confusion, please improve. It's good practice in general to state the unit type in the variable name, also helpful with rad and deg.

Disable motion control button complementary to always on

Handheld Companion now features a "Always on" enable button option, however sometimes its nice to temporarily disable this to realign the device physically.

Adding a whole set of button toggle leads to a lot of clutter, perhaps a simple toggle "Motion disable button", when toggled it will enable always on greyed out (so the user can't change it) and then which ever buttons are ticked disable motion control.

Bug: Rumble/Motor vibration does not work for Dolphin and PCSX2

As reported by skaelee on Discord.

When I use dolphin or pcsx2 will controller service is emulating a ps4 controller pcsx2 and dolphin would'nt find the vibration motors at all for some reason but when I turn the controller service off it finds it with my regular xinput from the controller installed inside the aya

I (Casper) double checked, indeed with DS4 selected Dolphin does not see the motors, the regular Aya controller is OK.

afbeelding

afbeelding

Further feedback:

afbeelding

As you can see when using controller service emulating the ps4 controller with the aya controller cloaked or un cloaked the motor isn’t recognized

gyroscope didnt work on remote play ps5

so I tried to remote play ps5. opened paladin. have enabled gyro in game setting.
I have confirmed that this is worked with dual sense that I plug into the aya neo.
so I plug the dual sense out, turn controllerservice on, and use the aya neo's controller. All buttons worked, except the gyro.

on the 1st page, the text "no gyrometer detected" and "no accelerometer detected" is unchecked and disabled.
is there some driver missing or something ?

Interface Start Minimized tick not respected when Windows is shutdown with application window open

Tested with 0.8.4.2.

Steps to reproduce

  • Tick the checkbox for "Start Minimized" on the Settings tab under Interface.
  • Tick the checkbox for "Run At Startup" on the Settings tab under Interface.
  • Open Controller Helper GUI in windowed or maximized mode.
  • Restart Windows (or shutdown and start)
  • Login in to Windows
  • Controller Helper starts on boot with window opened.

Most likely this is caused by the wanted feature where Controller Helper opens with previous window setting (stored in appdata).

Note that when the application is minimized to system tray and Windows is restarted with the same settings, it indeed starts in the system tray.

0.8.2.0 windows sees dualshock 4 after restart

Device: Aya Neo

Service is enabled, Windows sees dualshock 4.

When I stop the service, windows sees XBox controller. But if I restart the device, windows sees Dualshock 4, even if I don't start controller Helper. Mouse control with ayaspace is super slow when that happens.
App is not running on startup.

Only solution is to delete the service.

Controller Helper crashes on startup after using Ds4windows

Copy and pasted from discord

I tried using Ds4windows. I'm just curious.
It didn't recognize the virtual Dualshock 4, but my original. BUT now controller Helper doesn't start anymore. I uninstalled it, restarted, reinstalled it, restarted again, but nothing. I try to open it as administrator, it is for a couple seconds in the tray button right, but than disappear

PC is also super slow when it tries to start

I uninstalled also both nefarius programs, no dice.

I uploaded a .dmg file to discord.

I'm at a lost. :(

suggestion: turn service on when launching helper

A setting that controller service starts, when I start the controller Helper program (yes, I know automatic and manual, but I want it to immediately start when I start the program) would be nice.
And maybe even stop service, when I close helper program.

Controller Service Uninstall leaves behind various files and folder

Tested with a fresh install of 0842. After installation, go through Windows -> Remove program -> Uninstall Controller Service.

Controller service uninstall is performed (controller helper briefly opens?) and uninstall states complete.

Check C:\Program Files\Controller Service

  • The folder itself still exists
  • Various ControllerService.exe.nnnn.dmp files remain
  • Logs folder
  • Contents of logs folder

After uninstall, performing a new install the user is (correctly) prompted that that the ControllerService folder already exists.

Easier onboarding of new users

New users will want certain information and settings first, some ideas and suggestions.

  • HC, set profiles page as home page, users will want to configure a game right away
  • HC, profiles page universal motion controls (expanded) at the top of profile settings, not the bottom.
  • Autosave profile ie remove save button and just have it apply right away when making changes, it's not super clear that this needs to be done to apply changes, where the rest of the app (other pages and settings) apply stuff right away.

GUI Generated files - Windows vs unix Line Ending

The automatically generated files:

ControllerHelper/ControllerHelper.Designer.cs
ControllerHelper/ControllerHelper.resx

Generate differently between developers. Causing issues when commiting/merging ease of comparison.

The generated files on my PC / IDE have the Windows format line ending, the ones in the repo feature Unix line endings.

Also observed this with regular files, but that can be fixed by either using advanced save and selecting the Unix line ending or adding CF line ending to a config file. But this does not fix the automatically generated files.

References:
https://docs.microsoft.com/en-us/visualstudio/ide/encodings-and-line-breaks?view=vs-2022

No more "Windows Protected Your PC when installing Controller Service"

With a default Windows install, or in my case, the Aya Neo, when installing new or updates of Controller Service windows blocks the install with a pop up. This is known as Windows SmartScreen which shows a warning when installing or running unsigned executable's.

See more here: https://vovsoft.com/blog/how-to-solve-windows-protected-your-pc/

After digging around for a bit, aside from disabling this protection in Windows, the better(?) option would be to have Windows/Microsoft know about Controller Service by providing it "Signed". Then it gets an improved reputation factor over time...

https://stackoverflow.com/questions/12311203/how-to-pass-the-smart-screen-on-win8-when-install-a-signed-application

Filter acceleration sensor data

Observed that on some devices the accelerometer data is much more noise then on others.

Possibly add filter:

Seems best to produce some logfiles with data, implement various filters in Python and plot and compare with original data to see if parameters are correct. Testing through the application is slow.

Controller Service Helper Won't Open

Observed after installing and rebooting the latest application (0.8.1.6). Service is running (or not), opening the helper application with admin rights shows the icon in the system tray but clicking it makes it disappear. Tried uninstalling and installing again, same result.

ControllerHelper.exe.11996.zip

GUI Generated files - ToolTip removal

The automatically generated files:

ControllerHelper/ControllerHelper.Designer.cs
ControllerHelper/ControllerHelper.resx

Generate differently between developers. Causing issues when commiting/merging ease of comparison.

The following line of code gets removed with my IDE.

this.toolTip1.SetToolTip(this.lb_touchpad, resources.GetString("lb_touchpad.ToolTip"));

Controller Service crashes when Ayaneo controller is disabled from Ayaspace

To reproduce, disable controller from Ayaspace, start Controller Service either from Visual Studio or GUI.

GUI shows a loading circle and then no started Controller Service, starting from Visual Studio the following stack trace is shown:

[14:46:48 INF] ControllerService, Version=0.9.2.0, Culture=neutral, PublicKeyToken=null (0.9.2.0) [14:46:49 INF] HideDevice hiding USB\VID_045E&PID_02EA&IG_00\00&00&00000E45848BED7E [14:46:49 INF] HideDevice hiding HID\VID_045E&PID_02EA&IG_00\8&6D38B9C&0&0000 [14:46:50 INF] XInputGirometer initialised. Report interval set to 10ms [14:46:50 INF] XInputAccelerometer initialised. Report interval set to 10ms [14:46:50 INF] XInputInclinometer initialised. Report interval set to 10ms Unhandled exception. System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index') at System.Collections.Generic.List1.get_Item(Int32 index) at ControllerService.ControllerService..ctor(ILogger1 logger, IHostApplicationLifetime lifetime) in C:\Users\caspe\Source\Repos\ControllerService\ControllerService\ControllerService.cs:line 119 at System.RuntimeMethodHandle.InvokeMethod(Object target, Span1& arguments, Signature sig, Boolean constructor, Boolean wrapExceptions) at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite callSite, RuntimeResolverContext context) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2.VisitCallSite(ServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitIEnumerable(IEnumerableCallSite enumerableCallSite, RuntimeResolverContext context) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite callSite, RuntimeResolverContext context) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor2.VisitCallSite(ServiceCallSite callSite, TArgument argument) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve(ServiceCallSite callSite, ServiceProviderEngineScope scope) at Microsoft.Extensions.DependencyInjection.ServiceProvider.CreateServiceAccessor(Type serviceType) at System.Collections.Concurrent.ConcurrentDictionary2.GetOrAdd(TKey key, Func2 valueFactory) at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType, ServiceProviderEngineScope serviceProviderEngineScope) at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType) at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetService[T](IServiceProvider provider) at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken) at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token) at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token) at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost host) at ControllerService.Program.Main(String[] args) in C:\Users\caspe\Source\Repos\ControllerService\ControllerService\Program.cs:line 38 C:\Users\caspe\Source\Repos\ControllerService\bin\ControllerService.exe (process 4956) exited with code -532462766. Press any key to close this window . . . `

Haptic feedback ie vibrations when motiong steering limits are reached

Idea to improve motion steering, either when the max is reached, or just before the max angles, the device could be vibrated to indicate to the user there is no need to rotate further. If possible, individual left and right vibrations and different intensity levels, scaled over an angle range.

Vibration inputMotor = new() { LeftMotorSpeed = (ushort)((e.LargeMotor * ushort.MaxValue / byte.MaxValue) * vibrationStrength), RightMotorSpeed = (ushort)((e.SmallMotor * ushort.MaxValue / byte.MaxValue) * vibrationStrength), }; physicalController.SetVibration(inputMotor);

physicalController is the SharpDX device
so either we create a physicalController object on Handheld Companion
Either we create a new pipemessage with a vibrations strength, duration
and you handle that pipemessage from the service, sending the vibration to physicalController object

Bug: New profile creation leaves empty aiming_array

Symptoms, old and newly created profiles crash when additional settings page is opened due to a null pointer exception (array has no contents).

Tested with latest main branch, create new profile, check file contents:

{ "name": "Kena: Bridge of Spirits", "path": "C:\\Games\\Kena Bridge of Spirits\\Kena\\Binaries\\Win64\\Kena-Win64-Shipping.exe", "executable": "Kena-Win64-Shipping.exe", "whitelisted": false, "use_wrapper": false, "gyrometer": 1, "accelerometer": 1, "steering": 0, "inverthorizontal": false, "invertvertical": false, "umc_enabled": false, "umc_input": 0, "umc_output": 0, "aiming_sensivity": 2, "aiming_intensity": 2, "aiming_array": [], "steering_max_angle": 30, "steering_power": 1, "steering_deadzone": 0, "steering_deadzone_compensation": 0, "mousehook_enabled": true, "mousehook_exclusive": false, "umc_trigger": 0 }

There is code that should run on profile creation to fill the array with linear values, but apparently it's not working?

Profile.cs:
public Profile() { if (aiming_array.Count == 0) { for (int i = 0; i < array_size; i++) { double value = (double)i / (double)(array_size - 1); ProfileVector vector = new ProfileVector(value, 0.5f); aiming_array.Add(vector);

Not sure how to fix.

Epic Games Launcher Error After Install

EGL

XINPUT 1_3.dll error appeared while trying to launch the Epic Games launcher immediately after installing the service (RC 0.4) and restarting an Aya Neo Pro running Windows 10.

Feature: Custom joystick response, curve physical joystick input to game

This feature is available within Steam's controller configuration and reWASD. Allowing the user to scale physical joystick, within given ranges to a different game input.

Example from Steam.

steam-controller-config

Example from reWASD.

rewasd

The following "building blocks" could be used to to implement this in Controller Service

Front end

Back end
We can use various interpolations:

Other

  • The amount of bars can be configured (within reason 4-12?)
  • Allow for table of points (xy) or mouse/touch click adaption of points and or both (like reWASD)
  • Allow for different types of interpolation, linear or bicubic
  • Show an additional point or line to indicate the current physical joystick to game joystick input, to give users a feel for it

Rumble is not passed through to virtual controllers (Aya Neo Pro 2021)

Steps to replicate:

  • While emulating a controller (PS4 or Xbox 360, happens for both) navigate to Steam | Settings | Controller | General Controller Settings
  • Select your "Detected Controller" (in this case the emulated controller) and click "Identify"
  • Notice that no vibration occurs
  • Repeat the above steps with emulation disabled, this time selecting and identifying the native Aya Neo controller.
  • Notice that vibration occurs

This same issue happens during gameplay as well, regardless of the "Vibration Strength" slider setting or controller emulated. The same games rumble works when using the native controller.

Running windows 10 home 21H1 (Latest updates installed) and Controller Service 0.8.4.2

HID Preference in profile

Certain games for me only work with certain (emulated) controller types:
Kena -> DS4
Split Second -> Xbox
Forza 5 -> Xbox
Emulators -> Whichever is configured

Would be nice if the HID change could be automated based on the applied profile, three options:

  • No preference
  • HID1
  • HID2

Improvement: Interpolation of gyro custom sensitivity factor

The current implementation gets it's smoothing implicitly from the (large) amount of bars used. Double check with some plots if this is sufficiently smooth, otherwise, add linear interpolation between them.

This ticket is more of a reminder to check this.

suggestion: Disable / automatic delete notifications

It would be nice to have an option to turn off windows notifications (the notification list, when swiping from the right, where also the quick settings are) or, at least, delete notifications automatically
for example if I emulate ds4 -> notification ds4
than I emulate X360 - notification ds4 and x360
in that case, delete ds4 notification

GUI Generated files - tabControl gets moved

The automatically generated files:

ControllerHelper/ControllerHelper.Designer.cs
ControllerHelper/ControllerHelper.resx

Generate differently between developers. Causing issues when committing/merging ease of comparison.

tabControl gets moved in a different location:

image

Device(s) are not uncloaked on ControllerService stop or uninstall

Tested with version 842 and 842+some additional commits.

Not sure how I get my system in this state but I have the following situation.

  • Controller Helper, Devices tab, Cloack Device (ticked) and Uncloak on close (ticked)
  • Neither the attached Ayaneo controller nor external Xbox controllers are uncloaked when I stop, delete service or uninstall Controller service.

Example with start stop service:
controller

To bring back the devices, I start Controller Service (to enable the Cloak Device tick), then I untick Cloak device and then stop the service again. Alternatively always use Controller Service to have a controller available.

Have tried the following to fix this:

  • Removed 842 with additional commits (local build)
  • Installed, removed and installed again 842
  • Reboot device/controller service application
  • Switch off and on Ayaneo controller through device manager

Perhaps the Uncloak on close tickbox stopped working some time ago? Perhaps my device got in this state and the flag for this condition is only swapped (if true, set false, if false set true) and not reset under different circumstances?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.