Work-in-progress software for managing the Azeron keypad on any operating system.

Overview

azeron-cli

A small, unfinished CLI application intended to manage the Azeron Cyborg.

The code is still in a very messy state and doesn't look very rusty yet, as the priority was to port it first and then transform the code to work better in Rust.

If you want to try out the current state, you will need to install Rust first. After you installed the latest stable version, you can run cargo install --git https://github.com/cozyGalvinism/azeron-cli to install it, although there may be bugs.

Use this software at your own risk! It is not fully tested yet and might brick your Azeron. If you don't know how to reflash the firmware, do not use this yet! You have been warned!

See the examples listed below in order to better understand how to use this software.

I am also not affiliated with Azeron in any way, shape or form. I am simply a Linux user, who wants to set Azeron keys on Linux without using a VM with some programming knowledge I accumulated.

Help with this project is greatly appreciated!

Usage

Right now, only set-button is implemented, which will set a specified button to a keyboard key:

USAGE:
    azeron-cli set-button [OPTIONS] <PROFILE_ID> <BUTTON_ID> <KEY_VALUE>

ARGS:
    <PROFILE_ID>    The profile to set the button in (0 or 1, other values will not work)
    <BUTTON_ID>     The button ID to set (1-38), some of them cannot/shouldn't be set
    <KEY_VALUE>     Key to press, using the Azeron key codes

OPTIONS:
    -h, --help                    Print help information
    -m, --meta-key <META_KEYS>    Meta keys to press (e.g. CTRL, ALT, SHIFT, SUPER). (optional, can
                                  be used multiple times for specifying multiple keys)

The button IDs can be taken from the official application, though here is an image of the layout from the official application:

Button IDs

Possible key values are as follows:

57345 = "MODIFIERKEY_LEFT_CTRL"
57346 = "MODIFIERKEY_LEFT_SHIFT"
57348 = "MODIFIERKEY_LEFT_ALT"
57352 = "MODIFIERKEY_LEFT_GUI"
57360 = "MODIFIERKEY_RIGHT_CTRL"
57376 = "MODIFIERKEY_RIGHT_SHIFT"
57408 = "MODIFIERKEY_RIGHT_ALT"
57472 = "MODIFIERKEY_RIGHT_GUI"
57985 = "KEY_SYSTEM_POWER_DOWN"
57986 = "KEY_SYSTEM_SLEEP"
57987 = "KEY_SYSTEM_WAKE_UP"
58544 = "KEY_MEDIA_RANDOM_PLAY"
58545 = "KEY_MEDIA_PAUSE"
58546 = "KEY_MEDIA_RECORD"
58547 = "KEY_MEDIA_FAST_FORWARD"
58548 = "KEY_MEDIA_REWIND"
58549 = "KEY_MEDIA_NEXT_TRACK"
58550 = "KEY_MEDIA_PREV_TRACK"
58551 = "KEY_MEDIA_STOP"
58552 = "KEY_MEDIA_EJECT"
58573 = "KEY_MEDIA_PLAY_PAUSE"
58574 = "KEY_MEDIA_PLAY_SKIP"
58594 = "KEY_MEDIA_MUTE"
58601 = "KEY_MEDIA_VOLUME_INC"
58602 = "KEY_MEDIA_VOLUME_DEC"
61444 = "KEY_A"
61445 = "KEY_B"
61446 = "KEY_C"
61447 = "KEY_D"
61448 = "KEY_E"
61449 = "KEY_F"
61450 = "KEY_G"
61451 = "KEY_H"
61452 = "KEY_I"
61453 = "KEY_J"
61454 = "KEY_K"
61455 = "KEY_L"
61456 = "KEY_M"
61457 = "KEY_N"
61458 = "KEY_O"
61459 = "KEY_P"
61460 = "KEY_Q"
61461 = "KEY_R"
61462 = "KEY_S"
61463 = "KEY_T"
61464 = "KEY_U"
61465 = "KEY_V"
61466 = "KEY_W"
61467 = "KEY_X"
61468 = "KEY_Y"
61469 = "KEY_Z"
61470 = "KEY_1"
61471 = "KEY_2"
61472 = "KEY_3"
61473 = "KEY_4"
61474 = "KEY_5"
61475 = "KEY_6"
61476 = "KEY_7"
61477 = "KEY_8"
61478 = "KEY_9"
61479 = "KEY_0"
61480 = "KEY_ENTER"
61481 = "KEY_ESC"
61482 = "KEY_BACKSPACE"
61483 = "KEY_TAB"
61484 = "KEY_SPACE"
61485 = "KEY_MINUS"
61486 = "KEY_EQUAL"
61487 = "KEY_LEFT_BRACE"
61488 = "KEY_RIGHT_BRACE"
61489 = "KEY_BACKSLASH"
61490 = "KEY_NON_US_NUM"
61491 = "KEY_SEMICOLON"
61492 = "KEY_QUOTE"
61493 = "KEY_TILDE"
61494 = "KEY_COMMA"
61495 = "KEY_PERIOD"
61496 = "KEY_SLASH"
61497 = "KEY_CAPS_LOCK"
61498 = "KEY_F1"
61499 = "KEY_F2"
61500 = "KEY_F3"
61501 = "KEY_F4"
61502 = "KEY_F5"
61503 = "KEY_F6"
61504 = "KEY_F7"
61505 = "KEY_F8"
61506 = "KEY_F9"
61507 = "KEY_F10"
61508 = "KEY_F11"
61509 = "KEY_F12"
61510 = "KEY_PRINTSCREEN"
61511 = "KEY_SCROLL_LOCK"
61512 = "KEY_PAUSE"
61513 = "KEY_INSERT"
61514 = "KEY_HOME"
61515 = "KEY_PAGE_UP"
61516 = "KEY_DELETE"
61517 = "KEY_END"
61518 = "KEY_PAGE_DOWN"
61519 = "KEY_RIGHT"
61520 = "KEY_LEFT"
61521 = "KEY_DOWN"
61522 = "KEY_UP"
61523 = "KEY_NUM_LOCK"
61524 = "KEYPAD_SLASH"
61525 = "KEYPAD_ASTERIX"
61526 = "KEYPAD_MINUS"
61527 = "KEYPAD_PLUS"
61528 = "KEYPAD_ENTER"
61529 = "KEYPAD_1"
61530 = "KEYPAD_2"
61531 = "KEYPAD_3"
61532 = "KEYPAD_4"
61533 = "KEYPAD_5"
61534 = "KEYPAD_6"
61535 = "KEYPAD_7"
61536 = "KEYPAD_8"
61537 = "KEYPAD_9"
61538 = "KEYPAD_0"
61539 = "KEYPAD_PERIOD"
61540 = "KEY_NON_US_BS"
61541 = "KEY_MENU"
61544 = "KEY_F13"
61545 = "KEY_F14"
61546 = "KEY_F15"
61547 = "KEY_F16"
61548 = "KEY_F17"
61549 = "KEY_F18"
61550 = "KEY_F19"
61551 = "KEY_F20"
61552 = "KEY_F21"
61553 = "KEY_F22"
61554 = "KEY_F23"
61555 = "KEY_F24"

Examples

Setting button 15 to key F on the first profile:

azeron-cli set-button 0 15 61449

Setting button 10 to Ctrl+P on the second profile:

azeron-cli set-button -m CTRL 1 10 61459
You might also like...
A minimalist tool for managing block-lists from the terminal.
A minimalist tool for managing block-lists from the terminal.

Block List A minimalist hosts-based tool for managing block lists and ad-blocking. This project uses the excellent and regularly updated Unified Hosts

A utility for managing cargo dependencies from the command line.

cargo edit This tool extends Cargo to allow you to add, remove, and upgrade dependencies by modifying your Cargo.toml file from the command line. Curr

An utility application to help managing your C++ OI workspaces.

oi_helper oi_helper is an utility application to help managing your C++ OI workspaces. Why oi_helper We all know that we often need a project manager

Tool for managing dotfiles directories; Heavily based on rcm.

Paro paro : to prepare, get ready / set, put / furnish, supply. Tool for managing dotfiles directories; Heavily based on rcm. TODO Rust Boilerplate CI

An interface for managing collections of labeled items and generating random subsets with specified restrictions

An interface for managing collections of labeled items and generating random subsets with specified restrictions

A fast and robust MLOps tool for managing data and pipelines

xvc A Fast and Robust MLOps Swiss-Army Knife in Rust ⌛ When to use xvc? Machine Learning Engineers: When you manage large quantities of unstructured d

A Modern And Secure CLI Tool For Managing Environment Variables
A Modern And Secure CLI Tool For Managing Environment Variables

Envio is a command-line tool that simplifies the management of environment variables across multiple profiles. It allows users to easily switch between different configurations and apply them to their current environment

booky is a minimalstic Tui tool for managing your growing book collection.
booky is a minimalstic Tui tool for managing your growing book collection.

booky booky is a minimalistic TUI tool for managing your growing book collection. It is writtin in Rust and uses diesel as it's orm together with sqli

🛜 TUI for managing bluetooth devices
🛜 TUI for managing bluetooth devices

TUI for managing bluetooth devices 💡 Prerequisites A Linux based OS with bluez installed. 🚀 Installation 📥 Binary release You can download the pre-

Owner
cozyGalvinism
Hi! I'm cozy, a software developer from Germany, who loves challenges! Currently I'm working as IT Developer at @BonMercato
cozyGalvinism
Work-in-progress Rust application that converts C++ header-only libraries to single self-contained headers.

unosolo Work-in-progress Rust application that converts C++ header-only libraries to single self-contained headers. Disclaimer This is my first Rust p

Vittorio Romeo 26 Jul 9, 2021
Work in progress NCBI's Common Tree alternative in the terminal

Lomanai Usage lomanai --species 'Mus musculus' --species 'Homo sapiens' #> Mammalia #> ++Rodentia #> | \-Mus musculus #> \+Primates #> \-Homo sapien

Jean Manguy 3 Dec 20, 2022
A work-in-progress static analyser.

Statan Statan is an early-stage static analyser for PHP and PXP projects. It is being developed in public and the journey is documented on my blog. Th

PXP 12 Jan 30, 2023
A Content Discovery Tool insipired from Feroxbuster. Work In Progress

monologue A Content Discovery Tool written in Rust, insipired from Feroxbuster. Installation Dependencies OpenSSL (If You are on linux). Rust programm

Voyage 3 Jul 20, 2023
A high level DSL for Simplicity. This is a work in progress and is not yet ready for production use

A high level DSL for Simplicity. This is a work in progress and is not yet ready for production use. The language is designed to be simple and easy to use. It is inspired by rust syntax and is statically typed. The syntax will be extended in the future to support more features.

null 13 Oct 28, 2023
Standard Graphics is a command-line tool for printing 2D graphics from any language to any screen.

2D graphics in any programming language with just print statements!

Caleb Winston 123 Nov 20, 2022
UniSBOM is a tool to build a software bill of materials on any platform with a unified data format.

UniSBOM is a tool to build a software bill of materials on any platform with a unified data format. Work in progress Support MacOS Uses system_profile

Simone Margaritelli 32 Nov 2, 2022
An experimental real-time operating system (RTOS) written in Rust

An experimental real-time operating system (RTOS) written in Rust

null 0 Nov 14, 2022
An operating system written in Rust (for fun and educational purposes)

Prestige Prestige is an operating system written for fun and educational purposes in Rust. It targets the x86-64 architecture and can run on common em

binds 3 Nov 14, 2022
Raw C Shell: interact with your operating system using raw C code, because why not?

rcsh Raw C Shell is a minimalist shell with no built in commands. You write entirely in C code and use return; to execute your code. Unlike that silly

null 4 Feb 7, 2023