r/SignalRGB • u/motochu • 10d ago
Other NZXT Function 2 – eigenes SignalRGB Plugin mit echtem Per-Key RGB + Keytap
Enable HLS to view with audio, or disable this notification
Moin zusammen,
ich habe die letzten Tage etwas an meiner NZXT Function 2 herumgebastelt, weil mich die aktuelle Unterstützung in SignalRGB ziemlich gestört hat.
SignalRGB erkennt die Tastatur zwar, nutzt bei der Function 2 aber meines Wissens nur ungefähr 10 RGB-Zonen, obwohl die Tastatur natürlich eigentlich Per-Key RGB kann.
Also habe ich mir gedacht: Dann mache ich es halt selbst. :D
Ich habe den USB-HID-Verkehr zwischen NZXT CAM und der Tastatur mitgeschnitten, das RGB-Protokoll nach und nach reverse engineered und daraus ein eigenes SignalRGB Custom Plugin gebaut.
Inzwischen funktioniert das Ganze tatsächlich ziemlich gut:
- echtes Per-Key RGB für die komplette Tastatur
- vollständiges deutsches ISO-DE Layout
- 24 RGB mit 60 FPS funktioniert bei mir stabil
- normale SignalRGB Canvas-Effekte funktionieren über jede einzelne Taste
- Keytap / Tastendruck-Effekte werden unterstützt
- richtige SignalRGB-Key-Namen wie
Space,Enter,ISO_#,ISO_<,Num Enterusw. - verschiedene Fallback-Stufen mit weniger Farbgruppen und geringeren FPS sind ebenfalls auswählbar
- getestet mit meiner NZXT Function 2 ISO, Firmware 1.3.22
Das Interessante war vor allem das NZXT-Protokoll. Die Tastatur bekommt Farbgruppen mit einer 144-Bit-Tastenmaske + RGB-Wert, und größere Frames werden anschließend über mehrere HID-Pakete übertragen. Damit lässt sich praktisch jede Taste einzeln ansprechen.
Sogar ein paar merkwürdige Zuordnungen musste ich erst herausfinden – zum Beispiel ist Right Shift Bit 77, ß liegt auf Bit 27 und ´ auf Bit 28. xD
Ich habe das Plugin inzwischen auch so angepasst, dass SignalRGBs Keytap-Effekte funktionieren können. Dafür müssen die LEDs nicht nur richtig positioniert sein, sondern auch die von SignalRGB erwarteten Tastennamen besitzen.
Ich habe das Ganze auf GitHub veröffentlicht, falls noch jemand eine Function 2 besitzt und keine Lust auf die eingeschränkte Standard-Unterstützung hat:
GitHub:
NZXT-Function-2-SignalRGB-Plugin
Dort gibt es auch eine deutsche und englische Anleitung zur Installation. Das Plugin muss einfach in den SignalRGB-Custom-Plugin-Ordner unter Documents\WhirlwindFX\Plugins.
Falls jemand eine andere Function-2-Variante, ANSI-Version oder andere Firmware besitzt und testen möchte, gerne melden. USB-Captures oder Rückmeldungen wären ebenfalls interessant, damit man eventuell noch weitere Modelle unterstützen kann.
Das Ganze ist natürlich inoffiziell und hat nichts mit NZXT oder SignalRGB/WhirlwindFX zu tun.
Aber immerhin kann die Function 2 jetzt endlich das machen, was man bei einer Per-Key-RGB-Tastatur eigentlich erwarten würde. :D
2
u/HarD_BR 9d ago
This is interesting; we had this device before on an old firmware, and it didn't allow per-key support.
You sure this isn't saving on flash memory? We only had the 10 group zones that didn't save to flash at the time the plugin was made.
Can we integrate your code into the official plugin?
1
u/motochu 9d ago
Ja, sehr gerne. Ich würde mich freuen, wenn ihr das in das offizielle SignalRGB Plugin integrieren würdet. :)
Nach meinen Tests werden die Per-Key-Daten nicht in den Flash geschrieben, sondern laufend per HID gestreamt. 24 Per-Key RGB läuft bei mir stabil mit 60 FPS, ohne zusätzlichen Save-/Flash-Befehl.
Getestet habe ich das auf einer Function 2 ISO mit Firmware 1.3.22. Es kann also gut sein, dass sich eure damals getestete ältere Firmware anders verhalten hat.
Wenn ihr wollt, kann ich euch auch USB-Captures, Key-Bit-Mapping und weitere Protokolldetails geben.
1
u/Expensive_Night_4055 9d ago
Need the keyboars recognized before? Mine is led but not appear on rgb
2
u/BennySRGB 10d ago
Thanks for sharing this. We've already forwarded the per-key support gap on the Function 2 to our developers.
We can't vouch for or officially support a script shared this way since it hasn't been reviewed on our end, so anyone trying it should do so knowingly.
If you're open to it, you're welcome to also share this in the #plugin-development channel on our Discord, that'd get it in front of our devs directly for review, and could help turn this into proper official support for other Function 2 owners.