# Keybinds

> Every keyboard shortcut, the command palette, and how to change any key.

Source: https://hush-gh.com/docs/keybinds

Hush works from the keyboard. Press `?` on any list to see the shortcuts for it, with your keys.

## Search and commands

`⌘ K` / `Ctrl + K` opens the command palette. Type to find:

- **Threads, pull requests, and issues** by title or repository. Choosing one peeks at it.
- **Actions** on the item under the cursor or the selection: Mark as done, Snooze, Mute, Peek, Move to…
- **Pages**: every inbox tab and saved view, Pull requests, Issues, and each settings page.
- **Commands**: Sync with GitHub now, Refresh, a theme, Sign out.

## Change a key

Go to **Settings → Keybinds**. It lists every command by where it works.

- Choose **+** next to a command and press the new key. Esc cancels.
- The × on a key removes it. A command can have up to 4 keys, or none.
- If the key already does something where the command works, Hush says so. **Use it for …** moves the key to this command.
- The reset button next to a changed command puts back its default keys; **Reset all** resets every command.
- The search box finds a command by its name, or by a key: type a key to see what it does.

Your keys are saved at once, and follow you to every device. In settings.json they are the [`keys`](https://hush-gh.com/docs/settings#keys) setting:

```json settings
{ "keys": { "inbox.done": ["d"], "inbox.mute": [], "list.peek": ["Space", "p"] } }
```

Mouse actions are not keys, and cannot change: ⌘-click (Ctrl-click) adds a row to the selection, Shift-click selects a range, and on the Pull requests and Issues tabs you drag ⋮⋮ to move an item.

## Where keys work

A key works in one scope. Keys can repeat across scopes that are never active together (`E` is Done in the inbox and `E` is Hide on the Pull requests tab), but not inside scopes that are active at the same time.

- **Everywhere**: on every page.
- **Lists**: the inbox and the Pull requests and Issues tabs.
- **Inbox** and **Pull requests and issues**: only on those pages.
- **Peek**: while the [peek](https://hush-gh.com/docs/peek) is open.
- **Text boxes**: while you type in the comment box or settings.json.

Keys do not work while you type in a text box, except the “Text boxes” keys and Esc.

## All shortcuts

The command id is the name in settings.json. `Mod` is ⌘ on a Mac and Ctrl on other computers.

### Everywhere

| Command id | What it does | Default keys |
| --- | --- | --- |
| `palette` | Search and commands | `Mod+k` |

### Lists (inbox and dashboards)

| Command id | What it does | Default keys |
| --- | --- | --- |
| `list.next` | Next | `j`, `ArrowDown` |
| `list.prev` | Previous | `k`, `ArrowUp` |
| `list.extendNext` | Extend the selection down | `Shift+j` |
| `list.extendPrev` | Extend the selection up | `Shift+k` |
| `list.select` | Select or deselect | `x` |
| `list.selectAll` | Select all | `Mod+a` |
| `list.peek` | Peek (open or close) | `Space` |
| `list.escape` | Close the peek, or clear the selection | `Escape` |
| `list.open` | Main action (review, fix CI, reply…) | `o`, `Enter` |
| `list.openGitHub` | Open on GitHub | `Shift+o` |
| `list.copy` | Copy link | `c` |
| `list.refresh` | Sync with GitHub now | `r` |
| `list.search` | Search | `/` |
| `list.help` | Show shortcuts | `?` |

### Inbox

| Command id | What it does | Default keys |
| --- | --- | --- |
| `inbox.done` | Done | `e` |
| `inbox.snooze` | Snooze until tomorrow 9:00 | `s` |
| `inbox.mute` | Mute the thread | `m` |
| `inbox.read` | Mark as read / unread | `u` |
| `inbox.view.1` | View 1 (built-in) | `1` |
| `inbox.view.2` | View 2 (built-in) | `2` |
| `inbox.view.3` | View 3 (built-in) | `3` |
| `inbox.view.4` | View 4 (built-in) | `4` |
| `inbox.view.5` | View 5 (built-in) | `5` |
| `inbox.view.6` | View 6 (your saved views) | `6` |
| `inbox.view.7` | View 7 (your saved views) | `7` |
| `inbox.view.8` | View 8 (your saved views) | `8` |
| `inbox.view.9` | View 9 (your saved views) | `9` |

### Pull requests and issues

| Command id | What it does | Default keys |
| --- | --- | --- |
| `dash.hide` | Hide until it changes (or show again) | `e` |
| `dash.showHidden` | Show hidden items | `h` |
| `dash.section.0` | Section: all | `0` |
| `dash.section.1` | Section 1 | `1` |
| `dash.section.2` | Section 2 | `2` |
| `dash.section.3` | Section 3 | `3` |
| `dash.section.4` | Section 4 | `4` |
| `dash.section.5` | Section 5 | `5` |
| `dash.section.6` | Section 6 | `6` |
| `dash.section.7` | Section 7 | `7` |
| `dash.section.8` | Section 8 | `8` |
| `dash.section.9` | Section 9 | `9` |

### Peek: actions on GitHub

| Command id | What it does | Default keys |
| --- | --- | --- |
| `peek.approve` | Approve | `a` |
| `peek.requestChanges` | Request changes | `Shift+a` |
| `peek.comment` | Comment | `Shift+c` |
| `peek.rerun` | Re-run failed jobs | `Shift+r` |
| `peek.merge` | Merge (press twice) | `Shift+m` |
| `peek.closeReopen` | Close or reopen | `Shift+x` |

### Text boxes

| Command id | What it does | Default keys |
| --- | --- | --- |
| `editor.send` | Send the comment | `Mod+Enter` |
| `editor.save` | Save settings.json | `Mod+s` |
