A utility for X11 that moves the mouse cursor using the keyboard.
A utility for X11 that moves the mouse cursor using the keyboard. Written in Haskell.
This utility only gives you an ability to quickly move your mouse cursor to one of 9 common spots of the screen. It’s intended to reduce the use of the mouse, but not to replace it completely. It doesn’t provide you accurate aiming, only approximate.
You bind a hotkey (in your WM configuration or by using xbindkeys) to run place-cursor-at
(say Super+M
) and when you press it you see 9 windows on current screen with letters shown on them. When you press a letter on your keyboard that is associated with one of those windows your mouse cursor appear at the center of that window and the application closes. Thus you can quickly move your mouse cursor to one of 9 different spots by two-step combo.
Other key bindings:
Press
Escape
to close the application (when one of the letter windows is focused)Move focus to a letter window where you want your mouse cursor to be and press
Enter
(this is the same as pressing that letter on your keyboard)
I originally created this tool it for myself to use it with xmonad and i3.
Requirements
Either one:
libX11
development fileslibXinerama
development files
How to use
With Nix
See Nix Package Manager.
You can run this application like this:
nix-shell --run place-cursor-at
See also shell.nix’s arguments for available options. For instance if you want to enter a nix-shell
with cabal
available:
nix-shell --arg withCabal true
NixOS
You can add this application into your NixOS configuration.nix
like this:
{ pkgs, ... }:
let
place-cursor-at-src = pkgs.fetchFromGitHub {
owner = "unclechu";
repo = "place-cursor-at";
rev = "ffffffffffffffffffffffffffffffffffffffff"; # Git commit hash
sha256 = "0000000000000000000000000000000000000000000000000000";
};
place-cursor-at = pkgs.callPackage place-cursor-at-src {};
in
{
environment.systemPackages = [ place-cursor-at ];
}
With Stack
stack build
stack exec place-cursor-at
You could install place-cursor-at
binary to ~/.local/bin
directory (make sure you have this directory in your PATH
environment variable):
stack install
NixOS note
If you need to work with Stack under NixOS for whatever reason you would have to use --system-ghc
in order to make it work. You can manually add --system-ghc
to each call of stack
or define this alias for your convenience:
alias stack='stack --system-ghc'
Using it as script
You also can run this application as a script (nix-shell
script, so you have to install Nix Package Manager first):
src/place-cursor-at.hs
But this application is intended to be used very often (to be run again and again many times) and to be very responsive, so it’s better to precompile it to reduce startup time.
Xinerama note
By default it appears and do its stuff on display where your mouse cursor is. But you can specify which display where it should appear on:
place-cursor-at 1
Or on third display:
place-cursor-at 3
Jump to specific position without GUI
You can immediately jump to specific position of a screen without showing any GUI, like this:
place-cursor-at LT
It’s case-insensitive, this also would work:
place-cursor-at lt
And you also can specify a display you want to jump to:
place-cursor-at lt 1
In any order of the arguments:
place-cursor-at 1 lt
Codes of available positions
| Code | Deciphering |
| - | - |
| LT | Left-Top |
| LC | Left-Center |
| LB | Left-Bottom |
| CT | Center-Top |
| CC | Center-Center |
| CB | Center-Bottom |
| RT | Right-Top |
| RC | Right-Center |
| RB | Right-Bottom |
Author
Contributors
The logo is created by psikoz and some technical adjustments are made by Viacheslav Lotsmanov.
Licenses
place-cursor-at — GNU/GPLv3
The logo — Creative Commons — Attribution 4.0 International (CC BY 4.0)
These files in artwork/logo directory in particular: