Repository navigation
keyboard shortcuts
Generated by
scripts/keyboard-reference.shfrom rCommander's keymap (crates/rc-engine/keymap/, the keys inside dialogs in itscontexts.md) and the command registry; do not edit by hand. It cannot drift from what the program does: the same data is the program's keymap.
rCommander replaces Total Commander (TC) for its owner, so its default keys are Total Commander 11's. The keys rCommander has of its own, the ones that do something else than in TC and the TC keys it leaves free are listed with their reasons under Total Commander. Ctrl+Shift+P opens the command palette: every action by name, also the ones without a key.
These are the standard keys. Settings > Keyboard > Shortcuts changes, adds or removes any of them; the menus, the context menus and the command palette then show your keys.
A key written like Ctrl+Ö / Ctrl+; is one key, named by where it sits: the key right of L is Ctrl+Ö on a German keyboard, Ctrl+; on a US one and Ctrl+Ñ on a Spanish one, also after you switch the layout; Ctrl+^ / Ctrl+` is the key left of 1 (Ctrl+² on a French keyboard). The menus and the palette show what your layout prints on it.
On macOS Cmd does what Ctrl does (Cmd+R refreshes, Cmd+Shift+P opens the palette; Ctrl still works), and the menus and the palette write the keys as the Mac does: Ctrl+Shift+F is ⇧⌘F. Settings > Keyboard > Cmd works as Ctrl on macOS turns that off: Cmd is left to the system and Ctrl shows as ⌃.
While the active panel shows its files; a terminal keeps every key but the ones marked. window is a key the window handles itself (the command line, the palette, a connection).
| Key | Action | Command |
|---|---|---|
| ArrowUp | Cursor up | panel.move_cursor |
| ArrowDown | Cursor down | panel.move_cursor |
| PageUp | Cursor a page up | panel.move_cursor |
| PageDown | Cursor a page down | panel.move_cursor |
| Home | Cursor to the first entry | panel.move_cursor |
| End | Cursor to the last entry | panel.move_cursor |
| ArrowLeft | Cursor to the previous column (brief view) | panel.move_cursor |
| ArrowRight | Cursor to the next column (brief view) | panel.move_cursor |
| Enter | Open: show a folder, start a program, open a file, verify a checksum file | file.open |
| Ctrl+PageDown | Open the entry under the cursor, also an archive | panel.open_entry |
| Backspace, Ctrl+PageUp | Up one level | panel.navigate |
| Ctrl+\ | Root of the drive | panel.navigate |
| Tab | Switch to the other panel | panel.switch_active |
| Ctrl+R, F2 | Reread the panel | panel.refresh |
| Insert | Select the entry under the cursor and move down | panel.toggle_cursor_selection |
| Space | Select the entry under the cursor; count a folder's size | panel.select_and_size |
| Ctrl+A, Ctrl+NumAdd | Select all | panel.select_all |
| Ctrl+NumSubtract | Deselect all | panel.deselect_all |
| NumMultiply | Invert the selection | panel.invert_selection |
| NumAdd | Select by mask | panel.select_by_mask |
| NumSubtract | Deselect by mask | panel.deselect_by_mask |
| Alt+NumAdd | Select all files with the same extension | panel.select_extension |
| Alt+NumSubtract | Deselect all files with the same extension | panel.select_extension |
| NumDivide | Restore the selection before the last operation | panel.restore_selection |
| Shift+ArrowUp | Select while moving up | panel.select_range |
| Shift+ArrowDown | Select while moving down | panel.select_range |
| Shift+PageUp | Select a page up | panel.select_range |
| Shift+PageDown | Select a page down | panel.select_range |
| Shift+Home | Select to the first entry | panel.select_range |
| Shift+End | Select to the last entry | panel.select_range |
| Ctrl+F1 | Brief view | panel.set_view |
| Ctrl+F2 | Full view | panel.set_view |
| Ctrl+F3 | Sort by name (again: reverse) | panel.sort |
| Ctrl+F4 | Sort by extension (again: reverse) | panel.sort |
| Ctrl+F5 | Sort by date (again: reverse) | panel.sort |
| Ctrl+F6 | Sort by size (again: reverse) | panel.sort |
| Ctrl+Ö / Ctrl+;, Ctrl+^ / Ctrl+` | Switch between file list and terminal (also in a terminal) | panel.toggle_terminal |
| Ctrl+Shift+Ö / Ctrl+Shift+;, Ctrl+Shift+^ / Ctrl+Shift+` | New terminal, with a shell choice | terminal.open |
| Ctrl+Ä / Ctrl+' | Terminal over the whole window width, and back (also in a terminal) | terminal.maximize |
| Ctrl+Alt+V | Paste the clipboard's image into the terminal as a file path (also in a terminal) | terminal.paste_image |
| Ctrl+S | Quick filter | panel.filter |
| Ctrl+Shift+S | Quick filter: the last filter again | panel.filter |
| Ctrl+Enter | Name under the cursor into the command line | window |
| Ctrl+Shift+Enter | Full path under the cursor into the command line | window |
| Ctrl+P | The panel's folder into the command line | window |
| Alt+F8 | Command line history | window |
| Shift+Alt+F9 | Test archives | archive.test |
| Alt+Enter | Properties and attributes | file.properties |
| Shift+Alt+Enter | Count the size of every folder | panel.count_dir_content |
| Ctrl+L | Occupied space of the selection | file.dir_size |
| Ctrl+Shift+F5 | Create a link or shortcut | file.create_link |
| Ctrl+Z | Edit the file comment | file.set_comment |
| Ctrl+Shift+C | Copy the full paths to the clipboard | clipboard.copy_names |
| Ctrl+Shift+P | Command palette | window |
| Ctrl+C | Copy the files to the clipboard | window |
| Ctrl+X | Cut the files to the clipboard | window |
| Ctrl+V | Paste the files from the clipboard | window |
| Shift+F10, ContextMenu | Context menu | panel.context_menu |
| F10 | Quit rCommander | app.quit |
| Ctrl+T | New tab | tabs.open |
| Ctrl+ArrowUp | Folder under the cursor in a new tab | tabs.open |
| Ctrl+Shift+ArrowUp | Folder under the cursor in a new tab of the other panel | tabs.open |
| Ctrl+W | Close the tab | tabs.close |
| Ctrl+Tab | Next tab | tabs.next |
| Ctrl+Shift+Tab | Previous tab | tabs.next |
| Ctrl+Shift+A | List of the tabs, or of the terminal's sessions (also in a terminal) | window |
| Alt+ArrowLeft | Back in the folder history | history.back |
| Alt+ArrowRight | Forward in the folder history | history.forward |
| Alt+ArrowDown | Folder history | history.list |
| Ctrl+D | Directory hotlist | hotlist.list |
| Ctrl+U | Swap the panels' folders | panel.swap |
| Ctrl+Shift+U | Swap the panels with their tabs | panel.swap |
| Ctrl+ArrowLeft | Folder under the cursor in the left panel | panel.transfer |
| Ctrl+ArrowRight | Folder under the cursor in the right panel | panel.transfer |
| Alt+F1 | Drive menu of the left panel | panel.drive_menu |
| Alt+F2 | Drive menu of the right panel | panel.drive_menu |
| F3 | View the file | file.open_external |
| F4 | Edit the file | file.open_external |
| Shift+F4 | New text file | ops.dialog |
| F5 | Copy to the other panel | ops.dialog |
| Shift+F5 | Copy within the folder | ops.dialog |
| F6 | Move to the other panel | ops.dialog |
| Shift+F6 | Rename in place | ops.dialog |
| F7 | New folder | ops.dialog |
| F8, Delete | Delete to the recycle bin | ops.dialog |
| Shift+F8, Shift+Delete | Delete permanently | ops.dialog |
| Ctrl+M | Multi-rename tool | multi_rename.open_dialog |
| Ctrl+Q | Quick View | panel.toggle_quick_view |
| Ctrl+F | Connection manager | connections.manager |
| Ctrl+N | Quick connection to an SSH server | connections.quick_connect |
| Ctrl+Shift+F | Disconnect the active panel's connection | window |
| Ctrl+B | Branch view | panel.branch_view |
| Ctrl+Shift+B | Branch view of the selection | panel.branch_view |
| Alt+F7 | Find files | files.find_dialog |
| Alt+F5 | Pack | archive.pack |
| Shift+Alt+F5 | Pack and delete the packed files | archive.pack |
| Alt+F6, Alt+F9 | Unpack | archive.extract |
| Ctrl+Shift+F9 | Create checksum files | checksum.dialog |
| Ctrl+Shift+F10 | Verify checksums | checksum.dialog |
| Ctrl+Shift+F11 | Split a file | checksum.dialog |
| Ctrl+Shift+F12 | Combine split files | checksum.dialog |
| Ctrl+Shift+F3 | Compare two files by content | compare.open_diff |
| Shift+Alt+F2 | Synchronize folders | sync.open_dialog |
| Shift+F2 | Select the files that differ from the other panel | compare.select_differences |
| Ctrl+Shift+Q | Queue of the file operations | queue.window |
Every command of the registry has a key above, or a row here that says how the keyboard
reaches it - or why not (crates/rcommander/src/app/palette/reach.json).
| Command | How | Summary |
|---|---|---|
agent.list_identities |
No key: a read-out for MCP: the connection form offers the agent as a way to log in and needs no list of its keys | The keys the running SSH agents hold (ssh-agent, OpenSSH service, Pageant): type, comment, fingerprint; never key bytes |
archive.list |
Shown: a panel lists an archive's entries (Enter or Ctrl+PageDown on the archive) | The entries of a directory inside an archive, with packed size, encrypted and unsafe-name marks |
archive.password |
Asked: the password question of an encrypted archive while unpacking | Answer an extraction's password question; the password lives for that job only |
db.backup |
Command palette: Back up the database | Back up the database into the backup folder beside it, under a generated name |
db.backup_to |
The database dialog: back up to a chosen file | Back up the database to a file or folder a person chose |
db.restore |
The database dialog: restore a backup at the next start | Check a backup and replace the database with it at the next start |
certificates.answer |
Asked: the question about an FTPS certificate the system does not trust, when a connection opens | Answer the question about an FTPS certificate: accept once, trust and save, or cancel |
certificates.list |
The form of an FTPS connection shows the certificate trusted for its server; the settings' Host keys page lists them all (connections.manager) |
The trusted FTPS certificates, optionally filtered by host, subject, issuer or fingerprint |
certificates.remove |
Forget at the trusted certificate in the form of an FTPS connection, or Remove on it in the settings' Host keys page (connections.manager) |
Forget a trusted FTPS certificate; the next connection asks again |
checksum.compute |
Start in the checksum dialog (Ctrl+Shift+F9) computes them as a queued job (checksum.queue) (checksum.dialog) |
The digest (CRC32, MD5, SHA-1, SHA-256, SHA-512, BLAKE3) of one or more files |
checksum.create |
Start in the checksum dialog (Ctrl+Shift+F9) writes the checksum files as a queued job (checksum.queue) (checksum.dialog) |
Write checksum files for files and folders: one per file or one for all |
checksum.queue |
Start in the checksum, split or combine dialog (Ctrl+Shift+F9 to F12) (checksum.dialog) |
Run what a checksum dialog asks (create, verify, split, combine) as a queue job |
checksum.verify |
Start in the verify dialog (Ctrl+Shift+F10) verifies as a queued job (checksum.queue) (checksum.dialog) |
Check the files a checksum file lists: ok, mismatch, missing per line |
cmdline.run |
Type a command line and press Enter (Shift+Enter keeps the console open) | Run a command line in a panel's folder: cd and a drive move the panel, any other line starts in the system's shell in a console window |
compare.dirs |
Compare in the synchronize-dirs dialog (Alt+Shift+F2) compares the two trees (sync.open_dialog) |
Compare two directory trees and propose a synchronization, row by row |
compare.files |
The diff window (Ctrl+Shift+F3) compares the two files by content (compare.open_diff) |
Compare two files by content: first differing byte, line diff for text |
sync.apply |
Synchronize in the synchronize-dirs dialog (Alt+Shift+F2), which queues the same plan (sync.open_dialog) |
Run a synchronization of two trees as copy and delete jobs of the queue |
connections.create |
Insert: a new connection, Enter saves the form (connections.manager) |
Add a connection to a folder of the connection tree (no secrets) |
connections.delete |
F8 or Delete on a connection, after a question (connections.manager) |
Delete a connection from the connection tree |
connections.duplicate |
Shift+F5 or Duplicate on a connection: a copy with its secrets, its name open to change (connections.manager) |
Copy a connection with its secrets into its folder, right under it, with a number added to its name |
connections.get |
Shown: the connection manager's form | One connection: host, port, user, auth method, key path, view, notes |
connections.list |
Shown: the connection manager's tree | The connection tree: folders and connections in display order |
connections.move |
Ctrl+X and Ctrl+V in the tree (connections.manager) |
Move a connection into another folder or to another place in its folder |
connections.save |
Enter saves the connection's form: its fields, secrets, login script and drive-bar mark at once (connections.manager) |
Save a connection in one step: fields, secrets, login script and drive-bar mark, all or nothing |
connections.update |
F2 on a connection renames it (connections.manager) |
Change fields of a connection (no secrets) |
credentials.delete |
F8 or Delete on a shared credential, after a question that counts the connections using it (connections.manager) |
Delete a shared credential; the connections that use it fall back to their own secrets |
credentials.move |
Ctrl+X and Ctrl+V or dragging a shared credential in the tree (connections.manager) |
Move a shared credential into another folder of the connection tree |
credentials.save |
New credential under the tree, then Enter saves its form; F2 on one renames it (connections.manager) |
Save a shared credential in one step: name, user and secrets, all or nothing |
folders.create |
F7 in the tree (connections.manager) |
Add a folder to the connection tree |
folders.delete |
F8 or Delete on a folder, after a question (connections.manager) |
Delete a connection folder: empty, or recursive with everything inside |
folders.move |
Ctrl+X and Ctrl+V in the tree (connections.manager) |
Move a connection folder; never into itself or one of its subfolders |
folders.rename |
F2 on a folder (connections.manager) |
Rename a connection folder |
diagnostics.clear_error_log |
No key: a tool for diagnosis over MCP; no dialog shows the error log, so none clears it - a log viewer is a feature of its own | Delete every line of the error log |
diagnostics.error_log |
No key: a read-out for diagnosis over MCP; a log viewer in the window is a feature of its own | The stored warn and error lines, newest first, masked; by level or text |
diagnostics.get_retention |
Shown: the settings dialog's limits of the growing tables | The row and age limits of each growing table, with defaults and bounds |
diagnostics.set_retention |
The settings dialog: the limits of the growing tables | Change the row or age limit of a growing table, within its bounds |
drives.list |
Shown: the drive bar and the drive menus (Alt+F1, Alt+F2), which list every drive, also those behind the bar's » | The drive bar: drives with kind, volume and free space, WSL distributions, servers |
drives.map_network |
Map network drive... under the drives of the drive menu (Alt+F1, Alt+F2), a drive's context menu (Shift+F10 on it in the drive menu, or a right click), or the command palette (panel.drive_menu) |
Map a network share to a free drive letter; Windows asks the person for the credentials |
drives.unmap_network |
Disconnect network drive... in the drive menu (Alt+F1, Alt+F2), a network drive's context menu (Shift+F10 on it in the drive menu, or a right click), or the command palette (panel.drive_menu) |
Disconnect a network drive; with open files only when forced, which may lose unsaved data |
file.combine |
Start in the combine dialog (Ctrl+Shift+F12) combines as a queued job (checksum.queue) (checksum.dialog) |
Put split parts (.001 or .crc) back together into a new file, CRC checked |
file.split |
Start in the split dialog (Ctrl+Shift+F11) splits as a queued job (checksum.queue) (checksum.dialog) |
Split a file into parts of a given size with a Total Commander .crc file |
ops.copy_to |
The copy dialog (F5, Shift+F5) (ops.dialog) |
Copy to a typed target: into a directory, or one entry under a new name (the F5 dialog) |
ops.move_to |
The move and rename dialog (F6, Shift+F6) (ops.dialog) |
Move to a typed target: into a directory, or one entry renamed (the F6 dialog) |
hostkeys.answer |
Asked: the question about an unknown host key when a connection opens | Answer the question about an unknown SSH host key: connect once, trust, or cancel |
hostkeys.import_known_hosts |
Import known_hosts on the settings' Host keys page | Import the host keys of an OpenSSH known_hosts file (the user's own by default) |
hostkeys.list |
Shown: the settings' Host keys page lists the trusted keys; its search field filters them | The trusted SSH host keys, optionally filtered by host, key type or fingerprint |
hostkeys.remove |
Remove or Delete on a key of the settings' Host keys page, after a question | Forget a trusted SSH host key; the next connection asks again |
hostkeys.replace |
Asked: the question about a changed host key when a connection opens | Replace a stored SSH host key with the changed key a server presented |
config.export |
The database dialog's Export: settings, connections, trusted keys and the hotlist to a file | Export settings, connections, trusted host keys and certificates, hotlist and tabs to a file, unencrypted or sealed with an export password |
config.import |
The database dialog's Import: read an export, then import the rows ticked | Import an rCommander export: dry_run previews new, changed and conflicting rows; secrets go straight into the vault |
connections.import_ssh_config |
The manager's ssh_config import page (connections.manager) |
Import the hosts of an OpenSSH config (~/.ssh/config by default); dry_run only previews; never a secret |
import.remote_desktop_manager |
The manager's Import RDM export... page under the tree (connections.manager) |
Import the SSH connections of a Remote Desktop Manager export (.rdm without a master key); dry_run only previews; never a password |
import.total_commander |
The settings' Import page: Import from Total Commander... | Import Total Commander's hotlist, tabs, FTP connections, list colours and list font (wincmd.ini, wcx_ftp.ini); dry_run only previews; never a password |
import.total_commander_passwords |
Take the passwords in the import from Total Commander the settings open, with the master password | Take the FTP passwords of connections imported from Total Commander into the vault |
login_scripts.assign |
The connection's form: its login script (connections.manager) |
Set the login script a connection types after it logged in, or none |
login_scripts.clear_secret |
The login-script editor: a step's secret (connections.manager) |
Remove a secret stored with a login script |
login_scripts.create |
The login-script editor (connections.manager) |
Add a login script: steps that wait for prompts and send text or stored secrets |
login_scripts.delete |
The login-script editor (connections.manager) |
Delete a login script with its secrets; its connections run none |
login_scripts.get |
Shown: the login-script editor | One login script: steps, timeouts, its secrets by label, its connections |
login_scripts.list |
Shown: the login-script editor's list and the connection's form | Every login script, by name, without secret values |
login_scripts.set_secret |
The login-script editor: a step's secret (connections.manager) |
Store a secret encrypted with a login script, under a label |
login_scripts.update |
The login-script editor (connections.manager) |
Change a login script's name, steps or timeouts (no secrets) |
multi_rename.apply |
Start in the multi-rename dialog (Ctrl+M) (multi_rename.open_dialog) |
Rename entries of a folder by masks, case and search and replace, as a queued job logged for undo; refused while the preview has conflicts |
multi_rename.preset_delete |
The preset menu of the multi-rename dialog (Ctrl+M) (multi_rename.open_dialog) |
Delete a saved multi-rename preset |
multi_rename.preset_list |
The preset list of the multi-rename dialog (Ctrl+M) (multi_rename.open_dialog) |
List the saved multi-rename presets by name, each with its rule, and the rule last used |
multi_rename.preset_rename |
The preset menu of the multi-rename dialog (Ctrl+M) (multi_rename.open_dialog) |
Give a saved multi-rename preset another name |
multi_rename.preset_save |
Save in the preset menu of the multi-rename dialog (Ctrl+M) (multi_rename.open_dialog) |
Save a multi-rename rule as a preset under a name, replacing one of that name |
multi_rename.preview |
The preview table of the multi-rename dialog (Ctrl+M) (multi_rename.open_dialog) |
Preview a multi-rename: each entry's new name, the kind of change and its conflict |
multi_rename.undo |
Undo (Alt+U) in the multi-rename dialog (Ctrl+M) (multi_rename.open_dialog) |
Reverse the latest multi-rename as far as it got; refused when an entry no longer fits |
mcp.answer |
Asked: the question of an MCP call waiting in the window | Answer the question of an MCP call waiting in the window: allow, allow for the session, or deny |
mcp.revoke |
Command palette: Take back what MCP may do without asking | Take back every MCP call a person allowed for a session: the next one asks again |
connections.set_favourite |
Space on a connection marks it for the drive bar (connections.manager) |
Show a connection among the servers of the drive bar, or take it away |
ops.answer |
Asked: the question of a running job: a conflict or a failing file | Answer the question a job waits on: a conflict or a failing file |
ops.cancel |
The progress window of a job the dialog started (ops.dialog) |
Cancel a job; the file being written is removed |
ops.copy |
The copy dialog (F5) runs it as ops.copy_to (ops.dialog) |
Copy files and directories into a directory, as a queued job |
ops.delete |
The delete question (F8, Delete, Shift+F8, Shift+Delete) (ops.dialog) |
Delete files and directories (recycle bin or permanently) as a queued job |
ops.list |
Shown: the progress window and the background bar under the panels | The jobs of the operations queue with their state and progress |
ops.mkdir |
The new-folder dialog (F7) (ops.dialog) |
Create a directory and its missing parents, as a queued job |
ops.move |
The move dialog (F6) runs it as ops.move_to (ops.dialog) |
Move files and directories into a directory, as a queued job |
ops.pause |
The progress window of a job the dialog started (ops.dialog) |
Pause a job between two buffers |
ops.resume |
The progress window of a job the dialog started (ops.dialog) |
Resume a paused job |
panel.cancel_io |
Escape stops a folder that keeps the panel waiting (panel.open_entry) |
Stop the calls that wait on a drive or share that does not answer; they end with cancelled |
panel.change_drive |
A drive of the drive menu (Alt+F1, Alt+F2) (panel.drive_menu) |
Show a drive in a panel, in the directory the panel last showed on it |
panel.get_state |
Shown: the panel, its path bar and its status line | A panel's path, cursor, selection and entry count; which panel is active |
panel.list_dir |
Shown: a panel lists a folder | The entries of a directory (a panel's by default), without moving a panel |
panel.open_terminal_here |
Command palette: Terminal in the panel's folder | Start a shell of the default profile in a panel's folder, shown by that panel or the other one |
panel.set_cursor |
The arrow keys and the quick search (Ctrl+Alt+letters) put the cursor (panel.move_cursor) |
Put a panel's cursor on an entry, by index or name |
panel.show_files |
Ctrl+Ö in the terminal shows the files again (panel.toggle_terminal) |
Show a panel's files instead of its terminal; the shell keeps running |
panel.toggle_hidden |
Command palette: Show or hide hidden files | Show or hide hidden and system entries in both panels; the choice is kept |
panel.toggle_selection |
Insert and Space select by the cursor; MCP names the entries (panel.toggle_cursor_selection) |
Select or deselect entries of a panel by name |
files.stat |
Shown: the full view's columns and the properties (Alt+Enter) | One entry by its path, local, ftp:// or sftp:///: kind, size, time |
file.set_attributes |
The properties dialog: change attributes (file.properties) |
Change attributes, Unix mode and times of entries, optionally down their folders |
panel.cancel_dir_sizes |
Escape stops the count (panel.count_dir_content) |
Stop counting folder sizes for a panel's size column |
plugins.disable |
Disable at a plugin on the settings' Plugins page | Switch an installed plugin off; it is listed but never runs |
plugins.enable |
Enable at a plugin on the settings' Plugins page | Switch an installed plugin on again |
plugins.install |
Install in the preview of the settings' Plugins page | Install a .rcplug package after its preview, confirming an unknown signing key by its fingerprint |
plugins.list |
The settings' Plugins page lists every installed plugin with its versions and log | The installed plugins: versions, kind, switch, suspension, permissions and signing key; one plugin with its latest calls |
plugins.preview |
Install... on the settings' Plugins page: the preview of a package | What a .rcplug package is before it is installed: name, version, author, claimed files, permissions, key standing |
plugins.remove |
Remove at a version of a plugin on the settings' Plugins page | Remove one installed version of a plugin; refused while an open viewer uses it |
plugins.resume |
Resume at a suspended plugin on the settings' Plugins page | Let a plugin suspended after repeated failures run again |
plugins.rollback |
Roll back at a plugin on the settings' Plugins page | Run the previous installed version of a plugin instead of the current one |
files.search |
The find-files dialog runs the search (files.find_dialog) |
Find files and folders by name masks or regex, content, size, date and attributes, page by page |
panel.feed_paths |
The find-files dialog: feed the hits to the panel (files.find_dialog) |
Show given files and folders, such as search hits, flat in a panel |
secrets.import_key |
The connection's form: a key file (connections.manager) |
Take a private key file (OpenSSH, PEM, PKCS#8, PuTTY ppk) and its passphrase into the vault |
secrets.source_map |
The connection's form: Secret source, an entry the search found (connections.manager) |
Take a connection's password, key or passphrase from an entry of a secret source instead of the vault |
secrets.source_search |
The connection's form: Secret source, Search (connections.manager) |
Search a secret source: entry ids, titles, users and addresses, never a value |
secrets.source_unmap |
The connection's form: Secret source, Vault (connections.manager) |
Take a connection's secret from the vault again instead of a secret source |
secrets.sources |
The connection's form: Secret source lists the sources and their state (connections.manager) |
The installed secret sources and whether each answers; with a connection, its references |
connections.connect |
The connection's Connect (connections.manager) |
Open the SSH session of a connection: host key checked, login by agent, key or password from the vault |
connections.disconnect |
Ctrl+Shift+F closes the active panel's connection; also the manager's Disconnect | Close the SSH or FTP session of a connection, or cancel its setup; panels showing the server go back to a local folder |
connections.session_prefs |
No key: the session settings (login order, keep-alive, idle close) have no page in the connection form yet; MCP reads them | A connection's SSH session settings: auth order, agent key, keepalive, idle close |
connections.set_session_prefs |
No key: the session settings (login order, keep-alive, idle close) have no page in the connection form yet; MCP changes them | Change a connection's SSH session settings, used by its next session |
connections.test |
The connection's Test (connections.manager) |
Test a connection: connect, check the host key, log in, disconnect; answers the method and the time |
keymap.list |
Shown: the Shortcuts tab of the settings' Keyboard page | The keys in force: every row of the keymap with its key, command, context, whether the person changed it and whether the window keeps it |
keymap.set |
OK or Apply after a key changed on the settings' Shortcuts tab | Store the deviations from the standard keymap (keys.overrides); only a person moves a key |
settings.get |
Shown: the settings dialog | Every setting (or one) with its value, default, type and bounds; never the MCP token |
settings.set |
The settings dialog | Change one setting; MCP and vault settings are refused (only a person changes them) |
ssh.exec |
Run command... at an SSH connection, or the command line on an SFTP panel (connections.manager) |
Run one command on an SSH connection without a terminal: stdout, stderr and the exit code, under a time and size limit |
terminal.open_ssh |
Terminal at an SSH connection, or the terminal key on an SFTP panel (connections.manager) |
Start a shell on an SSH connection's server in a terminal session, after its login script |
terminal.close |
Delete on a session in the list of the terminal's sessions (Ctrl+Shift+A in a terminal); a session also closes when its shell ends | End a terminal session and its program (whatever runs in it is lost) |
terminal.list |
Shown: the shell choice of a new terminal (Ctrl+Shift+Ö) | The open terminal sessions and the shells a new one can run |
terminal.read_screen |
Shown: the terminal itself; MCP reads it as text | A terminal's screen (and scrollback) as text, with the cursor position |
terminal.send_input |
No key: no key needed: typing in a terminal goes to its shell directly | Type text into a terminal session, as if from the keyboard |
terminal.show |
A session of the list of the terminal's sessions (Ctrl+Shift+A in a terminal); Ctrl+Ö shows the panel's terminal | Show a terminal session in its panel, in place of the panel's files or other session |
vault.change_password |
No key: no dialog to change the master password yet, a feature of its own; GUI only, so MCP cannot run it either | Change the master password; every stored secret is re-encrypted in one transaction |
vault.create |
Asked: the question for a master password when the first secret is stored | Set the master password when the first secret is stored; it cannot be recovered |
vault.lock |
Command palette: Lock the vault | Lock the vault now: stored secrets need the master password again |
vault.remove |
Asked: the offer to remove the vault once the last stored secret is gone | Remove the vault and its master password once no secret is stored |
vault.status |
Shown: the connection manager's vault line | Whether a vault exists, whether it is locked, and its idle lock; never key material |
vault.unlock |
Asked: the master-password question when a connection needs a stored secret | Unlock the vault with the master password, when a connection needs a stored secret |
files.read_hex |
Shown: the Lister (F3) in its hex view | A capped window of a file as hex rows, as xxd prints them; private keys withheld |
files.read_text |
Shown: the Lister (F3) in its text view | A capped window of a file as text in its detected encoding, and whether it was cut |
view.open |
F3 opens the Lister when no external viewer is set (file.open_external) |
Open a file in the window's viewer (Lister): text, binary, hex or image |
wsl.list_distros |
Shown: the drive bar lists the WSL distributions | The installed WSL distributions: name, default, version, root share |
wsl.refresh |
Command palette: Reread the WSL distributions | Read the installed WSL distributions again |
tabs.copy_to_other |
Command palette: Copy the tab to the other panel | Copy a tab of a panel to the end of the other panel's tabs |
tabs.list |
Shown: the tab row above the panel | A panel's tabs: id, title, folder, whether locked and which one is shown |
tabs.lock |
Command palette: Lock or unlock the tab | Lock or unlock a tab; a locked tab opens every new folder in a new tab |
tabs.move |
Drag a tab within its tab bar; in the list of tabs (Ctrl+Shift+A) Ctrl+Up and Ctrl+Down move the tab under the cursor | Move a tab of a panel to another place in its row, as dragging it in the tab bar does |
tabs.select |
A tab of the list of tabs (Ctrl+Shift+A); Ctrl+Tab and Ctrl+Shift+Tab walk the tabs | Show a tab of a panel by its id |
history.jump |
A folder of the history list (Alt+Down) (history.list) |
Show a folder of the tab's history by its index in history.list |
hotlist.add |
The hotlist's Add current folder (Ctrl+D) (hotlist.list) |
Add a folder to the hotlist, by default the panel's own, optionally with a folder for the other panel |
hotlist.add_folder |
The hotlist dialog (Ctrl+D, Configure) (hotlist.list) |
Add a folder (a submenu) to the hotlist |
hotlist.delete |
The hotlist dialog (Ctrl+D, Configure) (hotlist.list) |
Remove a hotlist entry, or a hotlist folder with everything in it |
hotlist.move |
The hotlist dialog (Ctrl+D, Configure) (hotlist.list) |
Move a hotlist entry or folder to another place or into another hotlist folder |
hotlist.open |
An entry of the hotlist (Ctrl+D) (hotlist.list) |
Show a hotlist entry's folder in a panel, and its target in the other panel |
hotlist.update |
The hotlist dialog (Ctrl+D, Configure) (hotlist.list) |
Change a hotlist entry's name, path or target, or a hotlist folder's name |
queue.assign |
No key: one job for MCP: the queue window puts its selection into a list with queue.assign_many | Put a job into another list of the queue; a stopped list holds it until it starts |
queue.assign_many |
Move to list on the selected jobs in the queue window (Ctrl+Shift+Q), or its context menu (queue.window) |
Put several jobs into another list of the queue at once |
queue.clear |
Clear list or Clear all lists in the queue window's context menu (Shift+F10), after a question (queue.window) |
Take every job of a list, or of every list, off the queue: waiting ones removed, started ones cancelled, finished ones forgotten |
queue.clear_finished |
Clear finished in the queue window (Ctrl+Shift+Q) (queue.window) |
Take the finished jobs off the queue's list |
queue.create |
New list in the queue window (Ctrl+Shift+Q) (queue.window) |
Make a new list of the queue under a name, empty or with the jobs named; it starts stopped |
queue.delete |
Delete list in the queue window (Ctrl+Shift+Q) (queue.window) |
Remove a list of the queue; its jobs go to the default list, nothing is cancelled |
queue.delete_saved |
Delete saved list in the queue window (Ctrl+Shift+Q), after a question (queue.window) |
Delete a saved transfer list for good |
queue.discard |
Delete on the selected jobs in the queue window (Ctrl+Shift+Q), after a question when one has started (queue.window) |
Take several jobs off the queue: waiting ones removed, started ones cancelled (the file being written is removed), finished ones forgotten |
queue.list |
Shown: the queue window lists every job of the queue (Ctrl+Shift+Q) | The operations queue in its order: each job with its lane and its place among the waiting ones |
queue.lists |
Shown: the queue window's list and saved-list choosers (Ctrl+Shift+Q) | The lists of the queue with their state and job count, and the saved transfer lists |
queue.load |
Load a saved list in the queue window (Ctrl+Shift+Q) (queue.window) |
Load a saved transfer list into a new, stopped list of the queue; entries that cannot be loaded are named |
queue.move |
No key: one job for MCP: the queue window moves its selection, one job or several, with queue.move_many | Move a waiting job up, down, to the front or to the back of its lane: the order decides which starts next |
queue.move_many |
Ctrl+ArrowUp, Ctrl+ArrowDown, Ctrl+Home and Ctrl+End on the selected jobs in the queue window (Ctrl+Shift+Q) (queue.window) |
Move several waiting jobs up, down, to the front or to the back of their lanes, keeping their order |
queue.pause |
Stop list in the queue window (Ctrl+Shift+Q) (queue.window) |
Stop a list of the queue: its waiting jobs are held, its running ones pause |
queue.pause_all |
Pause all in the queue window (Ctrl+Shift+Q) (queue.window) |
Pause every job of the queue, running or waiting |
queue.remove |
No key: one waiting job for MCP: the queue window takes its selection off, a started job too, with queue.discard | Take a waiting job out of the queue before it starts |
queue.rename |
Rename list in the queue window (Ctrl+Shift+Q) (queue.window) |
Name a list of the queue anew |
queue.resume_all |
Resume all in the queue window (Ctrl+Shift+Q) (queue.window) |
Resume every paused job of the queue |
queue.save |
Save list in the queue window (Ctrl+Shift+Q) (queue.window) |
Save a list's copies and moves as a transfer list to load later (paths and connection ids, no secrets) |
queue.start |
Start list in the queue window (Ctrl+Shift+Q) (queue.window) |
Start a list of the queue: its jobs run as their lanes free up |
app.about |
Shown: the settings' About page (About rCommander in the command palette) | Which build runs: version, commit, build time, platform, licence, authors and addresses |
update.check |
Command palette: Check for updates | Check for a newer rCommander now against the signed manifest; changes no file |
update.download |
The Updates page of the settings: Download | Download the offered version, kept only when its size and SHA-256 match the manifest |
update.install |
The Updates page of the settings: Install and restart | Install the downloaded version and restart; the old one comes back if the new fails |
update.status |
Shown: the Updates page of the settings and the notice in the status bar show it | Running version, channel, last check and its result, the offer with its notes, download and install state |
229 commands: 57 with a key, 9 in the command palette, 119 in a dialog, 9 asked by the window, 25 shown by it, 10 without a way in, each for the reason it gives.
Every other key above does what it does in Total Commander 11, as far as TC's own
documentation records its keys (its KEYBOARD.TXT ships only inside its installer).
The table is crates/rc-engine/keymap/tc.json; a test holds it against the keymap.
| Key | Why |
|---|---|
| Ctrl+Ö / Ctrl+; | The terminal toggle on the key right of L, wherever the layout puts it: Ctrl+Ö on a German keyboard as in VS Code (owner 2026-10-17), Ctrl+; on a US one, Ctrl+Ñ on a Spanish one (owner 2026-10-29); Total Commander has no terminal panel |
| Ctrl+^ / Ctrl+` | The toggle also on the key left of 1, wherever the layout puts it: Ctrl+` on a US keyboard as in VS Code, Ctrl+² on a French AZERTY one, where the key right of L is M and Ctrl+M stays Multi-Rename (owner 2026-10-29), Ctrl+^ on a German one, Ctrl+º on a Spanish one |
| Ctrl+Shift+Ö / Ctrl+Shift+; | A new terminal with a shell choice, on the toggle's key |
| Ctrl+Shift+^ / Ctrl+Shift+` | A new terminal with a shell choice on the key left of 1 too |
| Ctrl+Ä / Ctrl+' | The active terminal over the whole window width and back, on the key beside the toggle's: Ctrl+Ä on a German keyboard (owner 2026-10-18), Ctrl+' on a US one |
| Ctrl+Shift+C | Copies the full paths of the selection; TC has the command (cm_CopyFullNamesToClip) without a default key |
| Ctrl+Shift+P | The command palette, as VS Code: every command by name, also the ones without a key |
| Key | TC | Why |
|---|---|---|
| Ctrl+F | Connect to an FTP server | The connection manager keeps SSH, SFTP and FTP servers in one tree |
| Ctrl+Shift+F | Disconnect from the FTP server | Closes whatever connection the active panel shows, SSH or FTP |
| Ctrl+Shift+F5 | Create a shortcut (.lnk) | The dialog also makes symbolic links, hard links and junctions; .lnk stays the default |
| Ctrl+Shift+A | List of the open tabs | While the panel shows its terminal it lists the terminal's sessions instead, and it works from inside a terminal too (RC-080-16) |
| Ctrl+Shift+Q | Quick View window | The queue window (RC-010-14): Ctrl+Q shows the Quick View in the other panel, and a separate Quick View window is not planned |
| F10 | The menu bar | RCommander opens its menu bar with Alt, so F10 closes the open dialog as Escape does and quits without one (owner 2026-10-18, RC-080-17); the setting keys.f10 narrows or switches it off |
| Key | TC | Why |
|---|---|---|
| Ctrl+Shift+F1 | Thumbnail view | Not planned yet (later) |
| Ctrl+Shift+F2 | Comments view | Not planned yet (later); comments themselves are Ctrl+Z |
| Ctrl+F7 | Unsorted | Not planned yet (later) |
| Ctrl+F8 | Directory tree | Not planned yet (later) |
| Alt+F10 | Directory tree dialog | Not planned yet (later) |
| Ctrl+F9 | Print the file list | Out of scope (never) |
| Ctrl+F10 | Show all files | File filters are not planned yet (later) |
| Ctrl+F11 | Show programs only | File filters are not planned yet (later) |
| Ctrl+F12 | User-defined file filter | File filters are not planned yet (later) |
| Ctrl+Shift+W | Close all tabs | Not planned yet (later) |
| Alt+F3 | Alternative viewer | F3 opens the external viewer when one is set; a second one is not planned yet |
| Shift+F3 | View only the file under the cursor | Not planned yet (later) |
| Shift+Alt+F7 | Find files in a separate process | The find dialog searches in the background already |
| Alt+F11 | Breadcrumb bar of the left panel | Keyboard access to the path bar is not planned yet (later) |
| Alt+F12 | Breadcrumb bar of the right panel | Keyboard access to the path bar is not planned yet (later) |
| Shift+Alt+F11 | Focus the button bar | RCommander has no button bar |
| Ctrl+Shift+M | FTP transfer mode | Not planned yet (later) |
| F9 | The menu above the active panel | RCommander's menu bar has no menu per panel; Alt opens the menu bar, the command palette (Ctrl+Shift+P) and the context menu (Shift+F10) reach the rest |
| F1 | Help | The help is the wiki; no in-app help yet |
These keys belong to a part of the window while it has the keyboard; they are not in the keymap. Total Commander's keys where it has them; rC marks rCommander's own.
| Key | Action |
|---|---|
| Letters | Find an action by its name or its key (ctrl+f3); every word must match |
| Up / Down, PgUp / PgDn | Choose a row |
| Enter, click | Run it, as its key would |
| Esc | Close the palette |
| Key | Action |
|---|---|
| Ctrl+Alt+letters | Quick search: jump to the first name that starts with them (Settings: Alt with letters, or letters alone; match anywhere; * and ? work) |
| Down / Up (during a quick search) | Next / previous match |
| Letters | Type into the command line under the panels |
| Enter / Shift+Enter | Run the command line in the active panel's folder / and keep the console open |
| Up / Down (in the command line) | The previous command lines |
| Esc | Empty the command line, or lift the panel's filter |
| Key | Action |
|---|---|
| Up / Down (in a mask prompt, Num+ and Num-) | The last 20 masks |
| Enter / Esc | Run the prompt / drop it |
| Arrows, Home, End, Enter or Space, Esc | The folder history (Alt+Down), the hotlist (Ctrl+D) and the drive menu (Alt+F1, Alt+F2; also a drive letter) |
| Esc (while folder sizes are counted) | Stop counting |
| Tab / Shift+Tab (in a dialog) | Next / previous text field of any dialog, such as the master password and its repeat |
| Enter (in the settings) | OK |
| F10 (in any dialog) |
rC What Esc does there; without a dialog F10 quits (setting keys.f10) |
| Alt+underlined letter (in a dialog) | The button or checkbox with that letter; the text field, pick list or option group after the caption with it gets the keyboard; the letter alone while a button or checkbox has the focus ring (underlined while Alt is held, or always: keys.underline_access_keys) |
The context menus, the drive menu and the lists of the tabs work as Windows menus do.
| Key | Action |
|---|---|
| Shift+F10, Menu key | The context menu: of the selection or the file under the cursor in the file list; of the drive under the cursor in the drive menu (Alt+F1, Alt+F2); of the tab under the cursor in the list of tabs |
| Up / Down, Home / End, Enter or Space, Esc | Choose an entry, take it, close the menu |
| A letter | Take the one entry starting with it; with several, go to the next of them |
| Ctrl+Shift+A | The list of the panel's tabs, all of them, also those behind » (TC); while the panel shows its terminal, the list of the terminal's sessions, from inside the terminal too (rC) |
| Del (in the list of tabs or of sessions) | Close the tab or the session under the cursor |
| Ctrl+Up, Ctrl+Down (in the list of tabs) | Move the tab under the cursor one place left or right in its row (rC) |
The drive menu lists every drive, also those behind the drive bar's ».
| Key | Action |
|---|---|
| 1 / 2 / 3 / 4 | Text / binary / hex / image |
| 5 | A Markdown file: preview or text (TC's 5 shows HTML formatted) |
| 7 | A viewer plugin's document: its next view - coloured text, tree, ... (rC) |
| A / 6 / 8 | Windows-1252 / UTF-16 LE / UTF-8 |
| E | Next encoding (rC) |
| W | Wrap lines on or off |
| T | Tab width 8, 4 or 2 (rC) |
| N / P | Next / previous file of the panel |
| F2 | Read the file again |
| F7, Ctrl+F | Search text (with or without case) or hex bytes |
| F3 / Shift+F3 | Find next / previous |
| Ctrl+G | Go to an offset (rC) |
| Ctrl+C, Ctrl+A | Copy the selected text, select all - also in the Markdown preview |
Num + / Num - (also +, = / -) |
Zoom an image in / out |
Ctrl++ / Ctrl+- (also Ctrl+Num + / Ctrl+Num -, Ctrl+=), Ctrl+wheel |
Text a step larger / smaller, 6 to 72 pt; an image zooms (rC) |
| Ctrl+0 | Text back to the viewer font size; an image fits the window (rC) |
| F | Image fit to the window or at 100 % |
| R / Shift+R | Turn the image right / left |
| Right / Left (tree) | Unfold a node or step to its first child / fold it or step to its parent, as in the Explorer |
| Up / Down, PgUp / PgDn, Home / End (tree) | Move through the tree's rows |
| Esc | Stop a search, close a bar, close the viewer |
| Key | Action |
|---|---|
| Arrows, Home, End, PgUp, PgDn | Move in the tree; Left and Right close and open a folder |
| Enter | Open a folder |
| F2 / F7 / Insert | Rename / new folder / new connection |
| F8, Del | Delete, after a question |
| Space | Show the connection in the drive bar, or not |
| Ctrl+X / Ctrl+V | Move a connection or folder |
| Tab / Shift+Tab | Into the form and through its fields; Shift+Tab from the tree reaches the filter |
| Enter / Esc (in the form) | Save / back to the tree |
| Esc (in the tree) | Close the manager |
| Key | Action |
|---|---|
| Up / Down | Choose a job |
| Ctrl+Up / Ctrl+Down, Ctrl+Home | Move a waiting job up / down / to the front |
| Space | Pause or resume the job |
| Del | Remove a waiting job; cancel a running one after a question |
| Enter | Answer the job's question |
| Esc | Close the window; the jobs go on |
F2 in the copy and move dialog (F5, F6) puts the job into the queue; F2 (or Esc) in a job's progress window sends the running job to the background, where the queue window lists it.
| Key | Action |
|---|---|
| Alt+N / Alt+X | Rename mask / extension mask |
| Alt+S / Alt+R | Search for / replace with |
| Alt+A, Alt+1, Alt+E, Alt+G, Alt+B | ^ Case, 1x, [E], RegEx, Subst. |
| Alt+C / Alt+T | Upper and lower case / counter |
| Alt+D / Alt+P, F2 | / preset name, save the preset |
| Alt+L | Write a log |
| Ctrl+Up / Ctrl+Down, Alt+O | Move a file in the list / sort by the old name |
| Tab / Shift+Tab | Through the fields |
| Enter / Alt+U / Esc | Start / undo the last multi-rename / close |
| Key | Action |
|---|---|
| Alt+Down / Alt+Up | Next / previous difference (compare; rC, as WinMerge) |
| Enter | Compare the folders (synchronize) |
| Space, click | Change the action of a row (synchronize) |
| F3, double click | Compare a pair of files by content (synchronize) |
| Esc | Stop a running comparison, then close |
| Key | Action |
|---|---|
| Ctrl+Shift+C / Ctrl+Shift+V | Copy / paste in the terminal (right click pastes on Windows) |
| Ctrl+C, right click (with selected text) | Copy the selection and clear it; without one Ctrl+C interrupts and a right click pastes (settings terminal.copy_ctrl_c, terminal.copy_right_click) |
| Ctrl+V (with text on the clipboard) | Paste it; without text Ctrl+V goes to the program (setting terminal.paste_ctrl_v) |
| Ctrl+Alt+V | The clipboard's image saved as a PNG the program can read, its path pasted (terminal.paste_image, setting terminal.paste_image; Windows) |
| Shift + mouse | Select text even while a program such as Claude Code or vim takes the mouse (setting terminal.shift_selects) |
| Shift+PgUp / Shift+PgDn, mouse wheel | Scroll back through the terminal's history |
| 1-9, Enter / Esc (in the shell choice) | Start a shell / cancel |
Every other key goes to the shell; only the terminal toggle (Ctrl+Ö or Ctrl+^, Ctrl+; or Ctrl+` on a US keyboard, Ctrl+² on a French one), the terminal over the whole window (Ctrl+Ä, Ctrl+') and the list of the terminal's sessions (Ctrl+Shift+A) leave it.
The function-key bar under the panels shows the keys and changes with Shift, Ctrl and Alt; a
click runs the key. A click on a tab shows it, a middle click closes it, a right click locks,
copies or closes it; a locked tab (* before its title) opens every new folder in a new tab. A
tab dragged within its bar goes where the accent bar marks it, a locked one too; Escape or
leaving the bar cancels (setting tabs.drag_reorder). A right click on a file opens its context
menu, beside the rows or on .. the folder's menu.
In a file list a click puts the cursor on the row, Ctrl+click selects or deselects it,
Shift+click selects the rows from the last clicked one to it in place of the selection,
Ctrl+Shift+click adds them; .. is never selected. A plain click keeps the selection, as in
Total Commander, unless A click clears the selection is on (Settings, page Folders).
| Key | Action | Milestone |
|---|---|---|
| Alt+letter | The main buttons of a dialog | 0.8 (RC-080-05) |
Getting started
Using rCommander
Developing
Reference