More keyboards = faster hacking
Keebie is basically a small script for assigning and executing commands on a theoretically unlimited number of keyboards. So you can make the spacebar search for a window and paste something. Or make the M button run a script. Or even crazier things like triple tapping a key combination to execute a command.
-
If somebody has made available a package for your OS go ahead install it and move on.
-
If not you can download the source and run
make install
. Make sure you havepython3
,python3-evdev
, andinotify-tools
(or your package manager's equivalents) installed. -
If you would like to build a package of Keebie download the source, install fpm, and run
make pkg pkg_type="<type>"
.
Once you've installed Keebie you should run keebie --new
to set up a macro device.
-
--layers
,-l
- Display the contents of all layer files.
-
--detect
,-d
- Tell you the path to a device you press a key on.
-
--add [layer]
,-a [layer]
- Launch a shell to add a macro to a layer, if no layer is specified this adds to
default.json
. - This requires that at least one device has been set up with
--edit
- See layer syntax section below for more information on special syntax for doing things other than commands.
- Launch a shell to add a macro to a layer, if no layer is specified this adds to
-
--settings
,-s
- Launch a shell to edit your settings, see the settings section below
-
--edit [layer]
,-e [layer]
- Launch a shell to edit a layer and its macros, if no layer is specified this adds to
default.json
.
- Launch a shell to edit a layer and its macros, if no layer is specified this adds to
-
--new
,-n
- Launch a shell to set up a device for use with Keebie, also make a udev rule to give access to the device which will require you to give a password to sudo.
- You should run this should first upon installation.
-
--remove [device]
,-r [device]
- Launch into a shell to remove device file and udev rule, if you don't specify a device you will be prompted for one.
-
--verbose
,-v
- Makes Keebie more verbose, good for debugging.
-
--pause
,-P
- Pause keebie (if a normal instance is running).
-
--resume
,-R
- Resume keebie (if a normal instance is running).
-
--stop
,-S
- Stop keebie (if a normal instance is running).
-
--install
,-I
- Install default files to your home's
.config/
directory (this gets done automatically if they arn't present).
- Install default files to your home's
-
-h
,--help
- Print usage information.
Keebie has a few settings that may be edited with --settings
(or -s
), here is what the settings are.
-
multiKeyMode
- Decides how Keebie handles multiple held keys.
combination
: How you would expect things to work, held keys are treated together.sequence
: Held keys are treated together based on the order they were held in. Its weird but might help to cram more macros onto a keyboard.
- Decides how Keebie handles multiple held keys.
-
forceBackground
True
: All commands should be run in the background (as opposed to waiting for them to finish before continuing).False
: Commands are left unchanged (for now).
-
backgroundInversion
True
: Make all background commands are made to run in the foreground an vice-versa. If combined withforceBackground
isTrue
all commands run in the foreground.False
: Commands are left unchanged.
-
loopDelay
- Decides how often Keebie reads devices. Higher values lead to less responsive macros, lower values lead to higher CPU usage, setting this to 0 will eat a lot of CPU time.
-
holdThreshold
- How many seconds a key combination must be held without adding or removing keys in order for it to be recoreded as held.
-
flushTimeout
- How many seconds to wait for more keystrokes before deciding a keystroke sequence has ended.
Keebie interprets some special syntax listed below
-
layer:<layername>
- This will switch to the specified layer, when entering this into the
--add
shell you will be prompted to set up the layer.
- This will switch to the specified layer, when entering this into the
-
<script type>:<script name>
- This will launch different types of scripts in
~/.config/keebie/scripts/
. - Script types are as follows.
script
will launch the named script withbash
.py
will launch the named script withpython
.py2
will launch the named script withpython2
.py3
will launch the named script withpython3
.exec
will execute the named file without an interpreter.
- This will launch different types of scripts in