Многие знают ноутбуки 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’а, поскольку я не реализовал еще все планы по данному приложению.
Буду тут обновлять информацию о разработке.
Дорожная карта
- сделать возможность запуска приложения от пользователя (на самом деле там один файлик в пакет приложить);
- сделать systemd unit для автозапуска с чтением конфигурационного файла из /etc ;
- реализовать REST API и режим сервера;
- реализовать dbus API ;
- реализовать больше готовых тем.
Если будут мысли — оставляйте комментарии.