Add support for another Sinowealth keyboard with PID 0016

In my particular case ZUOYA X51 tkl keyboard, but on Aliexpress you could find "Metoo X51", and other " X51" keyboards looks identical.

According messages in #1331 (closed) this controller works with full-size keyboard from another brand.

From software point of view protocol manages all 132 LEDs even in TKL keyboards, so I decided to enable all keys in matrix.

In OpenRGB previously there is a Sinowealth controller for FL ESPORTS F11, thanks for @Dima-Kal. I explore more deep this protocol and try to do it more common for future keyboards. I'm sure it can be done even in more general way for ease to add another similar keyboards, but I don not have another one for testing.

As seen in OEM software this keyboards has a five custom pre-LED presets. In my particular keyboard it named CM1 CM2 through CM5 and called by Fn+1 Fn+2 and so on. In OpenRGB this presets called Custom CM*.

In many predefined effects you can store up to 7 colors, OpenRGB would call Mode Color 0 by default, but you can store preferred colors in Mode Color 1 to 6 and switch through from keyboard by Fn+Up / Fn+Down. Actually protocol has ability to switch between this colors programmatically, but I don't know how it to realize in orgb.

All settings always saved into flash and it takes some time, so dynamically software effects not possible. I couldn't find any way to direct mode driving LEDs, there is not in OEM software which I explored.

Controller on this keyboard has ability to reassign keys, it is stored in similar fashion as LEDs config, but in other memory page. If OpenRGB some-day implements this feature in Core/GUI, it could possible to support for this keyboards.

Edited by Alexey Zagorodnikov

Merge request reports

Loading