## ## ~/.ncmpcpp/bindings ## bindings/keys configuration file for ncmpcpp (>= 0.6) ## ## See /usr/share/doc/ncmpcpp/examples/bindings.gz for more details. ## ## Tweak ncmpcpp to be vi-like. ## ## Aaron LI ## 2016-01-08 ## ##### 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. ## }}} def_key "j" scroll_down def_key "k" scroll_up def_key "ctrl-u" page_up def_key "ctrl-d" page_down def_key "ctrl-j" move_selected_items_down def_key "ctrl-k" move_selected_items_up def_key "h" previous_column def_key "h" master_screen def_key "l" next_column def_key "l" slave_screen def_key "g" move_home def_key "G" move_end def_key "n" next_found_item def_key "N" previous_found_item def_key "I" jump_to_browser def_key "d" delete_playlist_items def_key "'" jump_to_playing_song def_key "space" pause def_key "," previous def_key "." next def_key ";" show_lyrics def_key "o" show_clock def_key "-" volume_down def_key "=" volume_up