Coder Social home page Coder Social logo

redfantom / python-rgbkeyboards Goto Github PK

View Code? Open in Web Editor NEW
25.0 6.0 3.0 92 KB

Wrappers for various RGB keyboard SDKs in Python

License: GNU General Public License v3.0

Python 100.00%
logitech corsair coolermaster rgb keyboards mechanical-keyboard python wrapper sdk

python-rgbkeyboards's Introduction

Python RGB Keyboards Library

GPL License

This is a project that aims to create a universal RGB keyboard control library in Python. Using the varous SDKs available and by creating wrappers around them, this library allows you to control the RGB k eyboards of multiple brands in a universal manner with the same function structure and arguments passed.

Keyboards

Please check the BACKENDS.md file for more information on what keyboards are supported by the various included back-ends in this library. Most back-ends have additional dependencies that might not be free software on depend on non-free software.

License

Python RGB Keyboards
Copyright (C) 2017 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, either version 3 of the License, or
(at your option) any later version.

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 <http://www.gnu.org/licenses/>.

Goals

The goal of this project is to provide a universal interface for all RGB Keyboards for Python programmers with a consistent function structure. I would like to include as many keyboards in the library as possible, but I can only test the code for the Cooler MasterKeys SDK. If you experience any issues, please report them in the issues section. Also,

Contribute

If you would like to contribute to the project, by either reporting issues or writing code, that would be great! You can either fork the repository, or you can send me an e-mail on [email protected] so I can add you as a contributer to the project.

Credits

  • 10se1ucgo and JiFish for creating the cue_sdk Python wrapper which is used in this project (Apache 2.0 License)

python-rgbkeyboards's People

Contributors

redfantom avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

python-rgbkeyboards's Issues

Include Cooler Master SDK

Because the Cooler Master SDK DLL-files are proprietary software under a normal copyright, the files are currently not included in the library. Including them with the software written by a developer is currently also not allowed, as the license is non-transferable. This severely limits the options of developers, and therefore I have contacted Cooler Master about this. I will update this thread with any news I might have.

Thread locking in test_backend: TestKeyboards.test_enable_control

I'm attempting to use this library with my CoolerMaster Masterkeys Pro L RGB ANSI keyboard.

When running the tests, it freezes at the test_enable_control test, it appears that BaseKeyboard.enable_control() calls self._exec_func(self._enable_control), which first acquires the lock, then calls masterkeys.py's Keyboard._enable_control(), which calls Keyboard._set_control_device(), which calls BaseKeyboard.get_device_available(), which requires it to acquire the same lock that was acquired at the start.

Implement support for Razer keyboards on Linux using openrazer

Support for Razer keyboards will not be added, for a few reasons.

There would be two ways to add support for these keyboards:

  • By using the new REST based API of the Razer Synapse software
  • By writing code that calls into DLL-files distributed only with the Razer Synapse software
    Both of these methods clearly make the whole library dependent on not only closed-source software (which I am okay with), but a completely closed ecosystem, which I cannot agree with.

Razer does provide a separate SDK (which still requires the Synapse software to be installed), but this is quite a complicated one with lots of weird data structures (which, I my opinion, are completely overkill for the task they should perform), which would be difficult to replicate in Python's ctypes.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.