Skip to content

keymaps.pkl

Override or add keyboard shortcuts. Your file is merged with the built-in defaults — only include the bindings you want to change.

For the built-in default set and how chords/contexts work conceptually, see GUI → Keymaps and keymaps-example.pkl.

Skeleton

global_settings {
  keymaps_enabled = true
  show_keymap_hints = true
  sequence_timeout = 1.0      // seconds to wait for next key in a sequence
}

keymaps {
  new { action = "archive"; key = "e" }                                    // rebind a → e
  new { action = "delete"; key = "dd"; sequence = true; enabled = false }  // disable default
  new { action = "tag_op"; key = "T"; tags = "+todo -inbox" }              // add custom binding
}

Binding fields

FieldTypeNotes
actionStringBuilt-in action name (see below)
keyStringSingle key, or chord like "gi", "dd"
modifiersListing<String>?{ "cmd" }, { "ctrl" }, { "shift" }, or omit
sequenceBoolean?true for multi-key chords
supports_countBoolean?true to accept count prefix (5j)
enabledBoolean?false disables a default
contextString?Where this binding is active
tagsString?For tag_op only — e.g. "+todo -inbox"

Contexts

ContextWhen active
list (default)Email list view
threadOpen thread view
searchSearch popup
tag_pickerTag picker popup
compose_normalCompose window in normal (vim) mode

Action names

A non-exhaustive list — see keymaps-example.pkl for the full set:

next_email, prev_email, first_email, last_email, page_down, page_up
archive, delete, toggle_read, toggle_star, tag_picker, tag_op
compose, reply, reply_all, forward
go_inbox, go_sent, go_drafts, go_archive, go_folder
next_folder, prev_folder, folder_picker
search, close_detail, reload_inbox
enter_visual_mode, enter_toggle_mode, toggle_selection, exit_visual_mode
enter_thread, scroll_down, scroll_up, next_message, prev_message
exit_insert    (compose vim mode)

Override semantics

Bindings match by (key + modifiers + context). A binding in your keymaps.pkl with the same triple as a default replaces the default. To remove a default without replacing, set enabled = false.

Validate

durian validate keymaps