# Navigation, deletion, and mouse

> Move and select text, delete by character, word or line, and drive the pointer and wheel from the home row, the arrow keys or the keypad.

---

LLMS index: [llms.txt](/llms.txt)

---

The pink and brown areas around the home row carry the layout's most frequent
operations. The navigation and deletion families together carry 114 of the 282
mappings in V3.1, so this is the part of the layout worth learning first.

> [!IMPORTANT]
> Unless stated otherwise, every chord on this page assumes ✱
> Hyper is held. "+ ⌘" therefore means
> ✱ + ⌘ plus the listed key.

## The navigator block {#navigation}

H J K L move left,
down, up, and right, exactly as in Vim. Directly above them,
U I O P extend the same
idea to whole pages and lines: Page Up, Home, End, Page Down.

Those eight keys are the only ones mapped on nine different planes. Each group
of planes below covers one job, and together they account for 72 of the 282
mappings in V3.1.

### Moving and selecting text {#selection}

The text layer follows one rule: hold ⌘ and a movement becomes a
selection, because the rule emits the same arrow key with ⇧
added. Adding ⌥ on top widens the unit: a character becomes a
word, a line becomes three lines, half a line becomes the whole line.

| Key | Hyper | + ⌘ | + ⌘ + ⌥ |
| :--- | :--- | :--- | :--- |
| H | Left | Select left | Select word left |
| J | Down | Select line down | Select three lines down |
| K | Up | Select line up | Select three lines up |
| L | Right | Select right | Select word right |
| U | Page Up | Select page up | Select page up |
| I | Home | Select to line start | Select the line, end to start |
| O | End | Select to line end | Select the line, start to end |
| P | Page Down | Select page down | Select page down |
{.matrix .wide caption="Planes 0, 1 and 3: move, select, select more"}

That is why ✱ + ⌘ + ⌥ + I jumps to the end of the line and then
selects back to its start: it is the fastest way to grab exactly one line
without touching the mouse.

### Switching apps, windows, tabs and desktops {#switching}

⇧ moves between *containers*, the thing you are looking at
rather than the text inside it, while ⌃ talks to the window
server.

| Chord | Emits | Effect |
| :--- | :--- | :--- |
| ✱ + ⇧ + J / ✱ + ⇧ + K | ⌘ + ⇥ / ⌘ + ⇧ + ⇥ | Next / previous application |
| ✱ + ⇧ + H / ✱ + ⇧ + L | ⌃ + ⇧ + ⇥ / ⌃ + ⇥ | Previous / next tab |
| ✱ + ⇧ + I / ✱ + ⇧ + O | ⌘ + ⇧ + \` / ⌘ + \` | Previous / next window of the same app |
| ✱ + ⇧ + U / ✱ + ⇧ + P | ⌘ + ⌥ + \- / ⌘ + ⌥ + \= | Zoom out / in |
| ✱ + ⌃ + H / ✱ + ⌃ + L | ⌃ + ← / ⌃ + → | Previous / next desktop |
| ✱ + ⌃ + K / ✱ + ⌃ + O | ⌃ + ↑ | Mission Control |
| ✱ + ⌃ + J | ⌃ + ↓ | Application windows of the focused app |
| ✱ + ⌃ + I | ⌘ + H | Hide the current app |
| ✱ + ⌃ + U | ⌃ + ⌘ + F | Toggle full screen |
| ✱ + ⌃ + P | ⌘ + ␣ | Spotlight |
{.matrix .wide caption="What the ⇧ and ⌃ planes actually send"}

> [!NOTE]
> Tab switching relies on ⌃ + ⇥, which most browsers and editors
> honour but a few apps do not. Window cycling uses ⌘ + \`, the
> standard macOS "move focus to next window" shortcut; confirm it is enabled
> under **System Settings › Keyboard › Keyboard Shortcuts…**.

### Pointer and wheel from the home row {#home-row-mouse}

Four more planes turn the same eight keys into a mouse, without your hands
moving at all. ⇧ is the accelerator in both modes.

| Key | + ⌥<br>Pointer | + ⌥ + ⇧<br>Pointer, fast | + ⌃ + ⇧<br>Wheel | + ⌘ + ⇧<br>Wheel, fast |
| :--- | :--- | :--- | :--- | :--- |
| H | Pointer left | Pointer left | Wheel left | Wheel left |
| J | Pointer down | Pointer down | Wheel down | Wheel down |
| K | Pointer up | Pointer up | Wheel up | Wheel up |
| L | Pointer right | Pointer right | Wheel right | Wheel right |
| U | Left button | Left button | Wheel right | Wheel right |
| I | Right button | Right button | Wheel up | Wheel up |
| O | Back button | Back button | Wheel down | Wheel down |
| P | Forward button | Forward button | Wheel left | Wheel left |
{.matrix .wide caption="Planes 2, 10, 12 and 9: the two fast planes double the speed of the plane beside them"}

| Plane | Pointer speed | Wheel speed |
| :--- | :--- | :--- |
| ⌥ / ⌃ + ⇧ | 1600 | 64 |
| ⌥ + ⇧ / ⌘ + ⇧ | 3200 | 128 |
{.matrix .wide caption="Speed is Karabiner's mouse_key unit, not pixels"}

The middle mouse button is the one exception: it lives on
✱ + ⌥ + ↩ rather than on a navigator key.

## Arrow-key mouse control {#arrow-mouse}

The physical arrow keys drive the pointer too, which is often quicker than
reaching for the home-row layer. Here ⌥ slows down and
⌘ speeds up, in both pointer and wheel modes.

| Chord | Result | Speed |
| :--- | :--- | :--- |
| ✱ + arrows | Move the pointer | 1600 |
| ✱ + ⌥ + arrows | Move slowly | 800 |
| ✱ + ⌘ + arrows | Move quickly | 4200 |
| ✱ + ⇧ + arrows | Scroll the wheel | 64 |
| ✱ + ⇧ + ⌥ + arrows | Scroll slowly | 32 |
| ✱ + ⇧ + ⌘ + arrows | Scroll quickly | 256 |
{.matrix .wide caption="Three pointer speeds and three wheel speeds on the arrow cluster"}

> [!NOTE]
> In V3.1 the fast wheel reverses the vertical direction:
> ✱ + ⇧ + ⌘ + ↑ scrolls the same way as ✱ + ⇧ + ↓,
> and ✱ + ⇧ + ⌘ + ↓ the same way as ✱ + ⇧ + ↑. The
> horizontal arrows keep their direction.

All five mouse buttons sit on ↩:

| Chord | Button |
| :--- | :--- |
| ✱ + ↩ | Left click |
| ✱ + ⌘ + ↩ | Right click |
| ✱ + ⌥ + ↩ | Middle click |
| ✱ + ⇧ + ↩ | Back |
| ✱ + ⌃ + ↩ | Forward |

## Semantic deletion {#deletion}

N M \, \. sit directly
below the navigation keys. The pair on the left deletes *backwards*, the pair
on the right deletes *forwards*, and the unit grows as you add modifiers.

| Key | Hyper | + ⌘ | + ⌥ |
| :--- | :--- | :--- | :--- |
| N | Delete the previous word | Delete back to the line start | Delete back to the line start |
| M | Delete the previous character | Delete the previous word | Move the line down |
| \, | Delete the next character | Delete the next word | Move the line up |
| \. | Delete the next word | Delete forward to the line end | Delete back to the line start |
{.matrix .wide caption="N and M delete backwards from the cursor, comma and period forwards"}

Two rows break the pattern deliberately. ✱ + ⌥ + N and
✱ + ⌥ + \. both send ⌘ + ⌫, clearing everything from
the cursor back to the start of the line, so the outer keys of the block are
the "throw this line away" pair. And ✱ + ⌥ + M /
✱ + ⌥ + \, do not delete at all: they emit
⌥ + ⇧ + ↓ and ⌥ + ⇧ + ↑, the move-line-down/up
shortcut that IntelliJ, VS Code and most editors share.

## Numeric keypad as a mouse {#mousekey}

If your keyboard has a keypad, Hyper turns the whole block into a mouse. The
digits give eight directions around a neutral 5; the top row
scrolls; the bottom and right edges are the five buttons.

| Keypad keys | Mapping |
| :--- | :--- |
| 7 8 9 4 6 1 2 3 | Eight pointer directions, including the diagonals |
| 5 | Stop: sends a zero-velocity pointer event |
| \/ \= | Wheel up / down |
| Num Lock \* | Wheel sideways |
| 0 | Left click |
| \. | Middle click |
| ⌤ | Right click |
| \+ / \- | Forward / back |
{.matrix .wide caption="Hyper plus the keypad: pointer, wheel, and all five buttons"}

The same speed modifiers apply as everywhere else: ⌥ slows the
pointer to half, ⌘ doubles it, and adding ⇧
converts pointer motion into wheel motion at the matching speed.

## Next {#next}

Continue with [windows, applications, terminal controls, clipboards, and
symbols](/docs/karabiner/workflows/).

---

Backlinks:

- [Install](/docs/karabiner/getting-started/)
