Jump to content
Corsair Community

How can I learn SDK ?


espr3ss0

Recommended Posts

you can use the SDK and the unofficial corsair iCUE Game integration in the sticky at the top of this sub forum by MaccaCool available here: https://forum.corsair.com/v3/showthread.php?t=189370

 

Additionally, I believe user Legion2 used his implementation and ran it through a command line wrapper, which I think is here: https://github.com/Legion2/open-cue-cli I have not tested the latter, but that seems pretty cool

Link to comment
Share on other sites

Thanks for the info will have a look.

 

Just wondering if there may be a better way for what I want to achieve, which is using Alexa to control Profile switching ? I've seen it done but no idea where to start.

Edited by espr3ss0
Link to comment
Share on other sites

using autohotkey or similar automation software you can open icue, then just click the profile, but that can be somewhat time consuming and not as reliable as we might like.

 

The MaccaCool unofficial game state integration will totally do what you need, but when you switch profiles it will only handle the lighting. You need to read up on the readme regarding setting priorities.cfg to list the cueprofiles in the subfolder you make under C:\Program Files (x86)\Corsair\CORSAIR iCUE Software\GameSdkEffects\ (make a new one in there and copy in one of the other folder's .cfg files). Then save some profiles in the new directory by exporting them from icue. In all likelihood you may have security settings preventing you from doing that in the app, so you may need to save them to your desktop, then copy them into the folder you made under GameSdkEffects.

 

Also, the exported cueprofiles, IIRC need to have the <name>profileName</name> tag to match both the file name and how they appear in priorities.cfg, and I think you need to edit the exported cuefile to confirm, but again read through the docs on his github and let us know how you make out.

 

Once you get all that sorted, telling an alexa to do these steps is basically just visiting some web addresses. I know nothing of alexa but I think they use IFFT or some other pretty easy implementation, so if you are familiar with that, it should be pretty easy to send the web requests to your local machine if it is logged in and tell it to switch profiles

Link to comment
Share on other sites

  • 1 month later...
Having trouble installing the Open Cue Service, I've unzipped and tried running open-cue-service but an error occurs ... "The application to execute does not exist: 'C:\Users\Coffee\AppData\Local\Temp\.net\open-cue-service\oj2trrd3.uek\open-cue-service.dll'."
Link to comment
Share on other sites

Having trouble installing the Open Cue Service, I've unzipped and tried running open-cue-service but an error occurs ... "The application to execute does not exist: 'C:\Users\Coffee\AppData\Local\Temp\.net\open-cue-service\oj2trrd3.uek\open-cue-service.dll'."

The problem is resolved the the latest version https://github.com/Legion2/open-cue-service/releases/tag/v0.2.3

  • Like 1
Link to comment
Share on other sites

I must be doing something wrong, I now get a different error. (Following the Instruction run the open-cue-service.exe) Do I need anything installed before trying this?

 

Unhandled exception. OpenCueService.CgSdk.SdkError: Sdk Error occurred: InvalidArguments - developer supplied invalid arguments to the function (for specifics look at function descriptions)

at OpenCueService.CgSdk.CorsairGameSdk.WithErrorHandling(Boolean returnValue)

at OpenCueService.CgSdk.CorsairGameSdk..ctor(String game)

at OpenCueService.SdkHandler..ctor(IOptions`1 config)

at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] 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.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)

at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)

at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite singletonCallSite, RuntimeResolverContext context)

at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)

at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context)

at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)

at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)

at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite singletonCallSite, RuntimeResolverContext context)

at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)

at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context)

at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)

at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)

at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite singletonCallSite, RuntimeResolverContext context)

at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)

at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitIEnumerable(IEnumerableCallSite enumerableCallSite, RuntimeResolverContext context)

at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)

at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)

at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite singletonCallSite, RuntimeResolverContext context)

at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)

at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve(ServiceCallSite callSite, ServiceProviderEngineScope scope)

at Microsoft.Extensions.DependencyInjection.ServiceLookup.DynamicServiceProviderEngine.<>c__DisplayClass1_0.<RealizeService>b__0(ServiceProviderEngineScope scope)

at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.GetService(Type serviceType, ServiceProviderEngineScope serviceProviderEngineScope)

at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.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 OpenCueService.Program.Main(String[] args)

Link to comment
Share on other sites

@espr3sso are you simultaneously running MaccaCool's on the same port? I got that error only when running both at the same time by accident. In either 0.2.2 or 0.2.3.

 

They are both configured by default on localhost:25555 so that conflict means Legion2's cannot start if something is in its way. Could be a firewall issue too I suppose

Link to comment
Share on other sites

Ok that now works, thanks. Question though ... Do I need to store my cue profiles in the created 'profiles' dir?

I am sure Legion2 can answer you better, but yes you do, in that gamesdk subdirectory. You might be able to get away with a symbolic link or junction though I have not tested that - which might be handy

Link to comment
Share on other sites

Ok that now works, thanks. Question though ... Do I need to store my cue profiles in the created 'profiles' dir?

 

You can rename the dir in the config file, but the directory must be in the iCUE

GameSdkEffects directory and contain a priorities.cfg. I exported all my profiles and stored them there. I didn't checked if you can use a symlink. Keep in mind there are some naming restrictions for the profiles when using them with the SDK.

Link to comment
Share on other sites

×
×
  • Create New...