UCR icon indicating copy to clipboard operation
UCR copied to clipboard

Streamdeck as input device.

Open WooterTheTroubleshooter opened this issue 6 years ago • 7 comments

Are there any plans to support/allow the Elgato Stream Deck as an input device?

They should have a developer api available.

WooterTheTroubleshooter avatar Jan 31 '19 12:01 WooterTheTroubleshooter

Yes, I bought an SD with the intention of working out how we might integrate it with UCR.
It's going to be relatively tough though with the way UCR works at the moment, especially if we wish to support setting arbitrary images on the buttons in response to input - the way UCR works at the moment, all sending is done by Indexes (numbers) rather than strings of text (eg a path to an image).
So either we need to make some concessions (Maybe have a config file that says "Image 1 is C:\somefile.jpg") or we need to extend UCR to support non-indexed inputs and outputs.
Either way, plugins in UCR do not currently support arbitrary GuiControls (eg something to display images, so you can select which image to assign to a button), so that's an additional hurdle.
Other features (eg support for Voice commands) would probably want similar changes, so I am leaning towards the latter.
In the meantime, I wrote a library for AutoHotkey called AutoHotStreamDeck, which gives you full programmatic control over the SD.

evilC avatar Jan 31 '19 12:01 evilC

How about adding an action to the stream deck that calls an UCR api instead? I can now look for custom actions in Stream Deck through the "More actions" button?

Edit: Here is the url to the SDK to create custom actions. Which apperently also allows changing the icon and such. SDK As a start I would be happy with just triggering UCR actions/chains by setting one button on the Stream Deck to that action.

WooterTheTroubleshooter avatar Jan 31 '19 12:01 WooterTheTroubleshooter

The SD SDK that you linked is fundamentally different to the API that I am using to interact with the SD hardware - they are totally unrelated.
My code just interacts with the device directly via HID.
The SDK is for building DLLs that plug in to the Elgato software, so I would need some way for that DLL to be able to interop with UCR.
Also, it seems that SDK is JS, C++ or Objective-C only, none of which I am proficient in.

evilC avatar Jan 31 '19 13:01 evilC

Looking into it somewhat further. The 'plugin' is essentially a command-line executable that is expected to start a websocket. Then communicate with the Stream Deck software through that websocket.

What is the current route/plugin/wrapper for custom UCR plugins, is that IOWrapper?

WooterTheTroubleshooter avatar Jan 31 '19 13:01 WooterTheTroubleshooter

Oh, that sounds interesting.
yeah, iowrapper is what actually handles the I/O

evilC avatar Jan 31 '19 13:01 evilC

Still not 100% sure how this would work. I have done a little reading of the SDK docs, still not quite seeing how to go about this.
It seems to me that UCR itself cannot be the plugin - the plugin would be a proxy between the SD app and UCR. I am guessing that we would maybe need to have UCR communicate with the plugin via WebSockets or something, then the plugin communicates with the Elgato app?
BTW, feel free to pick this conversation up on Discord

evilC avatar Jan 31 '19 15:01 evilC

There's also third-party C# SDK at https://github.com/BarRaider/streamdeck-tools

fredemmott avatar Jul 17 '22 14:07 fredemmott