All Projects → RedFantom → masterkeys-linux

RedFantom / masterkeys-linux

Licence: GPL-3.0 license
MasterKeys SDK for Linux

Programming Languages

c
50402 projects - #5 most used programming language
python
139335 projects - #7 most used programming language
CMake
9771 projects
shell
77523 projects

Projects that are alternatives of or similar to masterkeys-linux

snake
A stylised graphical tool for configuring and controlling Razer devices on Linux
Stars: ✭ 52 (+136.36%)
Mutual labels:  keyboard, rgb
Keyboardvisualizer
Audio visualizer and effects engine for RGB keyboards, mice, and accessories using the OpenRGB SDK. Supports Windows, Linux, and MacOS. Issue tracker on GitLab (https://gitlab.com/CalcProgrammer1/KeyboardVisualizer)
Stars: ✭ 458 (+1981.82%)
Mutual labels:  keyboard, rgb
Mechanical Keyboard
DIY mechanical keyboard and where to find them
Stars: ✭ 947 (+4204.55%)
Mutual labels:  keyboard, rgb
Kimiko
Build-Guide for the Kimiko Split-Keyboard pcb.
Stars: ✭ 34 (+54.55%)
Mutual labels:  keyboard
unigem-objective-c
Unicode Gems, a Mac app, an iOS app, and an iOS keyboard for letter-like unicode.
Stars: ✭ 22 (+0%)
Mutual labels:  keyboard
nativescript-numeric-keyboard
🔢 Replace the meh default number/phone keyboard with this stylish one
Stars: ✭ 33 (+50%)
Mutual labels:  keyboard
vue-number-keyboard
vue-number-keyboard是基于VUE实现的数字键盘插件,当前支持整数、小数数字输入、乱序键盘,demo中给出了常用的验证码、金额数字示例。数字键盘的大小包括字体尺寸支持响应式。
Stars: ✭ 51 (+131.82%)
Mutual labels:  keyboard
keyboard mouse emulate on raspberry
Bluetooth Keyboard Mouse Emulator on Raspberry Pi
Stars: ✭ 230 (+945.45%)
Mutual labels:  keyboard
react-keys
Simple way to bind keyboard to react with redux.
Stars: ✭ 50 (+127.27%)
Mutual labels:  keyboard
KeyboardKitPro
KeyboardKit Pro extends KeyboardKit with pro features.
Stars: ✭ 42 (+90.91%)
Mutual labels:  keyboard
intuiter
Global productivity app for anyone who use Windows
Stars: ✭ 24 (+9.09%)
Mutual labels:  keyboard
vscode-color
Helper with GUI to generate color codes such as CSS color notations.
Stars: ✭ 88 (+300%)
Mutual labels:  rgb
spec
[OLD!] RGB Protocol specifications for Bitcoin-based digital assets
Stars: ✭ 149 (+577.27%)
Mutual labels:  rgb
keyboard-css
Show off your keyboard shortcuts with style 🦄.
Stars: ✭ 52 (+136.36%)
Mutual labels:  keyboard
hcv-color
🌈 Color model HCV/HCG is an alternative to HSV and HSL, derived by Munsell color system, usable for Dark and Light themes... 🌈
Stars: ✭ 44 (+100%)
Mutual labels:  rgb
habits
An application to monitor your habits with your PC. So you can study how many kilometers travel with your mouse or how many keystrokes.
Stars: ✭ 19 (-13.64%)
Mutual labels:  keyboard
homebridge-http-rgb-push
Homebridge plugin to control a web/http-based RGB device.
Stars: ✭ 16 (-27.27%)
Mutual labels:  rgb
react-native-screen-keyboard
On-screen keyboard with customisable keys and tactile / UI feedback 📱
Stars: ✭ 22 (+0%)
Mutual labels:  keyboard
dasher-web
Dasher text entry in HTML, CSS, JavaScript, and SVG
Stars: ✭ 34 (+54.55%)
Mutual labels:  keyboard
PianoView
Fully custumisable piano keyboard view with IBDesignable properties in swift
Stars: ✭ 34 (+54.55%)
Mutual labels:  keyboard

MasterKeys Linux SDK

Build Status License: GPL v3 PyPI version Documentation

Cooler Master provides an SDK for its MasterKeys series of keyboards for use under Windows, but not for Linux. The SDK communicates with an OUT-endpoint in the USB HID-device of the keyboard. This library aims to make this communication accessible from Linux by using libusb.

This is the first time I have written such a large project in C, let alone an actual shared library, so you may spot things that are bad practice, bugs or other issues. Please let me know in the issues section if you spot anything!

Disclaimer

This library is not endorsed or supported by Cooler Master Inc. or any of its affiliates. They have explicitly refused to help in the development of this library. There is no official support for this library from Cooler Master Inc. Any and all questions should be posted on the issues page.

Device support

As Cooler Master Inc. has not provided any support, this library can only support a limited amount of devices, specifically, it can only support devices for which the record executable target has been executed. This program uses the library to register an offset for each key, which is required for the library to be able to control individual keys. Effects and full lighting colors can be set regardless of these offsets.

The current list of supported devices includes:

  • MasterKeys Pro L RGB ANSI
  • MasterKeys Pro S RGB ANSI (untested)
  • MasterKeys Pro L RGB ISO (untested)

If you would like for your device to be supported as well, please run the record executable. Enter the row and column coordinates of each key according to the Cooler Master reference each time for the key that lights up in red. The shared layout.c can be attached to an issue, and then your device is added in no-time!

Keyboards with only monochrome lighting may use a different protocol and thus they would probably require more modifications than just adding a key layout matrix. Do not hesitate to open an issue if you have a monochrome keyboard, would like to see support and are willing to do some USB packet sniffing.

Compiling and installing

To be able to compile and install any of the targets in this library, cmake and its dependencies are required. Depending on your specific distribution, the name of the packages (if they are provided) may differ from the ones given here. The reference commands are for Ubuntu.

# libx11-dev is for the AmbiLight and notifications examples
# python3-gtk2.0 is for the notifications example
sudo apt-get install cmake libusb-1.0.0-dev libx11-dev
cd Source/masterkeys-linux  # Or wherever you have cloned the repo

# Builds library, utilities and C examples
# Exclude them from the file if you don't want them to be built
cmake .
make
sudo make install

# For the Python library (system-wide install) and Python examples
sudo python -m pip install scikit-build  # Needed for building
sudo python -m pip install PyGObject dbus-python # Notifications example
sudo python setup.py build install  # Python examples not installed

# Or if you would rather install from PyPI, still requires dependencies
sudo python -m pip install masterkeys

Wheels are not provided at this time because building manylinux wheels requires a different environment. It is considered as a possibility though. Until that time, it is possible to use the normal linux_x86_64 wheels provided on the releases-page.

Contributing

Pull Requests and contributions in other forms (such as issue reports) as well as tips or possible improvements are very welcome! As mentioned, this is my first C library, and any help is greatly appreciated! If it comes in the form of code, you will be credited for your work in the copyright notice.

If you would like for your device to be supported, please read the Device Support section of this file.

Given the small size of this project, there is no code of conduct or CONTRIBUTING.md with guidelines, but keep things professional. Also, use descriptive commit messages. Force pushing to forks while a PR is open is fine (as long as it does not completely remove the contributions).

License

MasterKeys Linux - C Library to control RGB keyboards
Copyright (C) 2018 RedFantom

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, version 3.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.

Credits

Part of the implementation of the libmk library is based on the more extensive protocol description written by chmod222, available under the LGPLv3 license in libcmmk, which has the same goal as this project.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].