python-elgato-streamdeck icon indicating copy to clipboard operation
python-elgato-streamdeck copied to clipboard

Initial support for StreamDeck Neo

Open TheSchmidt opened this issue 1 year ago • 5 comments

For all users that try to use the new StreamDeck Neo, I would like to provide this very simple patch that just adapts the XL device code for the Neo and adds the USB product id. I have tested the provided examples successfully with a Neo device, but of course the 2 additional touch buttons of the Neo are not supported yet, as there seems to be no documentation for them.

Notes:

  • I do no longer have the Neo since the owner has exchanged it for a Mk2. It would make sense to reduce the new file for the Neo to contain just the code that is different from the XL code.
  • you will have to add these lines to /etc/udev/rules.d/50-elgato-stream-deck-user.rules, e.g. SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="009a", MODE="660", TAG+="uaccess" KERNEL=="hidraw*", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="009a", MODE="660", TAG+="uaccess"

(the product id is case-sensitive in the rules file, BTW...)

TheSchmidt avatar Aug 03 '24 09:08 TheSchmidt

Maybe Julusian/node-elgato-stream-deck@65197a7 helps to implement the rgb buttons

Core447 avatar Aug 03 '24 09:08 Core447

the 2 additional touch buttons of the Neo are not supported yet, as there seems to be no documentation for them.

A quick summary of how they work in https://github.com/Julusian/node-elgato-stream-deck

The touch buttons report and can be addressed as buttons 9 & 10. Their colour can be set by sending a feature report [0x03, 0x06, keyIndex, r, g, b]. I recently discovered that this colour message also works for the normal buttons, going back to the XL, which makes it useful elsewhere for efficiently blanking the streamdeck.

For the LCD segment, it doesnt support any presses. It has to be drawn to as a single segment (not like the plus which lets you draw regions). With usual 1kb packets of data, it has a simpler header of https://github.com/Julusian/node-elgato-stream-deck/blob/16efb4e8f79054246af6678899b6292824bd9921/packages/core/src/imageWriter/headerGenerator.ts#L89-L94. that lcd has dimensions 248x58

Julusian avatar Aug 03 '24 09:08 Julusian

I just received a Neo and tested this PR on a Raspberry Pi 5. Having run the example_base.py I can confirm that it works with the device.

bamill88 avatar Aug 15 '24 20:08 bamill88

Got it working on PopOS. Basic example displayed icons and keypress logged on terminal.

salarelv avatar Sep 04 '24 06:09 salarelv

Can you review it ? @abcminiuser

jfgreffier avatar Sep 19 '24 08:09 jfgreffier

Apologies everyone for dropping the ball on this project due to ongoing family medical issues. @TheSchmidt thank you very much for your hard work! I'll merge in https://github.com/abcminiuser/python-elgato-streamdeck/pull/151 which is a continuation of this and cut a new release.

abcminiuser avatar Oct 28 '24 22:10 abcminiuser