keybindings.md
July 27, 2026 ยท View on GitHub
Keybindings
Tree
Ctrl+Up/Down- Navigating channel treeCtrl+Space- Expand selected categories and servers or enter selected channelAlt+H- Un/collapse channel with threads in treeAlt+J- Join/leave selected thread in treeAlt+I- View channel info (selected in tree)Alt+Shift+U- Copy selected channel (in tree) URL to clipboardShift+Up/Down- Select prev/next server and collapse all other servers
Input line
Left/Right- character left/rightCtrl+Left/Right- word left/rightHOME/END- go to start/end of input lineShift+Left/Right- select character left/rightCtrl+Shift+Left/Right- select word left/rightShift+HOME/END- select to start/end of input lineCtrl+N- Insert newline in input line (warningShift+Enterdoesn't work in terminals)Alt+Z- UndoAlt+Shift+Z- RedoAlt+A- Select allAlt+C- Copy selection in input line, otherwise copy selected message in the chatAlt+X- Cut selectionCtrl+V- Smart paste - paste text or file as attachmentCtrl+Backspace- Delete word backwardsCtrl+Del- Delete word forwards
Chat
Enter- Send messageArrow-Up/Down- Navigating messages / popup window if its open and settingassist_swap_bindings = TrueCtrl+R- Reply to selected messageCtrl+E- Edit selected messageCtrl+D- Delete selected messageCtrl+P- Toggle reply ping when replyingCtrl+B- Scroll back to chat bottomCtrl+G- Go to replied message from selected messageCtrl+L- Download selected attachmentCtrl+UUpload attachmentsCtrl+O- Open selected link in browserCtrl+W- View selected attachment (image, gif, video, audio) in media playerAlt+S- Reveal one spoiler in selected messagesCtrl+F- Search messages in current serverAlt+F- Search gifsAlt+P- View user profile (selected message)Alt+U- Copy selected message URL to clipboardAlt+R- Add reaction to selected messageAlt+W- Show reactions details for selected messageAlt+N- Show pinned messages in current channelCtrl+Shift+V- This is common terminal binding to paste text, better use:Ctrl+Vbinding for smart paste
Popup line
Alt+<- Previous uploaded/uploading attachmentAlt+>- Next uploaded/uploading attachment
Popup window
Alt+Up/Down- navigate in popup window / member list if open and no popup window / chat if popup window is open and settingassist_swap_bindings = TrueAlt+Enter- select in popup window / member listAlt+V- Preview selected file in upload assist or when searching gif or attachments ready to sendCtrl+Y-Up/Down- Resize popup window +/- 1
Other
Ctrl+/- Open command paletteCtrl+X- Cancel all downloads and uploadsAlt+D- Cycle user status (online/away/DnD/invisible)Alt+M- Toggle member listCtrl+T- Toggle tabbed state for selected channel in treeAlt+NUM- Switch to tab,NUMis 1-9 in number row, not numeric keypad!Alt+E- Open external editor to type message in itCtrl+K- Open command palette and typegotoand show recent channelsAlt+Left/Right- Switch tabs incrementally (next/previous)Ctrl+C- QuitEnter- Open selected post in forumEscape- Close assist, exit command mode, cancel...
Media player controls
escape- quitSpace- pauseLeft/Right- seekUp/Down- volumeZ- replay
Default command-bindings (macros)
Alt+Left/Right-"M-LEFT" = "switch_tab prev"and"M-RIGHT" = "switch_tab next"
Switch to previous/next tabbed channel.Ctrl+K-"C-k" = "command_palette; type 'goto '"
Open command palette and typegoto.Shift+Up-"S-UP" = "tree_select server prev; collapse_all_except selected"
Select previous server in tree and collapse all other servers except it.Shift+Down-"S-DOWN" = "tree_select server; collapse_all_except selected"
Select next server in tree and collapse all other servers except it.Ctrl+Y Up/Down-"C-y UP" = "resize_popup_window +1"and"C-y DOWN" = "resize_popup_window -1"
Increase/Decrease vertical size of popup window by 1.
OS specific keybindings
Some keybindings are used by terminals or OS itself, so they are by default rebound to something else.
Windows:
Ctrl+A- Expand selected categories and servers
macOS:
Alt+O- Open link in browser
Mouse controls
Single click on:
- All windows, in tree also: un/collapse
- Tabs (subtitle) line to switch tabs (only if exactly
format_title_line_r = "%tabs"in config) - Popup window title and drag it to resize it
- Scrollbar to move it there, or drag it
- Tree border to toggle its minimized state
- Member list border to toggle its minimized state
- Buttons in call UI, click on input/output volume values to toggle mute each
Double click on:
- Tree - un/collapse category/server or enter channel
- Popup window - select item
- Member list - view member profile
- Input line - select a word
- Tabs (subtitle) line - if tab is temporary (italics) will be made permanent
Double click in chat on:
- Message time - start replying to message
- Message reply line - go to that message
- Username - view profile
- Reaction - toggle that reaction
- URL - open media / download file / open in browser
- Spoiler - reveal that spoiler
- User mention - view profile of mentioned user
- Channel - go to that channel
- Custom discord emoji - view that emoji in media player
- Message attachment - download attachment
- Inline image embed - open / play media
Other
- Scroll up/down in all windows
- Middle click on channel in tree to add it to new tab
- Middle click on tab (in subtitle line) to remove it
On Windows, double click isn't working, use triple click instead.
Configuring keybindings
Standard keybindings
Keybindings are configured in separate sections in config.ini. Main keybindings section is [keybindings].
Key combinations are saved as custom syntax (very similar to emacs), that can be generated by running endcord -k.
Syntax: Mod1-Mod2-Mod3-Key. Mod2 and Mod3 are optional.
Modifiers: C - Ctrl, M - Alt, S - Shift. Keys can be uppercase and lowercase, uppercase doesn't indicate shift.
Special keys: UP/DOWN/LEFT/RIGHT - arrow keys, "ENTER".
Ctrl+Shift+Key combinations are not supported by most terminal emulators, but Alt+Shift+Key are.
Keybindings can also be chained like this (maximum 2 bindings in chain, separated with space ):
"C-y M-e" which means: press Ctrl+Y then Alt+E, or "C-y S-UP"...
To specify multiple keybindings for same action put them in a tuple, eg.: ("C-y", "C-y M-e").
Switch tab keybinding is special - NUM is placeholder for 1-9 number keys, eg.:M-NUM or M-y NUM.
Configuring vim mode keybindings
Keybindings for vim mode are configured in section [vim_mode_bindings] can be typed as characters but they must be in "". Eg.: "edit" = "e".
In vim mode bindings, lone capital letter means Shift+key.
There is one special keybinding, used only in vim mode: "insert_mode" = "i".
Command bindings can also use vim mode bindings, but they must be typed as key codes in quotes!
Command keybinding (macros)
There is additional section [command_bindings], used to make custom client command string or even macros executed when keybinding is pressed.
Command keybinding is added like this: "C-x" = "send_message Hello World!". This will execute that command when Ctrl+X is pressed.
Note that all bindings must be inside quotes, even a single integer. To use same binding as standard keybindings, set standard keybinding to None.
Alongside commands, standard keybinding names can be used here too. Eg. "C-x" = "tree_up; tree_up" will "press" tree_up binding twice.
To execute multiple commands in a sequence, type them separated with ; character. To use actual ; character in command type it as \;.
To send raw keycode, prefix it with *. Eg. "tree_down; *C-ENTER; *H; *I; *ENTER".
Special commands available only for command-bindings are documented in Commands list.
Vim mode keybindings
i- Enter insert mode
tree
K/J- Navigating channel treeSpace- Expand selected categories and servers or enter selected channelW- Un/collapse channel with threads in treeO- Join/leave selected thread in treeI- View channel info (selected in tree)C- Copy selected channel (in tree) URL to clipboard
input line
h/l- character left/rightb/w- word left/rightCtrl+h/l- select left/rightH/L- select word left/rightCtrl+N- Insert newline in input line (warningShift+Enterdoesn't work in terminals)u- UndoCtrl+R- Redoa- Select ally- Copy selection in input line, otherwise copy selected message in the chatY- Cut selectionX- Delete wordp- Smart paste - paste text or file as attachment
chat
Enter- Send messagek/j- Navigating messagesr- Reply to selected messagee- Edit selected messaged- Delete selected messageP- Toggle reply ping when replyingB- Scroll back to chat bottomg- Go to replied message from selected messageD- Download selected attachmentU- Upload attachmentso- Open selected link in browserv- View selected attachment (image, gif, video, audio) in media playerS- Reveal one spoiler in selected messagesf- Search messages in current serverF- Search gifsc- View user profile (selected message)M- Copy selected message URL to clipboardR- Add reaction to selected messageA- Show reactions details for selected messagen- Show pinned messages in current channelCtrl+Shift+V- This is common terminal binding to paste text, better use:pastecommand
popup line
<- Previous uploaded/uploading attachment>- Next uploaded/uploading attachment
popup window
,/.- navigate in popup window / member listq- select in popup window / member listV- Preview selected file in upload assist or when searching gif or attachments ready to send
other
:- Open command paletteX- Cancel all downloads and uploadss- Cycle user status (online/away/DnD/invisible)m- Toggle member listt- Toggle tabbed state for selected channel in treeNUM- Switch to tab,NUMis 1-9.E- Open external editor to type message in itCtrl+K- Open command palette and typegotoand show recent channelsAlt+Left/Right- Switch tabs incrementally (next/previous)Q- Quit