Add Touchypad ($15 StreamDeck like) (proof of concept, please discuss in issue) by geeksville · Pull Request #602 · StreamController/StreamController · GitHub
Skip to content

Add Touchypad ($15 StreamDeck like) (proof of concept, please discuss in issue)#602

Draft
geeksville wants to merge 1 commit into
StreamController:mainfrom
geeksville:pr-touchypad
Draft

Add Touchypad ($15 StreamDeck like) (proof of concept, please discuss in issue)#602
geeksville wants to merge 1 commit into
StreamController:mainfrom
geeksville:pr-touchypad

Conversation

@geeksville

@geeksville geeksville commented May 25, 2026

Copy link
Copy Markdown
Contributor

Hi,

So I had a lot of fun in #551 though I understand if you aren't interested in merging it. However I've been using it for the last few months and that got me into experimenting with "would it be possible to use these very cheap (but good) CYD devices" to make an open-source alternative to StreamDeck (with a built in high-end touchpad and advanced host-side scripting).

I looked at your implementation and it seemed to me the best way to offer my device/project to your users would be by subclassing from the abstract StreamDeck class. Which is what I did. For the time being I'm using a nasty monkeypatch to run your StreamController binary with any attached 'TouchyDecks' added to the list of StreamDeck devices.

I use this nasty invocation from my developer shell:

python -c "import touchy_bootstrap; touchy_bootstrap.main()"

It seems to work pretty well for an early proof of concept. But before I get too far down this road I wanted to ask would you be interested in this PR if it was polished? You can see a video of it working here: https://github.com/geeksville/touchy-pad#features-coming-soon

If you are interested here's what I'm thinking as next steps. cool?

  • I'd slightly tweak the innards of https://github.com/StreamController/streamcontroller-python-elgato-streamdeck to add a public method to the API to add "register_controllers_factory(callback)", such a factory would be called at startup so that various other libraries could cleanly register new StreamDeck compliant shims.
  • I'd use that API in the touchy-pad pypi project to register that it can make "StreamDeck" like shims.
  • I'd make a small PR to your main app to add a dependency on touchy-deck and call that register function.

I hope you are having a nice Spring.
-Kevin

@geeksville geeksville changed the title Add Touchypad support (proof of concept, please discuss in issue) Add Touchypad ($15 StreamDeck like) (proof of concept, please discuss in issue) May 25, 2026
@geeksville geeksville marked this pull request as draft May 25, 2026 08:23
@Core447

Core447 commented Jun 10, 2026

Copy link
Copy Markdown
Member

@geeksville

Copy link
Copy Markdown
Contributor Author

great! I'm on vacation the next two weeks but when I get back I'll get right on it. I'll also send in a finished touchpad-plugin that uses that API to appear as a 'streamdeck' in your app. Since I opened this PR I used a similar approach to add a similar plugin to OpenDeck: https://www.reddit.com/r/touchypad/comments/1u0ykl3/touchypad_alpha_3_release_opendeck_is_solid_and

@geeksville

Copy link
Copy Markdown
Contributor Author

@Core447 okay - i'm starting work now by forking your https://github.com/StreamController/streamcontroller-python-elgato-streamdeck so I can add a register_controllers_factory(callback) method (per thread above).

But one question, I notice that that lib is a fork of some other lib that also has a fair number of recent changes. Do you remember why you needed to fork? If minor I might be able to instead just rebase to that so that hopefully these changes could go upstream someday.

@Core447

Core447 commented Jun 22, 2026

Copy link
Copy Markdown
Member

@geeksville We use our own version because we changed some stuff to get resume from sleep working properly.
You can see all changes here: abcminiuser/python-elgato-streamdeck@master...StreamController:streamcontroller-python-elgato-streamdeck:master

Another reason was that abcminiuser was quite busy (and maybe still is - idk) and therefore it took long to get changes pushed to pypi through him.

@Core447

Core447 commented Jun 22, 2026

Copy link
Copy Markdown
Member

But the more is upstream the better

@geeksville

geeksville commented Jun 23, 2026 via email

Copy link
Copy Markdown
Contributor Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

2 participants