Askannz / msi-perkeyrgb

Linux CLI tool to control per-key RGB lighting on MSI laptops.
MIT License
212 stars 39 forks source link

colorshift, wave, reactive key support + config changes #22

Closed TauAkiou closed 4 years ago

TauAkiou commented 4 years ago

This merge implements effects support + configuration changes necessary to make it work.

Configuration Changes

Changes to color/keymap handling

In total, this merge adds most of the 'effects' that are present in the Windows version of the keyboard utility, barring features such as cooldown keys that require a daemon to operate.

This merge also includes my findings and documentation on the effects protocol and related changes to the 0e key protocol.

ErrorErrorError commented 4 years ago

This merge implements effects support + configuration changes necessary to make it work.

Hi! I am also working on a project to control MSI's per-key keyboard on macOS (hackintosh). Is it okay If I can use your documentations to implement changing key mode? As in ColorShift, Reactive, ect? I will credit you for your work and documentation.

TauAkiou commented 4 years ago

Go ahead. I supplied it for exactly that reason.

Askannz commented 4 years ago

@TauAkiou Sorry I didn't reply to your email earlier, I wanted to review the code first but time flew by.

That's some impressive work you did there ! Good job reverse-engineering the rest of the protocol.

To be honest I wasn't planning on adding more features to this tool, but looks like you did pretty much all the heavy lifting necessary, so I'll definitely review and merge later.

TauAkiou commented 4 years ago

@Askannz I had done this to see how difficult reverse engineering the rest of the protocol would actually be, and I tested my findings by expanding msi-perkeyrgb. It works much better then I thought it would, though it's missing a few features from the Windows control center (namely that the Windows version will add transitions to the beginning or end automatically to ensure that the effect transitions smoothly).

The next logical step from here would be to do what the OpenRazer team did and re-implement the protocol through a kernel module and an additional control daemon, though msi-perkeyrgb is still useful for people that just want user-level control over the keyboard and little else.

Askannz commented 4 years ago

Merged ! Thanks again for this amazing work.

The protocol documentation you wrote at https://github.com/Askannz/msi-perkeyrgb/blob/master/0b_packet_information/msi-kb-effectdoc is very good. Sadly I can only test it with my own laptop keyboard, but I wonder if it could work with standalone SteelSeries keyboards too.

I'm going to clean up some of my code and then hopefully push a new release soon with your changes.