Control the mouse with the keyboard.
Please see http://www.semicomplete.com/projects/keynav
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.
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 |
FreeBSD | pkgconf libX11 xdotool | Not verified from clean system. 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.
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