Skip to content
retire your mouse.
C Makefile Shell
Branch: master
Clone or download
Pull request Compare This branch is 18 commits ahead, 3 commits behind jordansissel:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples
.gitignore
.gitlab-ci.yml
CHANGELIST
COPYRIGHT
DEBIAN
Dockerfile.alpine39
Dockerfile.centos7
Dockerfile.opensuseleap151
Dockerfile.opensusetumbleweed
Dockerfile.ubuntu1804
Makefile
README.md
TODO
keynav.c
keynav.pod
keynavrc
test.sh
version.sh

README.md

keynav

Control the mouse with the keyboard.

Please see http://www.semicomplete.com/projects/keynav

Compiling

You may need some extra libraries to compile keynav. See the table in the next section for known dependencies.

Next you simply run make:

make

This will produce an executable ./keynav which may be run directly (or copied somewhere in your path). You can also install (by default directly to /usr) via make install.

On FreeBSD (and, I expect, other non-GNU platforms), you will want to use gmake.

Platforms

OS Dependencies Notes
Alpine Linux cairo-dev libxinerama-dev xdotool-dev libxrandr-dev musl-dev
Debian, Ubuntu libcairo2-dev libxinerama-dev libxdo-dev libxrandr-dev
NetBSD xdotool Use gmake
openSUSE Leap/Tumbleweed cairo-devel libXinerama-devel xdotool-devel libXrandr-devel glib2-devel
RHEL/CentOS 7 cairo-devel libXinerama-devel libxdo-devel libXrandr-devel glib2-devel Requires EPEL

Listed dependencies are in addition to GNU make and a C compiler.

FAQ

Q: What platforms are supported?
A: keynav should work on nearly any Unix-like that runs X11. It has been confirmed to work on extremely varied GNU/Linux systems (incuding RPM-based, Debian derivatives, musl-based systems, and Arch), and FreeBSD. If you get it to run elsewhere, please let me know so I can add it to the list. If you try to run it on another Unix-like and have trouble, please get in touch and I'll try to help. If attempting to run elsewhere, note that we currently have a dependency on GNU Make (gmake), and it hasn't been tested with many compilers yet.

Q: Does it work on Android/Windows/Wayland/iOS/...?
A: Sadly, no; keynav is totally dependent on X11, and porting it to any other graphical system would really be a clone/rewrite. Although I am aware of no exact analogues on other systems, I suggest looking into Tasker (Android), AutoHotKey (Windows), and AppleScript (macOS). If you find something that works, let me know and I'll consider adding it to this list.

Q: Can I use keynav to scroll?
A: Yes! X11 represents mouse scrolling as key presses, so you just add the relevant stanza to your keynavrc. Mouse buttons are 1=left, 2=middle, 3=right, 4=scroll-up, 5=scroll-down, 6=scroll-left, 7=scroll-right. So for example to scroll up with i and down with e:

i click 4,end
e click 5,end

or to keep scrolling without having to re-invoke keynav, remove the end command from the bindings, like this:

i click 4
You can’t perform that action at this time.