Copyright © 2019 Axel Svensson email@example.com Legal: See COPYING.txt
Keyboa is a flexible tool for customizing keyboard functionality. It is intended for power users with some scripting skill, or as a starting point for developing a keyboard customization application.
It gives the user complete programmatic control over the key-event stream (to the limits imposed by the OS). That way, it goes far beyond mere layout customization.
The system is designed as a stream processing pipeline, and has three major parts.
The first part in the pipeline is the listener. It plugs into the event stream coming from the keyboard, reads the key events, prevents them from being handled by applications, converts them to a simple format and prints them on stdout. On Windows, this is listenkey.exe.
The second part is the processor, and is defined by the user. It can be any program that reads key events from stdin in a simple format, processes them in any suitable way, and prints the resulting key events on stdout. You can write your processor in any language you please, but if you choose to use Python you will have the advantage of libkeyboa, a Python library custom made for this purpose.
The third part reads key events on stdin and sends them along to applications as if they came from the keyboard. On Windows, this is sendkey.exe.
Currently, only Windows is supported. The ambition is to support Linux soon. MacOS could be considered at a later time.
You can download a release at https://github.com/svenssonaxel/keyboa/releases
Building from source
Building is tested on Cygwin and Debian. The make scripts will attempt to detect missing dependencies and give hints on how to install them.
- mingw32 for building Windows executables
- gcc for building Linux executables
- scdoc for building man pages
- pandoc for building html and pdf documentation
You can then install with
make install and uninstall with
A release contains:
- Pre-built, standalone executables
- Ready-to-use Python 3 library
- Documentation in man, HTML and PDF formats
For quick reference, run
listenkey -h and
layout2.py for examples of how to write and run a processor using
Use with care
listenkey with the
-c option will prevent key events from reaching the applications. Unless you use it in combination with the
-d option, you run the risk of partially losing control of your computer. This particular foot gun is necessary for the core functionality, so it will stay this way. For every-day use, the recommended and conservative choice is to use
-c in combination with
-e. This way you can at least exit
listenkey by pressing Esc.
Alpha stage code
Keyboa is in alpha stage. The
keyboa-API format and the CLI interface to
sendkey will not be stable until the release of keyboa version 2.0.0.