A simple Python GUI application that allows users to bind keys to specific mouse click coordinates.
- Keybinding: Bind any key combination to specific screen coordinates.
- Action Types: Support for Click, Double-Click, Drag, and more.
- Macro Suite: Create and save complex sequences of clicks, keystrokes, and delays.
- Auto-Typer: Integrated text typing with human-like random delay support.
- Profile Management: Save multiple sets of keybinds for different applications or games.
- Safety Kill-Switch: Global emergency stop (
Ctrl + Alt + K) orEscto halt all actions. - System Tray Integration: Runs quietly in the background with a tray icon.
- Cross-Platform Support: Optimized for Windows (Pynput) and Linux (Evdev/UInput).
- Wayland Native: Pixel-perfect click synchronization on Wayland using hardware-level absolute coordinate injection.
- Python 3.8+
- Dependencies listed in
requirements.txt - (Linux)
libevdevanduinputkernel support.
git clone https://github.com/westkevin12/XvG-AutoKeybind.git
cd XvG-AutoKeybindOn Linux, the application uses Evdev to bypass compositor restrictions and UInput for hardware-level injection.
Automatic Setup (Ubuntu/Debian):
# Installs system libraries, sets up groups, and configures udev rules
./scripts/install_linux.shManual Setup:
- Dependencies:
sudo apt-get install build-essential python3-dev libevdev-dev python3-tk xdotool - Permissions: The app requires access to
/dev/uinputand input devices. We useudevrules to grant this securely to the current user (viauaccesstag). - UDev Rules: Run the helper script to install the rules:
./scripts/fix_wayland_permissions.sh
- Apply Changes: You may need to reboot or re-login for these
udevrules to apply to existing devices.
Recommended (UV):
uv venv
uv pip install -r requirements.txtStandard Pip:
pip install -r requirements.txt-
Launch the Application:
- Run
uv run autokeybind.pyorpython autokeybind.py. - Check the status bar:
Input: Evdev (Global)-> Full Wayland/Background support.Input: Pynput (Restricted)-> Fallback mode (mostly X11/Windows).
- Run
-
Manage Profiles:
- Create new profiles or use the "Default" one.
- Profiles are saved automatically to
profiles.json.
-
Add Keybinds:
- Click "Add Keybind".
- Action Type:
- Click/Double-Click: Basic mouse actions.
- Drag & Return: Hardware-synced drag operations.
-
Macro Editor:
- Use the "Manage Macros" button to build sequences.
- Tip: In the text editor, use
\nfor Enter.
-
Global Kill-Switch:
- Press
Ctrl + Alt + Kto exit immediately. - Press
Escto stop a running macro.
- Press
autokeybind.py: Main GUI and application logic.input_engine.py: Core input sniffing and injection (Pynput & Evdev).scripts/: Production build and installation tools.tests/: Essential regression and verification tests.profiles.json: Saved configurations.
- Linux:
./scripts/build_linux.sh(Output indist/release/) - Windows:
./scripts/build_installer.sh
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.