2018-07-12 22:58:44 +02:00
|
|
|
##### General rules #####
|
|
|
|
##
|
|
|
|
## 1) Because each action has runtime checks whether it's
|
|
|
|
## ok to run it, a few actions can be bound to one key.
|
|
|
|
## Actions will be bound in order given in configuration
|
|
|
|
## file. When a key is pressed, first action in order
|
|
|
|
## will test itself whether it's possible to run it. If
|
|
|
|
## test succeeds, action is executed and other actions
|
|
|
|
## bound to this key are ignored. If it doesn't, next
|
|
|
|
## action in order tests itself etc.
|
|
|
|
##
|
|
|
|
## 2) It's possible to bind more that one action at once
|
|
|
|
## to a key. It can be done using the following syntax:
|
|
|
|
##
|
|
|
|
## def_key "key"
|
|
|
|
## action1
|
|
|
|
## action2
|
|
|
|
## ...
|
|
|
|
##
|
|
|
|
## This creates a chain of actions. When such chain is
|
|
|
|
## executed, each action in chain is run until the end of
|
|
|
|
## chain is reached or one of its actions fails to execute
|
|
|
|
## due to its requirements not being met. If multiple actions
|
|
|
|
## and/or chains are bound to the same key, they will be
|
|
|
|
## consecutively run until one of them gets fully executed.
|
|
|
|
##
|
|
|
|
## 3) When ncmpcpp starts, bindings configuration file is
|
|
|
|
## parsed and then ncmpcpp provides "missing pieces"
|
|
|
|
## of default keybindings. If you want to disable some
|
|
|
|
## bindings, there is a special action called 'dummy'
|
|
|
|
## for that purpose. Eg. if you want to disable ability
|
|
|
|
## to crop playlists, you need to put the following
|
|
|
|
## into configuration file:
|
|
|
|
##
|
|
|
|
## def_key "C"
|
|
|
|
## dummy
|
|
|
|
##
|
|
|
|
## After that ncmpcpp will not bind any default action
|
|
|
|
## to this key.
|
|
|
|
##
|
|
|
|
## 4) To let you write simple macros, the following special
|
|
|
|
## actions are provided:
|
|
|
|
##
|
|
|
|
## - push_character "character" - pushes given special
|
|
|
|
## character into input queue, so it will be immediately
|
|
|
|
## picked by ncmpcpp upon next call to readKey function.
|
|
|
|
## Accepted values: mouse, up, down, page_up, page_down,
|
|
|
|
## home, end, space, enter, insert, delete, left, right,
|
|
|
|
## tab, ctrl-a, ctrl-b, ..., ctrl-z, ctrl-[, ctrl-\\,
|
|
|
|
## ctrl-], ctrl-^, ctrl-_, f1, f2, ..., f12, backspace.
|
|
|
|
## In addition, most of these names can be prefixed with
|
|
|
|
## alt-/ctrl-/shift- to be recognized with the appropriate
|
|
|
|
## modifier key(s).
|
|
|
|
##
|
|
|
|
## - push_characters "string" - pushes given string into
|
|
|
|
## input queue.
|
|
|
|
##
|
|
|
|
## - require_runnable "action" - checks whether given action
|
|
|
|
## is runnable and fails if it isn't. This is especially
|
|
|
|
## useful when mixed with previous two functions. Consider
|
|
|
|
## the following macro definition:
|
|
|
|
##
|
|
|
|
## def_key "key"
|
|
|
|
## push_characters "custom_filter"
|
|
|
|
## apply_filter
|
|
|
|
##
|
|
|
|
## If apply_filter can't be currently run, we end up with
|
|
|
|
## sequence of characters in input queue which will be
|
|
|
|
## treated just as we typed them. This may lead to unexpected
|
|
|
|
## results (in this case 'c' will most likely clear current
|
|
|
|
## playlist, 'u' will trigger database update, 's' will stop
|
|
|
|
## playback etc.). To prevent such thing from happening, we
|
|
|
|
## need to change above definition to this one:
|
|
|
|
##
|
|
|
|
## def_key "key"
|
|
|
|
## require_runnable "apply_filter"
|
|
|
|
## push_characters "custom_filter"
|
|
|
|
## apply_filter
|
|
|
|
##
|
|
|
|
## Here, first we test whether apply_filter can be actually run
|
|
|
|
## before we stuff characters into input queue, so if condition
|
|
|
|
## is not met, whole chain is aborted and we're fine.
|
|
|
|
##
|
|
|
|
## - require_screen "screen" - checks whether given screen is
|
|
|
|
## currently active. accepted values: browser, clock, help,
|
|
|
|
## media_library, outputs, playlist, playlist_editor,
|
|
|
|
## search_engine, tag_editor, visualizer, last_fm, lyrics,
|
|
|
|
## selected_items_adder, server_info, song_info,
|
|
|
|
## sort_playlist_dialog, tiny_tag_editor.
|
|
|
|
##
|
|
|
|
## - run_external_command "command" - runs given command using
|
|
|
|
## system() function.
|
|
|
|
##
|
|
|
|
## 5) In addition to binding to a key, you can also bind actions
|
|
|
|
## or chains of actions to a command. If it comes to commands,
|
|
|
|
## syntax is very similar to defining keys. Here goes example
|
|
|
|
## definition of a command:
|
|
|
|
##
|
|
|
|
## def_command "quit" [deferred]
|
|
|
|
## stop
|
|
|
|
## quit
|
|
|
|
##
|
|
|
|
## If you execute the above command (which can be done by
|
|
|
|
## invoking action execute_command, typing 'quit' and pressing
|
|
|
|
## enter), ncmpcpp will stop the player and then quit. Note the
|
|
|
|
## presence of word 'deferred' enclosed in square brackets. It
|
|
|
|
## tells ncmpcpp to wait for confirmation (ie. pressing enter)
|
|
|
|
## after you typed quit. Instead of 'deferred', 'immediate'
|
|
|
|
## could be used. Then ncmpcpp will not wait for confirmation
|
|
|
|
## (enter) and will execute the command the moment it sees it.
|
|
|
|
##
|
|
|
|
## Note: while command chains are executed, internal environment
|
|
|
|
## update (which includes current window refresh and mpd status
|
|
|
|
## update) is not performed for performance reasons. However, it
|
|
|
|
## may be desirable to do so in some situration. Therefore it's
|
|
|
|
## possible to invoke by hand by performing 'update enviroment'
|
|
|
|
## action.
|
|
|
|
##
|
|
|
|
## Note: There is a difference between:
|
|
|
|
##
|
|
|
|
## def_key "key"
|
|
|
|
## action1
|
|
|
|
##
|
|
|
|
## def_key "key"
|
|
|
|
## action2
|
|
|
|
##
|
|
|
|
## and
|
|
|
|
##
|
|
|
|
## def_key "key"
|
|
|
|
## action1
|
|
|
|
## action2
|
|
|
|
##
|
|
|
|
## First one binds two single actions to the same key whilst
|
|
|
|
## second one defines a chain of actions. The behavior of
|
|
|
|
## these two is different and is described in (1) and (2).
|
|
|
|
##
|
|
|
|
## Note: Function def_key accepts non-ascii characters.
|
|
|
|
##
|
|
|
|
##### List of unbound actions #####
|
|
|
|
##
|
|
|
|
## The following actions are not bound to any key/command:
|
|
|
|
##
|
|
|
|
## - set_volume
|
|
|
|
##
|
|
|
|
#
|
|
|
|
#def_key "mouse"
|
|
|
|
# mouse_event
|
|
|
|
#
|
|
|
|
def_key "k"
|
|
|
|
scroll_up
|
|
|
|
#
|
|
|
|
#def_key "shift-up"
|
|
|
|
# select_item
|
|
|
|
# scroll_up
|
|
|
|
#
|
|
|
|
def_key "j"
|
|
|
|
scroll_down
|
|
|
|
#
|
|
|
|
#def_key "shift-down"
|
|
|
|
# select_item
|
|
|
|
# scroll_down
|
|
|
|
#
|
|
|
|
#def_key "["
|
|
|
|
# scroll_up_album
|
|
|
|
#
|
|
|
|
#def_key "]"
|
|
|
|
# scroll_down_album
|
|
|
|
#
|
|
|
|
#def_key "{"
|
|
|
|
# scroll_up_artist
|
|
|
|
#
|
|
|
|
#def_key "}"
|
|
|
|
# scroll_down_artist
|
|
|
|
#
|
|
|
|
#def_key "page_up"
|
|
|
|
# page_up
|
|
|
|
#
|
|
|
|
#def_key "page_down"
|
|
|
|
# page_down
|
|
|
|
#
|
|
|
|
def_key "g"
|
|
|
|
move_home
|
|
|
|
#
|
|
|
|
def_key "G"
|
|
|
|
move_end
|
|
|
|
#
|
|
|
|
#def_key "insert"
|
|
|
|
# select_item
|
|
|
|
#
|
|
|
|
def_key "enter"
|
|
|
|
enter_directory
|
|
|
|
#
|
|
|
|
def_key "enter"
|
|
|
|
toggle_output
|
|
|
|
#
|
|
|
|
def_key "enter"
|
|
|
|
run_action
|
|
|
|
#
|
|
|
|
def_key "enter"
|
|
|
|
play_item
|
|
|
|
#
|
|
|
|
def_key "a"
|
|
|
|
add_item_to_playlist
|
|
|
|
#
|
|
|
|
#def_key "space"
|
|
|
|
# toggle_lyrics_update_on_song_change
|
|
|
|
#
|
|
|
|
def_key "v"
|
|
|
|
toggle_visualization_type
|
|
|
|
#
|
|
|
|
def_key "x"
|
|
|
|
delete_playlist_items
|
|
|
|
#
|
|
|
|
def_key "x"
|
|
|
|
delete_browser_items
|
|
|
|
#
|
|
|
|
def_key "x"
|
|
|
|
delete_stored_playlist
|
|
|
|
#
|
|
|
|
def_key "l"
|
|
|
|
next_column
|
|
|
|
#
|
|
|
|
def_key "l"
|
|
|
|
slave_screen
|
|
|
|
#
|
|
|
|
#def_key "right"
|
|
|
|
# volume_up
|
|
|
|
#
|
|
|
|
#def_key "+"
|
|
|
|
# volume_up
|
|
|
|
#
|
|
|
|
def_key "h"
|
|
|
|
previous_column
|
|
|
|
#
|
|
|
|
def_key "h"
|
|
|
|
master_screen
|
|
|
|
#
|
|
|
|
#def_key "left"
|
|
|
|
# volume_down
|
2018-11-04 00:18:10 +01:00
|
|
|
def_key "up"
|
|
|
|
volume_up
|
|
|
|
def_key "down"
|
|
|
|
volume_down
|
2018-07-12 22:58:44 +02:00
|
|
|
#
|
|
|
|
#def_key "-"
|
|
|
|
# volume_down
|
|
|
|
#
|
|
|
|
#def_key ":"
|
|
|
|
# execute_command
|
|
|
|
#
|
|
|
|
#def_key "tab"
|
|
|
|
# next_screen
|
|
|
|
#
|
|
|
|
#def_key "shift-tab"
|
|
|
|
# previous_screen
|
|
|
|
#
|
|
|
|
def_key "?"
|
|
|
|
show_help
|
|
|
|
#
|
|
|
|
def_key "p"
|
|
|
|
show_playlist
|
|
|
|
#
|
2018-11-04 00:18:10 +01:00
|
|
|
def_key "b"
|
|
|
|
show_browser
|
2018-07-12 22:58:44 +02:00
|
|
|
#
|
2018-11-04 00:18:10 +01:00
|
|
|
def_key "b"
|
|
|
|
change_browse_mode
|
2018-07-12 22:58:44 +02:00
|
|
|
#
|
|
|
|
def_key "s"
|
|
|
|
show_search_engine
|
|
|
|
#
|
|
|
|
def_key "s"
|
|
|
|
reset_search_engine
|
|
|
|
#
|
|
|
|
def_key "m"
|
|
|
|
show_media_library
|
|
|
|
#
|
|
|
|
def_key "m"
|
|
|
|
toggle_media_library_columns_mode
|
|
|
|
#
|
|
|
|
def_key "p"
|
|
|
|
show_playlist_editor
|
|
|
|
#
|
|
|
|
def_key "t"
|
2018-08-13 14:07:32 +02:00
|
|
|
dummy
|
|
|
|
# show_tag_editor
|
2018-07-12 22:58:44 +02:00
|
|
|
#
|
|
|
|
def_key "o"
|
|
|
|
show_outputs
|
|
|
|
#
|
|
|
|
def_key "v"
|
|
|
|
show_visualizer
|
|
|
|
#
|
|
|
|
#def_key "="
|
|
|
|
# show_clock
|
|
|
|
#
|
|
|
|
#def_key "@"
|
|
|
|
# show_server_info
|
|
|
|
#
|
|
|
|
def_key "S"
|
|
|
|
stop
|
|
|
|
#
|
|
|
|
def_key "space"
|
|
|
|
pause
|
|
|
|
#
|
|
|
|
#def_key ">"
|
|
|
|
# next
|
|
|
|
#
|
|
|
|
#def_key "<"
|
|
|
|
# previous
|
|
|
|
#
|
|
|
|
#def_key "ctrl-h"
|
|
|
|
# jump_to_parent_directory
|
|
|
|
#
|
|
|
|
#def_key "ctrl-h"
|
|
|
|
# replay_song
|
|
|
|
#
|
|
|
|
#def_key "backspace"
|
|
|
|
# jump_to_parent_directory
|
|
|
|
#
|
|
|
|
#def_key "backspace"
|
|
|
|
# replay_song
|
|
|
|
#
|
2019-06-13 19:50:24 +02:00
|
|
|
def_key "ctrl-right"
|
2018-07-12 22:58:44 +02:00
|
|
|
seek_forward
|
|
|
|
#
|
2019-06-13 19:50:24 +02:00
|
|
|
def_key "ctrl-left"
|
2018-07-12 22:58:44 +02:00
|
|
|
seek_backward
|
|
|
|
#
|
|
|
|
#def_key "r"
|
|
|
|
# toggle_repeat
|
|
|
|
#
|
|
|
|
#def_key "z"
|
|
|
|
# toggle_random
|
|
|
|
#
|
|
|
|
#def_key "y"
|
|
|
|
# save_tag_changes
|
|
|
|
#
|
|
|
|
#def_key "y"
|
|
|
|
# start_searching
|
|
|
|
#
|
|
|
|
#def_key "y"
|
|
|
|
# toggle_single
|
|
|
|
#
|
|
|
|
#def_key "R"
|
|
|
|
# toggle_consume
|
|
|
|
#
|
|
|
|
#def_key "Y"
|
|
|
|
# toggle_replay_gain_mode
|
|
|
|
#
|
|
|
|
#def_key "T"
|
|
|
|
# toggle_add_mode
|
|
|
|
#
|
|
|
|
#def_key "|"
|
|
|
|
# toggle_mouse
|
|
|
|
#
|
|
|
|
#def_key "#"
|
|
|
|
# toggle_bitrate_visibility
|
|
|
|
#
|
|
|
|
#def_key "Z"
|
|
|
|
# shuffle
|
|
|
|
#
|
|
|
|
#def_key "x"
|
|
|
|
# toggle_crossfade
|
|
|
|
#
|
|
|
|
#def_key "X"
|
|
|
|
# set_crossfade
|
|
|
|
#
|
|
|
|
#def_key "u"
|
|
|
|
# update_database
|
|
|
|
#
|
|
|
|
#def_key "ctrl-s"
|
|
|
|
# sort_playlist
|
|
|
|
#
|
|
|
|
#def_key "ctrl-s"
|
|
|
|
# toggle_browser_sort_mode
|
|
|
|
#
|
|
|
|
#def_key "ctrl-s"
|
|
|
|
# toggle_media_library_sort_mode
|
|
|
|
#
|
|
|
|
#def_key "ctrl-r"
|
|
|
|
# reverse_playlist
|
|
|
|
#
|
|
|
|
#def_key "ctrl-f"
|
|
|
|
# apply_filter
|
|
|
|
#
|
|
|
|
#def_key "ctrl-_"
|
|
|
|
# select_found_items
|
|
|
|
#
|
|
|
|
#def_key "/"
|
|
|
|
# find
|
|
|
|
#
|
|
|
|
#def_key "/"
|
|
|
|
# find_item_forward
|
|
|
|
#
|
|
|
|
#def_key "?"
|
|
|
|
# find
|
|
|
|
#
|
|
|
|
#def_key "?"
|
|
|
|
# find_item_backward
|
|
|
|
#
|
|
|
|
#def_key "."
|
|
|
|
# next_found_item
|
|
|
|
#
|
|
|
|
#def_key ","
|
|
|
|
# previous_found_item
|
|
|
|
#
|
|
|
|
#def_key "w"
|
|
|
|
# toggle_find_mode
|
|
|
|
#
|
|
|
|
#def_key "e"
|
|
|
|
# edit_song
|
|
|
|
#
|
2018-08-13 14:07:32 +02:00
|
|
|
def_key "e"
|
|
|
|
dummy
|
2018-07-12 22:58:44 +02:00
|
|
|
# edit_library_tag
|
|
|
|
#
|
|
|
|
#def_key "e"
|
|
|
|
# edit_library_album
|
|
|
|
#
|
|
|
|
#def_key "e"
|
|
|
|
# edit_directory_name
|
|
|
|
#
|
|
|
|
#def_key "e"
|
|
|
|
# edit_playlist_name
|
|
|
|
#
|
|
|
|
#def_key "e"
|
|
|
|
# edit_lyrics
|
|
|
|
#
|
|
|
|
#def_key "i"
|
|
|
|
# show_song_info
|
|
|
|
#
|
|
|
|
#def_key "I"
|
|
|
|
# show_artist_info
|
|
|
|
#
|
|
|
|
#def_key "g"
|
|
|
|
# jump_to_position_in_song
|
|
|
|
#
|
2018-07-24 12:45:04 +02:00
|
|
|
def_key "L"
|
2018-07-12 22:58:44 +02:00
|
|
|
show_lyrics
|
|
|
|
#
|
|
|
|
def_key "V"
|
|
|
|
select_range
|
|
|
|
#
|
|
|
|
def_key "i"
|
|
|
|
reverse_selection
|
|
|
|
#
|
|
|
|
def_key "escape"
|
|
|
|
remove_selection
|
|
|
|
#
|
|
|
|
#def_key "B"
|
|
|
|
# select_album
|
|
|
|
#
|
|
|
|
#def_key "a"
|
|
|
|
# add_selected_items
|
|
|
|
#
|
|
|
|
#def_key "c"
|
|
|
|
# clear_playlist
|
|
|
|
#
|
|
|
|
#def_key "c"
|
|
|
|
# clear_main_playlist
|
|
|
|
#
|
|
|
|
#def_key "C"
|
|
|
|
# crop_playlist
|
|
|
|
#
|
|
|
|
#def_key "C"
|
|
|
|
# crop_main_playlist
|
|
|
|
#
|
|
|
|
def_key "alt-k"
|
|
|
|
move_sort_order_up
|
|
|
|
#
|
|
|
|
def_key "alt-k"
|
|
|
|
move_selected_items_up
|
|
|
|
#
|
|
|
|
def_key "alt-j"
|
|
|
|
move_sort_order_down
|
|
|
|
#
|
|
|
|
def_key "alt-j"
|
|
|
|
move_selected_items_down
|
|
|
|
#
|
|
|
|
#def_key "M"
|
|
|
|
# move_selected_items_to
|
|
|
|
#
|
|
|
|
#def_key "A"
|
|
|
|
# add
|
|
|
|
#
|
|
|
|
#def_key "S"
|
|
|
|
# save_playlist
|
|
|
|
#
|
|
|
|
#def_key "o"
|
|
|
|
# jump_to_playing_song
|
|
|
|
#
|
|
|
|
#def_key "G"
|
|
|
|
# jump_to_browser
|
|
|
|
#
|
|
|
|
#def_key "G"
|
|
|
|
# jump_to_playlist_editor
|
|
|
|
#
|
|
|
|
#def_key "~"
|
|
|
|
# jump_to_media_library
|
|
|
|
#
|
2018-08-13 14:07:32 +02:00
|
|
|
def_key "E"
|
|
|
|
dummy
|
2018-07-12 22:58:44 +02:00
|
|
|
#
|
|
|
|
#def_key "U"
|
|
|
|
# toggle_playing_song_centering
|
|
|
|
#
|
|
|
|
#def_key "P"
|
|
|
|
# toggle_display_mode
|
|
|
|
#
|
|
|
|
#def_key "\\"
|
|
|
|
# toggle_interface
|
|
|
|
#
|
|
|
|
#def_key "!"
|
|
|
|
# toggle_separators_between_albums
|
|
|
|
#
|
|
|
|
#def_key "L"
|
|
|
|
# toggle_lyrics_fetcher
|
|
|
|
#
|
|
|
|
#def_key "F"
|
|
|
|
# fetch_lyrics_in_background
|
|
|
|
#
|
|
|
|
#def_key "alt-l"
|
|
|
|
# toggle_fetching_lyrics_in_background
|
|
|
|
#
|
|
|
|
#def_key "ctrl-l"
|
|
|
|
# toggle_screen_lock
|
|
|
|
#
|
|
|
|
#def_key "`"
|
|
|
|
# toggle_library_tag_type
|
|
|
|
#
|
|
|
|
#def_key "`"
|
|
|
|
# refetch_lyrics
|
|
|
|
#
|
|
|
|
#def_key "`"
|
|
|
|
# add_random_items
|
|
|
|
#
|
|
|
|
#def_key "ctrl-p"
|
|
|
|
# set_selected_items_priority
|
|
|
|
#
|
|
|
|
#def_key "q"
|
|
|
|
# quit
|
|
|
|
#
|