Awesome
Keydogger
Keylogger but funnier
Keydogger is a tiny text expander written in C
[!WARNING] This is a privileged application. Hence it NEEDS sudo privileges. I have tried to keep the codebase small to reduce the footprint
Prerequisites
wl-clipboard
gcc
make
git clone https://github.com/jarusll/keydogger.git
cd keydogger
Configuration
Set the environment KEYDOGGER_KEYBOARD
as the path to your keyboard device.
It should be of the pattern /dev/input/eventX
. X will be different for your system. You can use evtest
to find out your keyboard device path.
Installation
To install, run the following as sudo
make clean install
Testing
You can test out sample expansions from the local keydoggerrc
file by
make clean build
sudo ./keydogger debug
Usage
Configuring expansions
Set trigger and expansion values in ~/keydoggerrc
. Expansion definitions follow the format trigger=expansion
.
Here are some sample expansions you might like
@hello=Hello, World!
@program=Keydogger
:love:=❤️
@gg=Good game folks, see you tomorrow
@@=jarusll@the-mail.net
:ai=explain in short and simple terms
@install=sudo package-manager install -y
@update=sudo package-manager update -y
@restart=sudo keydogger stop && sudo keydogger start
@backup=rsync -avz ~/important_files/ jarusll@homeserver:backups/
Commands
# -E flag to preseve env variables if you've already set KEYDOGGER_KEYBOARD
sudo -E keydogger start
# Here's another way to pass env variables
sudo env KEYDOGGER_KEYBOARD=/dev/input/event<N> keydogger status
sudo keydogger status
sudo keydogger stop
# Restart if you want to switch keyboards or reload expansions
sudo -E keydogger restart
TODO
v1
- Daemonize it
- Use
/dev/uinput
to emit events - Read trigger & expansions from
.keydoggerrc
v2
- Unicode support
v2.1
- feat: Keyboard path as environment Variable
KEYDOGGER_KEYBOARD
2.2
- fix: Send keyup for all trigger keys to fix keypresses for characters common in trigger & expansion
Acknowledgements
- emisilve86 for their code
- Espanso for the
1000
microseconds of delay between events - ydotool for direct mapping of
character code
toLinux key code
Contributing
Patches are preffered over PR because this is a mirror of my personal git server.