Epomakercontroller
Project description
Epomakercontroller
A CLI tool to interact with an Epomaker RT100 keyboard that comes with a small screen attached. Some features will probably also work with the TH80.
This project is still very rough around the edges!
NOTE!!!: This currently only works over the USB connection!
Features
- Upload images to the RT100 screen
- Send arbitrary numbers to the CPU and Temeprature displays on the screen
- Set RGB patterns on the keyboard
- Set individual key colours
- Start a daemon to continuously update the CPU and temperature on the screen
Requirements
I am using poetry v1.7.1
Installation
I suggest using conda or a python virtual env, tested on python 3.10 and 3.12:
Epomakercontroller package is available on PyPi
$ python3.10 -m venv epomaker
$ source epomaker/bin/activate
$ pip install EpomakerController
You can also install Epomakercontroller via poetry
$ sudo apt install poetry
$ git clone https://github.com/strodgers/epomaker-controller
$ cd epomaker-controller
$ python3.10 -m venv epomaker
$ source epomaker/bin/activate
$ poetry install --only main
Usage
$ epomakercontroller
Usage: epomakercontroller [OPTIONS] COMMAND [ARGS]...
A simple CLI for the EpomakerController.
Options:
--help Show this message and exit.
Commands:
cycle-light-modes Cycle through the light modes.
dev Various dev tools.
list-temp-devices List available temperature devices.
send-cpu Send CPU usage percentage to the Epomaker screen.
send-temperature Send temperature to the Epomaker screen.
send-time Send the current time to the Epomaker device.
set-rgb-all-keys Set RGB colour for all keys.
start-daemon Start a daemon to update the CPU usage and...
upload-image Upload an image to the Epomaker device.
Permissions
In order to communicate with your keyboard without having to use sudo, you can use the tool to generate a udev rule for the connected RT100:
epomakercontroller dev --udev
You will need to enter your password when prompted.
CPU/Temperature display
The temperature on the Epomaker screen is supposed to be for the weather, but I thought it was more useful to display the temperature of some device on the host machine. You will need to find out the label used by a sensor on your machine, which you can do by:
$ epomakercontroller list-temp-devices
Temperature key: nvme
Label: Composite
Current: 35.85°C
High: 82.85°C
Critical: 89.85°C
Label: Composite
Current: 44.85°C
High: 82.85°C
Critical: 89.85°C
Temperature key: amdgpu
Label: edge
Current: 40.0°C
High: N/A°C
Critical: N/A°C
Temperature key: k10temp
Label: Tctl
Current: 44.5°C
High: N/A°C
Critical: N/A°C
Label: Tccd1
Current: 39.0°C
High: N/A°C
Critical: N/A°C
Temperature key: mt7921_phy0
Label: N/A
Current: 28.0°C
High: N/A°C
Critical: N/A°C
Then you can start the daemon with the corresponding label, eg:
epomakercontroller start-daemon k10temp
Alternatively leave the label blank to disable and only do CPU usage:
epomakercontroller start-daemon
The daemon will also update the date and time once when it starts
Note about interface numbers
I only have my own keyboard to go by, but as far as I can tell there are 3 available HID interfaces available when the keyboard is plugged in over USB. All 3 of them will work with this controller HOWEVER using interface 0 interferes with regular usage of the keyboard (eg typing).
I have found interface 1 to be the best to use, but some commands take an option for you to set the interface number manually if you need to eg:
epomakercontroller start-daemon --interface 2
You can also print all the available information about the connected keyboard using the 'dev' command. Here is an example of the output from my own keyboard:
epomakercontroller dev --print
Printing all available information about the connected keyboard.
WARNING: If this program errors out or you cancel early, the keyboard
may become unresponsive. It should work fine again if you unplug and plug
it back in!
[{'interface_number': 0,
'manufacturer_string': 'ROYUAN',
'path': b'5-2.3:1.0',
'product_id': 16400,
'product_string': 'RT100 Wired',
'release_number': 1281,
'serial_number': '',
'usage': 0,
'usage_page': 0,
'vendor_id': 12625},
{'interface_number': 1,
'manufacturer_string': 'ROYUAN',
'path': b'5-2.3:1.1',
'product_id': 16400,
'product_string': 'RT100 Wired',
'release_number': 1281,
'serial_number': '',
'usage': 0,
'usage_page': 0,
'vendor_id': 12625},
{'interface_number': 2,
'manufacturer_string': 'ROYUAN',
'path': b'5-2.3:1.2',
'product_id': 16400,
'product_string': 'RT100 Wired',
'release_number': 1281,
'serial_number': '',
'usage': 0,
'usage_page': 0,
'vendor_id': 12625}]
TODO
- Support bluetooth/2.4Ghz
- Upload GIFs
- Macros
Contributing
Contributions are very welcome.
License
Distributed under the terms of the MIT license, Epomakercontroller is free and open source software.
Issues
If you encounter any problems, please [file an issue] along with a detailed description.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file epomakercontroller-0.0.5.tar.gz
.
File metadata
- Download URL: epomakercontroller-0.0.5.tar.gz
- Upload date:
- Size: 18.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 06f09ea2dfef7faf500f8314532e295ea7136ba21ddcf5555d5e2b751a950861 |
|
MD5 | 0e48628d4bcd1f5601eeb48390c09cc5 |
|
BLAKE2b-256 | 47bd7faf69545bc6e77debe2fbd896f6c637736b22ad554941456f6f4a4b4e97 |
File details
Details for the file epomakercontroller-0.0.5-py3-none-any.whl
.
File metadata
- Download URL: epomakercontroller-0.0.5-py3-none-any.whl
- Upload date:
- Size: 23.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 956c85a2f26bb8b02d9364018fa31a10522ace50b4521534d9326de5b5e5db4c |
|
MD5 | f12ef21a4cbcf7e0642c0169d16aae22 |
|
BLAKE2b-256 | 699ae74936e084e5b5d7e3ae5bc6d0a4faa24af08f6687660e4fe471008dc51e |