########################################################## ## this is example bindings configuration file, copy it ## ## to ~/.ncmpcpp/bindings and set up your preferences ## ########################################################## ## ##### 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 chain of actions. When such chain is ## executed, each action in chain is run until the end of ## chain is reached or one of actions failed to execute ## due to its requirements not being met. Note that ## execution of chain of actions ALWAYS succeeds, no ## matter if one of actions from the chain failed (even ## if it was the first one in order and thus nothing ## was really executed). Because of that, if you decide ## to bind both actions and chains to a single key, make ## sure that chain is defined in the end. Otherwise, all ## actions bound to the key after chain will never be run. ## ## 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, shift_tab, ctrl_a, ctrl_b, ..., ctrl_z, f1, f2, ## ..., f12, backspace, backspace_2. ## ## - 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: Both 'backspace' and 'backspace_2' are used because some ## terminals interpret backspace using keycode of 'backspace' ## and some the one of 'backspace_2'. You can get away with ## binding once if all your terminal emulators use the same ## value. ## ## 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. ## # #def_key "mouse" # mouse_event # def_key "k" scroll_up # def_key "j" scroll_down # #def_key "[" # scroll_up_album # #def_key "]" # scroll_down_album # #def_key "{" # scroll_up_artist # #def_key "}" # scroll_down_artist # def_key "ctrl_u" page_up # def_key "ctrl_d" page_down # #def_key "home" # move_home # #def_key "end" # move_end # #def_key "space" # press_space # #def_key "enter" # press_enter # def_key "d" delete_playlist_items # #def_key "delete" # delete_stored_playlist # def_key "ctrl_l" next_column # #def_key "right" # slave_screen # #def_key "right" # volume_up def_key "+" volume_up # def_key "ctrl_h" previous_column # #def_key "left" # master_screen # #def_key "left" # volume_down # 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_playlist # #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_media_library # #def_key "4" # toggle_media_library_columns_mode # #def_key "5" # show_playlist_editor # #def_key "6" # show_tag_editor # #def_key "7" # show_outputs # #def_key "8" # show_visualizer # #def_key "=" # show_clock # #def_key "@" # show_server_info # #def_key "s" # stop # #def_key "p" # 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 # #def_key "backspace_2" # jump_to_parent_directory # #def_key "backspace_2" # replay_song # #def_key "f" # seek_forward # #def_key "b" # 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_space_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_v" # sort_playlist # #def_key "ctrl_r" # reverse_playlist # #def_key "ctrl_f" # apply_filter # #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 # #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 "l" # show_lyrics # #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 # #def_key "c" # clear_main_playlist # #def_key "C" # crop_playlist # #def_key "C" # crop_main_playlist # #def_key "m" # move_sort_order_up # #def_key "m" # move_selected_items_up # #def_key "m" # toggle_media_library_sort_mode # #def_key "n" # move_sort_order_down # #def_key "n" # 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 "L" # toggle_lyrics_fetcher # #def_key "F" # toggle_fetching_lyrics_in_background # #def_key "ctrl_l" # toggle_screen_lock # #def_key "`" # toggle_browser_sort_mode # #def_key "`" # toggle_library_tag_type # #def_key "`" # refetch_lyrics # #def_key "`" # refetch_artist_info # #def_key "`" # add_random_items # #def_key "ctrl_p" # set_selected_items_priority # #def_key "q" # quit # def_key "'" show_help