keynav - retire your mouse.
Posted Fri, 15 Oct 2010
Table of Contents
- Raise a window and give it focus: 80x80 pixel target (worst: 9 moves)
- Click on an "OK" button: 60x25 pixels (worst: 11 moves)
- Click on a text widget to activate it: 80x25 or larger
- FreeBSD + Xorg 6.9.0
- FreeBSD + Xorg 7.2.0
- Ubuntu Dapper + Xorg 7.0.0
- Ubuntu Feisty + Xorg 7.2.0
- Ubuntu Hardy + Xorg 7.2.0
- Cygwin + Xorg 6.8.x
- Fedora 9
- glib >= 2.0
- libxdo (from xdotool) (or, if you build static, libX11 libXtst and libXext)
- Xinerama (comes with xorg)
- XSHAPE (comes with xorg)
- Debian users can install this package via apt-get install keynav
- FreeBSD users can install this from ports in x11/keynav
- h : select the left half of the region
- j : select the bottom half of the region
- k : select the top half of the region
- l : select the right half of the region
- shift+h : move the region left
- shift+j : move the region down
- shift+k : move the region top
- shift+l : move the region right
- semicolon : Move the mouse to the center of the selected region
- spacebar : Move the mouse and left-click
- escape : Cancel the move
space warp,click 1,endThis would move the mouse, click left mouse button, and finish (close the keynav selector) when you hit spacebar while keynav was active. A sample config file comes with the distribution as 'keynavrc'. The following is a list of key modifiers: shift, ctrl, alt, or any valid X Keysym, such as Shift_L, etc. List of commands:
- Activate keynav
- Deactivate keynav
- cut-left, cut-right, cut-up, and cut-down
- Cut half of the selection in a given direction. For example, cut-left will select the left half of keynav selector region. If you attempt to cut the window too small, the operation will abort. Cut can take a percentage value to cut by. The default is ".5"
- move-left, move-right, move-up, move-down
- Move the selector window a given direction. The movement amount is equal to the width or height of the selector depending on the direction. You cannot move the window outside the bounds of the screen. Move can take percentage value that specifies the distance relative to the size of the window. The default is "1.0"
- Move the mouse to the center of the selector
- click <button>
- Click the given mouse button once. 1 == left, 2 == middle, 3 == right.
- doubleclick <button>
- Click the mouse button twice, quickly. This can also be achieved by doing "click 1,click 1" in your command sequence.
- drag <button> [keyseq]
- Toggle dragging mode for the given button. If
keyseqis given then that keysequence is held during the initial mouse button down event. This is useful in invocations such as 'drag 1 alt' to do a alt+click-drag on a window to move it.
- grid <rows>x<columns> [Added 20080509]
- Change the grid layout of the selection. For example, specifying 'grid 3x3' will divde the screen selection into 9 cells, 3 rows and 3 columns. Specifying 'grid 2x3' will divide the screen selection into 6 cells, 2 rows and 3 columns.
- cell-select <row>x<column> OR cell-select <cell> [Added 20080509]
- Select a specific cell in the grid. The NxM syntax selects the
specific row and column. The single number syntax selects the cell
numbered counting from the top left to the bottom left. For example, a 3x3 grid would be numbered this way:
1 2 3 4 5 6 7 8 9
- grid-nav <on or off>
- Activates grid navigation. This is also describable as 'battleship navigation' if you are familiar with that classic game. This will make all cells visibly labeled by a two letters which are used as coordinates to type. For example, 'grid 5x5,grid-nav on' will give you a 5x5 grid with grid nav enabled, making all cells labeled starting AA, AB, AC ... AE, BA, BB ... EE.
- sh <command>
- Execute a command. This is run as /bin/sh -c <command >. For example:
run xterm,endThis will start an xterm and end keynav selection. This allows you to use keynav as a general-purpose key-binding tool.
- Go back one step in the movement history. Keynav keeps track of your keynav activity and this command allows you to step backwards. For example, if you cut-right, move-left, cut-up, then invoke history-back 3 times, your movements/cuts will be undone, in order.
- Tell keynav to exit
- record [filename]
- Record activities and save it to a register. This is very similar to
vim's 'q' command which lets you record things.
Optional argument is a filename to save the recordings to for persistence across keynav runs. A single file will hold multiple recordings.
Example in keynavrc to bind 'q' to record to ~/.keynav_macros:
q record ~/.keynav_macros
Works similar to vim recording.
- Hit record once
- Type the key you want to record to
- Do things in keynav you want recorded.
- Any 'end' operation or hitting record again will terminate and save this recording.
- Makes the keynav window the same size and position as the current active application window.
- cursorzoom <width> <height>
- Centers the keynav window on the cursor with the given size.