rnayabed / rangoli

Free, Open Source, Lightweight, Cross-platform Software for Royal Kludge Keyboards
https://rnayabed.github.io/rangoli_website
GNU General Public License v3.0
245 stars 10 forks source link
c-plus-plus cross-platform keyboard material-design qml qt qt6 royal-kludge
Rangoli # Rangoli / रंगोली / রঙ্গোলি *Free, Open Source, Lightweight, Cross-platform Software for Royal Kludge Keyboards* ![version](https://img.shields.io/badge/Version-2.0-green) ![Total Downloads](https://img.shields.io/github/downloads/rnayabed/rangoli/total?label=Total%20Downloads) [![Tip Me via PayPal](https://img.shields.io/badge/PayPal-Tip%20me-blue.svg?logo=paypal)](https://www.paypal.me/rnayabed) [![Tip Me via Ko-Fi](https://img.shields.io/badge/Ko--Fi-Tip%20me-red.svg?logo=kofi)](https://ko-fi.com/rnayabed) Rangoli Main Screenshot ### [Website](https://rnayabed.github.io/rangoli_website) ### [Demonstration Video](https://youtu.be/MTGICKC4G5U) ### [Screenshots](https://github.com/rnayabed/rangoli/blob/master/screenshots/README.md#screenshots) ### [Keyboards Support Status List](https://github.com/rnayabed/rangoli/blob/master/keyboards-list.md) ### [Download latest release](https://github.com/rnayabed/rangoli/releases/latest) **If you enjoy using Rangoli, please consider [donating](https://github.com/rnayabed/rangoli#donate)**

Purpose

Royal Kludge Keyboards are very popular in the budget mechanical keyboard community. Sometimes it is the only viable option for students especially from developing countries like me. However, they are infamous for poor software support.

There are efforts to get 3rd party firmware like QMK to run on some of these keyboards, but not every keyboard is supported. Also there are keyboards with the same model name but different processors. The entire process is risky and not recommended for begineers.

I decided to try another approach to this problem. I reverse engineered the protocol these keyboards use with their default firmware. I did this by using Wireshark to capture and observe USB packets sent from my PC to my keyboard after editing settings in the RK Software.

Therefore, instead of changing the keyboard firmware, this software pretends to be "RK Software".It is plug and play!

Pros over RK Software

Supported features

Planned features

Features that will not be worked on

Disclaimer

Rangoli is NOT official software. It is a hobby project.

There is no guarantee that it will work with your keyboard. There is no official documentation for the RK Software protocol, so I had to reverse engineer it based on the RK71RGB N Keyboard. Other keyboards are not guaranteed to work. I am not responsible if you brick your keyboard.

Compile and Run from source

Prerequisites

Clone

Rangoli uses hidapi. It has been included as a submodule. Therefore, you need to clone the repository with --recurse-submodules.

git clone --recurse-submodules https://github.com/rnayabed/rangoli.git

In case you forget to do that, you need to run the following command:

git submodule update --init

Compile

cmake -B build -G Ninja -S . -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel

Run

Bugs and Support

If you want to report an issue or sugggest a feature, please report it by creating a GitHub issue.

You may also contact me via any of the following platforms:

Donate

It takes a lot of time and effort to build quality software. Anything will be highly appreciated <3

Credits

Developed by Debayan Sutradhar. All Rights Reserved.

Logo by Sab GFX.

License

Rangoli is licensed to GNU General Public License v3.0.

Rangoli - Free, Open Source, Lightweight, Cross-platform Software for Royal Kludge Keyboards
Copyright (C) 2023 Debayan Sutradhar (rnayabed)

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.