Never touch your mouse again.
nib is a keyboard-driven pointer for macOS. Press one chord, and h j k l moves, clicks, drags and scrolls — without your hands ever leaving the home row.
Activate from anywhere with ⌘⌥Space, exit with Esc.
Grid mode: press a label to zoom in, any action key to click.
One modal keyboard layer, every pointer action.
Activate, drive the cursor, act — then give control back. nib borrows the keyboard just long enough to do what the mouse would have done.
Free-move
h j k l or the arrow keys move the pointer, accelerating the longer you hold. Hold shift for coarse steps, f for pixel-precise ones.
Full click set
Left, right, middle and double-click each get their own key. Press g to grab, move, and drop — no held-down dragging required.
Grid mode
Press Tab to split the screen into a labeled 3×3 grid. Re-subdivide up to 3 levels deep, then act on any cell without narrowing all the way.
Fully remappable
Every chord, key and movement constant lives in one plain-text config file. Edit it and reload live — no restart needed.
Precise targeting, anywhere on screen.
Grid mode gets a cursor across a 4K display in a handful of keystrokes — no hunting, no acceleration curves to fight.
- 1
Activate, then press Tab
A translucent grid covers the screen, split 3×3 and labeled Q W E / A S D / Z X C.
- 2
Narrow in, or don't
Press a label to re-subdivide inside that cell. Repeat up to 3 levels for pixel-level targeting.
- 3
Act on the current cell
At any point, press an action key — Space, r, d — to act at the cell's center.
- 4
Esc cancels
Back out any time without acting on the screen.
Quick first test: launch → grant permission → ⌘⌥Space → Tab → ss → Space. The cursor lands near screen-center and clicks.
Free-move mode, at a glance.
The default mode the moment nib activates. Every binding below is a default — all of them are remappable.
| hjkl← ↓ ↑ → | move left / down / up / right (accelerates while held) |
| Shift+ move | coarse step (5×) |
| f+ move | fine step (1px) |
| SpaceEnter | left click |
| r | right click |
| m | middle click |
| d | double click |
| g | drag — grab, move, g again (or click) to drop |
| Ctrl+ h j k l | scroll |
One config file. Nothing hidden.
nib reads a plain line-based file from$HOME/.config/nib/config. Missing fields fall back to sane defaults — malformed ones are logged and skipped, never crash the app.
Change the activation chord, remap every action, tune movement acceleration, grid depth and overlay colors — then hit Reload Config from the menu bar to apply it live.
[activation]
toggle = cmd+alt+space
[keybindings]
move_left = h, left
left_click = space, enter, keypad_enter
grid_mode = tab
scroll_down = ctrl+j
[grid]
rows = 3
cols = 3
depth = 3
labels = q,w,e,a,s,d,z,x,c
[movement]
base_step = 20
fine_step = 1
Get nib
nib is pre-release: ad-hoc signed only, not yet notarized. Grab the latest macOS build below.
Download for macOSApple silicon · .app bundle (zip)
- macOS (developed on 26.x), Apple silicon
- Accessibility permission, granted from the menu bar on first run
Launch the .app bundle, not the bare binary — that's what gives nib its own Accessibility identity instead of borrowing your terminal's.
First run
- 1
Unzip and install
Move Nib.app into your Applications folder.
- 2
Right-click → Open
The build is unsigned, so bypass Gatekeeper the first time with right-click → Open.
- 3
Grant Accessibility
Approve the permission prompt from the menu bar — nib needs it to move the cursor.
- 4
Activate
Press the chord and you're driving the pointer from the keyboard.
Activate anywhere with ⌘⌥Space, back out with Esc.