Подсветка клавиатуры ноутбуков MSI в Linux

Многие знают ноутбуки MSI, наверное самые лучшие игровые ноутбуки Gx серий.
Где-то полтора года назад я себе такой прикупил: GS72-2QD Apache.
Клавиатура ноутбука умеет менять цвета и интенсивность подсветки в трех регионах клавиатуры.
Но в Linux это все, конечно, из коробки не работает. Будем заставлять работать.

Решение, как таковое появилось давно, но уж очень нестабильно-кривое, как и все на node.js.
Погонял я его — погонял, но с каждым обновлением nodejs-пакетов, с каждым обновлением релиза все это переставало работать и требовало от меня не мало времени для того, чтобы заставить работать его.

Появилось у меня время, сел я и переписал все это добро в виде библиотеки на Си и приложения командной строки на Golang’а.

Исходники

Библиотека на Си: https://github.com/elemc/libmsikeyboard (в зависимостях HID API (Signal11) и cmake).
Приложение: https://github.com/elemc/msikeyboard (в зависимостях библиотека и golang).

Можно собирать в любом линуксе.
Команды для сборки и установке библиотеки:

git clone https://github.com/elemc/libmsikeyboard.git
cd libmsikeyboard
mkdir build && cd build
cmake ..
make
sudo make install

Команды для сборки приложения:

go get -u github.com/elemc/msikeyboard

если $GOPATH/bin в переменной окружения PATH, то уже все будет работать после успешного завершения команды go get.

Пакеты для Fedora/RFRemix и Centos 7

Пакеты находятся в моем хранилище (напомню http://repo.elemc.name ).
Достаточно подключить репу и установить пакет msikeyboard.

Как пользоваться приложением

Например, если мы хотим установить цвета, слева-направо: белый, синий, красный, с высокой интенсивностью подсветки и нормальным режимом подсветки (от root’а):

msikeyboard -left white:high -middle blue:high -right red:high -mode normal

Пока это все работает от root’а, поскольку я не реализовал еще все планы по данному приложению.
Буду тут обновлять информацию о разработке.

Дорожная карта

  1. сделать возможность запуска приложения от пользователя (на самом деле там один файлик в пакет приложить);
  2. сделать systemd unit для автозапуска с чтением конфигурационного файла из /etc ;
  3. реализовать REST API и режим сервера;
  4. реализовать dbus API ;
  5. реализовать больше готовых тем.

Если будут мысли — оставляйте комментарии.

Добавить комментарий