#### 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. ## ## - run_external_console_command "command" - runs given console ## 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 ## - load ## # #def_key "mouse" # mouse_event # def_key "k" scroll_up # def_key "K" select_item scroll_up # def_key "j" scroll_down # def_key "J" 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 "g" move_home # def_key "G" move_end # def_key "v" select_item # def_key "enter" enter_directory # def_key "enter" toggle_output # def_key "enter" run_action # def_key "enter" play_item # #def_key "P" # add_item_to_playlist # #def_key "y" # toggle_lyrics_update_on_song_change # def_key "V" toggle_visualization_type # #def_key "delete" # delete_playlist_items # #def_key "delete" # delete_browser_items # #def_key "delete" # delete_stored_playlist # def_key "l" next_column # def_key "l" slave_screen # def_key "=" volume_up # def_key "h" previous_column # def_key "h" master_screen # def_key "-" volume_down # def_key ":" execute_command # def_key "tab" next_screen # def_key "shift-tab" previous_screen # def_key "f1" show_help # def_key "1" show_media_library # def_key "1" toggle_media_library_columns_mode # def_key "2" show_browser # def_key "2" change_browse_mode # def_key "3" show_search_engine # def_key "3" reset_search_engine # def_key "4" show_playlist # def_key "5" show_playlist_editor # def_key "6" show_tag_editor # def_key "7" show_outputs # def_key "8" show_visualizer # def_key "9" show_clock # def_key "0" show_server_info # def_key "S" stop # def_key "space" pause # def_key "p" dummy # 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" dummy # replay_song # def_key "L" seek_forward # def_key "H" seek_backward # def_key "r" toggle_repeat # def_key "z" toggle_random # #def_key "y" # save_tag_changes # def_key "?" start_searching # def_key "!" toggle_single # def_key "C" 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 "s" shuffle # def_key "x" dummy # toggle_crossfade # def_key "X" dummy # 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 "n" next_found_item # def_key "N" previous_found_item # def_key "w" toggle_find_mode # def_key "e" edit_song # def_key "e" 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 # def_key "backspace" show_lyrics # #def_key "ctrl-v" # select_range # #def_key "v" # reverse_selection # def_key "V" remove_selection # #def_key "B" # select_album # def_key "a" add_selected_items # #def_key "c" # clear_playlist (clears saved playlist in playlist editor aka page 5) # def_key "c" clear_main_playlist # #def_key "C" # crop_playlist # #def_key "C" # crop_main_playlist # def_key "ctrl-k" move_sort_order_up # def_key "ctrl-k" move_selected_items_up # def_key "ctrl-j" move_sort_order_down # def_key "ctrl-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 # #def_key "E" # jump_to_tag_editor # #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 "@" 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 #