Skip to main content

Macro daemon for dedicated keyboards

Project description

# macrokeyd

macrokeyd is a Python daemon that allows assigning custom actions to a specific keyboard, such as commands, text, system shortcuts, or chained sequences. It is designed to run as a systemd service and configured through modular JSON files.


🚀 Quick Installation from PyPI

pip install macrokeyd

Requires Python >= 3.7 and Linux with evdev support.


🧪 Testing Installation

macrokeyd --help
macrokeyd --version

You can start the daemon with:

macrokeyd --run

By default, it searches for ~/.local/share/macrokeyd/default.json and creates it if it doesn't exist.


⚙️ Installing as a systemd service

macrokeyd-install-service

Check the status:

systemctl status macrokeyd

Uninstall:

macrokeyd-uninstall-service

📌 Installation with System Python (Recommended for Gtk Integration)

If you're using Gtk integration (such as PyGObject), it's recommended to use the system Python to avoid compatibility issues:

sudo apt install python3 python3-pip python3-venv python3-gi python3-gi-cairo gir1.2-gtk-3.0 gir1.2-appindicator3-0.1

Also, install Tkinter for MouseInfo support, which requires system-level libraries:

sudo apt install python3-tk python3-dev
pyenv virtualenv --system-site-packages system macrokeyd-env
pyenv local macrokeyd-env
pip install macrokeyd

Verify the installation:

python -c "import gi; print(gi.__file__)"

The output should resemble:

/usr/lib/python3/dist-packages/gi/__init__.py

🎛️ Macro Configuration

The configuration file is located at (or created at):

~/.local/share/macrokeyd/default.json

Example content:

{
  "meta": {
    "target_device_name": "TEC-FX556K"
  },
  "macros": {
    "KEY_Q": {"action": "command", "value": "gnome-terminal"},
    "KEY_W": {"action": "text", "value": "Hello world"}
  }
}

🧱 Local Development

git clone https://gitlab.com/your_user/macrokeyd.git
cd macrokeyd
make install

🛠 Useful Commands (make)

  • make build → generates .whl and .tar.gz packages
  • make install → installs locally with --force-reinstall
  • make clean → cleans up artifacts
  • make release LEVEL=patch → bumps version and pushes
  • make release-changelog → same as release and updates CHANGELOG.md
  • make release-pypi → publishes to PyPI
  • make release-test → publishes to TestPyPI

📦 Publishing to PyPI

Check RELEASE.md for the full versioning and release cycle details.

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

macrokeyd-0.1.11.tar.gz (2.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

macrokeyd-0.1.11-py3-none-any.whl (2.1 MB view details)

Uploaded Python 3

File details

Details for the file macrokeyd-0.1.11.tar.gz.

File metadata

  • Download URL: macrokeyd-0.1.11.tar.gz
  • Upload date:
  • Size: 2.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.12

File hashes

Hashes for macrokeyd-0.1.11.tar.gz
Algorithm Hash digest
SHA256 cc6134581a6a5714202c11901f4159abab3819bdf7f506fdad266f6d02e8f565
MD5 d05f1bea97d8e7b711dcf788c416f999
BLAKE2b-256 f3c12b7d9c6e0665c6d1c3011be089ef366671c9bcd3d8c0518316467d1bb928

See more details on using hashes here.

File details

Details for the file macrokeyd-0.1.11-py3-none-any.whl.

File metadata

  • Download URL: macrokeyd-0.1.11-py3-none-any.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.12

File hashes

Hashes for macrokeyd-0.1.11-py3-none-any.whl
Algorithm Hash digest
SHA256 a47ac603c8b6d61a7811bdd92c0bbb6b018e01ad7b3dedd60b4cb4899bd3c025
MD5 ade212568d213ff20337ea293df2ce28
BLAKE2b-256 43558aff5380dfbd04456b40b1999184d8444b53fa46cfee338577b5aad37e40

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page