| 1 | ########################################################## |
| 2 | ## this is example bindings configuration file, copy it ## |
| 3 | ## to ~/.ncmpcpp/bindings and set up your preferences ## |
| 4 | ########################################################## |
| 5 | ## |
| 6 | ##### General rules ##### |
| 7 | ## |
| 8 | ## 1) Because each action has runtime checks whether it's |
| 9 | ## ok to run it, a few actions can be bound to one key. |
| 10 | ## Actions will be bound in order given in configuration |
| 11 | ## file. When a key is pressed, first action in order |
| 12 | ## will test itself whether it's possible to run it. If |
| 13 | ## test succeeds, action is executed and other actions |
| 14 | ## bound to this key are ignored. If it doesn't, next |
| 15 | ## action in order tests itself etc. |
| 16 | ## |
| 17 | ## 2) It's possible to bind more that one action at once |
| 18 | ## to a key. It can be done using the following syntax: |
| 19 | ## |
| 20 | ## def_key "key" |
| 21 | ## action1 |
| 22 | ## action2 |
| 23 | ## ... |
| 24 | ## |
| 25 | ## This creates a chain of actions. When such chain is |
| 26 | ## executed, each action in chain is run until the end of |
| 27 | ## chain is reached or one of its actions fails to execute |
| 28 | ## due to its requirements not being met. If multiple actions |
| 29 | ## and/or chains are bound to the same key, they will be |
| 30 | ## consecutively run until one of them gets fully executed. |
| 31 | ## |
| 32 | ## 3) When ncmpcpp starts, bindings configuration file is |
| 33 | ## parsed and then ncmpcpp provides "missing pieces" |
| 34 | ## of default keybindings. If you want to disable some |
| 35 | ## bindings, there is a special action called 'dummy' |
| 36 | ## for that purpose. Eg. if you want to disable ability |
| 37 | ## to crop playlists, you need to put the following |
| 38 | ## into configuration file: |
| 39 | ## |
| 40 | ## def_key "C" |
| 41 | ## dummy |
| 42 | ## |
| 43 | ## After that ncmpcpp will not bind any default action |
| 44 | ## to this key. |
| 45 | ## |
| 46 | ## 4) To let you write simple macros, the following special |
| 47 | ## actions are provided: |
| 48 | ## |
| 49 | ## - push_character "character" - pushes given special |
| 50 | ## character into input queue, so it will be immediately |
| 51 | ## picked by ncmpcpp upon next call to readKey function. |
| 52 | ## Accepted values: mouse, up, down, page_up, page_down, |
| 53 | ## home, end, space, enter, insert, delete, left, right, |
| 54 | ## tab, shift_tab, ctrl_a, ctrl_b, ..., ctrl_z, f1, f2, |
| 55 | ## ..., f12, backspace, backspace_2. |
| 56 | ## |
| 57 | ## - push_characters "string" - pushes given string into |
| 58 | ## input queue. |
| 59 | ## |
| 60 | ## - require_runnable "action" - checks whether given action |
| 61 | ## is runnable and fails if it isn't. This is especially |
| 62 | ## useful when mixed with previous two functions. Consider |
| 63 | ## the following macro definition: |
| 64 | ## |
| 65 | ## def_key "key" |
| 66 | ## push_characters "custom_filter" |
| 67 | ## apply_filter |
| 68 | ## |
| 69 | ## If apply_filter can't be currently run, we end up with |
| 70 | ## sequence of characters in input queue which will be |
| 71 | ## treated just as we typed them. This may lead to unexpected |
| 72 | ## results (in this case 'c' will most likely clear current |
| 73 | ## playlist, 'u' will trigger database update, 's' will stop |
| 74 | ## playback etc.). To prevent such thing from happening, we |
| 75 | ## need to change above definition to this one: |
| 76 | ## |
| 77 | ## def_key "key" |
| 78 | ## require_runnable "apply_filter" |
| 79 | ## push_characters "custom_filter" |
| 80 | ## apply_filter |
| 81 | ## |
| 82 | ## Here, first we test whether apply_filter can be actually run |
| 83 | ## before we stuff characters into input queue, so if condition |
| 84 | ## is not met, whole chain is aborted and we're fine. |
| 85 | ## |
| 86 | ## - require_screen "screen" - checks whether given screen is |
| 87 | ## currently active. accepted values: browser, clock, help, |
| 88 | ## media_library, outputs, playlist, playlist_editor, |
| 89 | ## search_engine, tag_editor, visualizer, last_fm, lyrics, |
| 90 | ## selected_items_adder, server_info, song_info, |
| 91 | ## sort_playlist_dialog, tiny_tag_editor. |
| 92 | ## |
| 93 | ## - run_external_command "command" - runs given command using |
| 94 | ## system() function. |
| 95 | ## |
| 96 | ## 5) In addition to binding to a key, you can also bind actions |
| 97 | ## or chains of actions to a command. If it comes to commands, |
| 98 | ## syntax is very similar to defining keys. Here goes example |
| 99 | ## definition of a command: |
| 100 | ## |
| 101 | ## def_command "quit" [deferred] |
| 102 | ## stop |
| 103 | ## quit |
| 104 | ## |
| 105 | ## If you execute the above command (which can be done by |
| 106 | ## invoking action execute_command, typing 'quit' and pressing |
| 107 | ## enter), ncmpcpp will stop the player and then quit. Note the |
| 108 | ## presence of word 'deferred' enclosed in square brackets. It |
| 109 | ## tells ncmpcpp to wait for confirmation (ie. pressing enter) |
| 110 | ## after you typed quit. Instead of 'deferred', 'immediate' |
| 111 | ## could be used. Then ncmpcpp will not wait for confirmation |
| 112 | ## (enter) and will execute the command the moment it sees it. |
| 113 | ## |
| 114 | ## Note: Both 'backspace' and 'backspace_2' are used because some |
| 115 | ## terminals interpret backspace using keycode of 'backspace' |
| 116 | ## and some the one of 'backspace_2'. You can get away with |
| 117 | ## binding once if all your terminal emulators use the same |
| 118 | ## value. |
| 119 | ## |
| 120 | ## Note: There is a difference between: |
| 121 | ## |
| 122 | ## def_key "key" |
| 123 | ## action1 |
| 124 | ## |
| 125 | ## def_key "key" |
| 126 | ## action2 |
| 127 | ## |
| 128 | ## and |
| 129 | ## |
| 130 | ## def_key "key" |
| 131 | ## action1 |
| 132 | ## action2 |
| 133 | ## |
| 134 | ## First one binds two single actions to the same key whilst |
| 135 | ## second one defines a chain of actions. The behavior of |
| 136 | ## these two is different and is described in (1) and (2). |
| 137 | ## |
| 138 | ## Note: Function def_key accepts non-ascii characters. |
| 139 | ## |
| 140 | ##### List of unbound actions ##### |
| 141 | ## |
| 142 | ## The following actions are not bound to any key/command: |
| 143 | ## |
| 144 | ## - set_volume |
| 145 | ## - filter_playlist_on_priorities |
| 146 | ## |
| 147 | # |
| 148 | #def_key "mouse" |
| 149 | # mouse_event |
| 150 | # |
| 151 | def_key "k" |
| 152 | scroll_up |
| 153 | # |
| 154 | def_key "j" |
| 155 | scroll_down |
| 156 | # |
| 157 | #def_key "[" |
| 158 | # scroll_up_album |
| 159 | # |
| 160 | #def_key "]" |
| 161 | # scroll_down_album |
| 162 | # |
| 163 | #def_key "{" |
| 164 | # scroll_up_artist |
| 165 | # |
| 166 | #def_key "}" |
| 167 | # scroll_down_artist |
| 168 | # |
| 169 | #def_key "page_up" |
| 170 | # page_up |
| 171 | # |
| 172 | #def_key "page_down" |
| 173 | # page_down |
| 174 | # |
| 175 | def_key "g" |
| 176 | move_home |
| 177 | # |
| 178 | def_key "G" |
| 179 | move_end |
| 180 | # |
| 181 | #def_key "space" |
| 182 | # press_space |
| 183 | # |
| 184 | #def_key "enter" |
| 185 | # press_enter |
| 186 | # |
| 187 | #def_key "delete" |
| 188 | # delete_playlist_items |
| 189 | # |
| 190 | #def_key "delete" |
| 191 | # delete_stored_playlist |
| 192 | # |
| 193 | #def_key "right" |
| 194 | # next_column |
| 195 | # |
| 196 | #def_key "right" |
| 197 | # slave_screen |
| 198 | # |
| 199 | #def_key "right" |
| 200 | # volume_up |
| 201 | # |
| 202 | #def_key "+" |
| 203 | # volume_up |
| 204 | # |
| 205 | #def_key "left" |
| 206 | # previous_column |
| 207 | # |
| 208 | #def_key "left" |
| 209 | # master_screen |
| 210 | # |
| 211 | #def_key "left" |
| 212 | # volume_down |
| 213 | # |
| 214 | #def_key "-" |
| 215 | # volume_down |
| 216 | # |
| 217 | def_key ";" |
| 218 | execute_command |
| 219 | # |
| 220 | #def_key "tab" |
| 221 | # next_screen |
| 222 | # |
| 223 | #def_key "shift_tab" |
| 224 | # previous_screen |
| 225 | # |
| 226 | #def_key "f1" |
| 227 | # show_help |
| 228 | # |
| 229 | #def_key "1" |
| 230 | # show_playlist |
| 231 | # |
| 232 | #def_key "2" |
| 233 | # show_browser |
| 234 | # |
| 235 | #def_key "2" |
| 236 | # change_browse_mode |
| 237 | # |
| 238 | #def_key "3" |
| 239 | # show_search_engine |
| 240 | # |
| 241 | #def_key "3" |
| 242 | # reset_search_engine |
| 243 | # |
| 244 | #def_key "4" |
| 245 | # show_media_library |
| 246 | # |
| 247 | #def_key "4" |
| 248 | # toggle_media_library_columns_mode |
| 249 | # |
| 250 | #def_key "5" |
| 251 | # show_playlist_editor |
| 252 | # |
| 253 | #def_key "6" |
| 254 | # show_tag_editor |
| 255 | # |
| 256 | #def_key "7" |
| 257 | # show_outputs |
| 258 | # |
| 259 | #def_key "8" |
| 260 | # show_visualizer |
| 261 | # |
| 262 | #def_key "=" |
| 263 | # show_clock |
| 264 | # |
| 265 | #def_key "@" |
| 266 | # show_server_info |
| 267 | # |
| 268 | #def_key "s" |
| 269 | # stop |
| 270 | # |
| 271 | #def_key "p" |
| 272 | # pause |
| 273 | # |
| 274 | #def_key ">" |
| 275 | # next |
| 276 | # |
| 277 | #def_key "<" |
| 278 | # previous |
| 279 | # |
| 280 | #def_key "ctrl_h" |
| 281 | # jump_to_parent_directory |
| 282 | # |
| 283 | #def_key "ctrl_h" |
| 284 | # replay_song |
| 285 | # |
| 286 | #def_key "backspace" |
| 287 | # jump_to_parent_directory |
| 288 | # |
| 289 | #def_key "backspace" |
| 290 | # replay_song |
| 291 | # |
| 292 | #def_key "backspace_2" |
| 293 | # jump_to_parent_directory |
| 294 | # |
| 295 | #def_key "backspace_2" |
| 296 | # replay_song |
| 297 | # |
| 298 | #def_key "f" |
| 299 | # seek_forward |
| 300 | # |
| 301 | #def_key "b" |
| 302 | # seek_backward |
| 303 | # |
| 304 | #def_key "r" |
| 305 | # toggle_repeat |
| 306 | # |
| 307 | #def_key "z" |
| 308 | # toggle_random |
| 309 | # |
| 310 | #def_key "y" |
| 311 | # save_tag_changes |
| 312 | # |
| 313 | #def_key "y" |
| 314 | # start_searching |
| 315 | # |
| 316 | #def_key "y" |
| 317 | # toggle_single |
| 318 | # |
| 319 | #def_key "R" |
| 320 | # toggle_consume |
| 321 | # |
| 322 | #def_key "Y" |
| 323 | # toggle_replay_gain_mode |
| 324 | # |
| 325 | #def_key "t" |
| 326 | # toggle_space_mode |
| 327 | # |
| 328 | #def_key "T" |
| 329 | # toggle_add_mode |
| 330 | # |
| 331 | #def_key "|" |
| 332 | # toggle_mouse |
| 333 | # |
| 334 | #def_key "#" |
| 335 | # toggle_bitrate_visibility |
| 336 | # |
| 337 | #def_key "Z" |
| 338 | # shuffle |
| 339 | # |
| 340 | #def_key "x" |
| 341 | # toggle_crossfade |
| 342 | # |
| 343 | #def_key "X" |
| 344 | # set_crossfade |
| 345 | # |
| 346 | #def_key "u" |
| 347 | # update_database |
| 348 | # |
| 349 | #def_key "ctrl_v" |
| 350 | # sort_playlist |
| 351 | # |
| 352 | #def_key "ctrl_r" |
| 353 | # reverse_playlist |
| 354 | # |
| 355 | #def_key "ctrl_f" |
| 356 | # apply_filter |
| 357 | # |
| 358 | #def_key "/" |
| 359 | # find |
| 360 | # |
| 361 | #def_key "/" |
| 362 | # find_item_forward |
| 363 | # |
| 364 | #def_key "?" |
| 365 | # find |
| 366 | # |
| 367 | #def_key "?" |
| 368 | # find_item_backward |
| 369 | # |
| 370 | #def_key "." |
| 371 | # next_found_item |
| 372 | # |
| 373 | #def_key "," |
| 374 | # previous_found_item |
| 375 | # |
| 376 | #def_key "w" |
| 377 | # toggle_find_mode |
| 378 | # |
| 379 | #def_key "e" |
| 380 | # edit_song |
| 381 | # |
| 382 | #def_key "e" |
| 383 | # edit_library_tag |
| 384 | # |
| 385 | #def_key "e" |
| 386 | # edit_library_album |
| 387 | # |
| 388 | #def_key "e" |
| 389 | # edit_directory_name |
| 390 | # |
| 391 | #def_key "e" |
| 392 | # edit_playlist_name |
| 393 | # |
| 394 | #def_key "e" |
| 395 | # edit_lyrics |
| 396 | # |
| 397 | #def_key "i" |
| 398 | # show_song_info |
| 399 | # |
| 400 | #def_key "I" |
| 401 | # show_artist_info |
| 402 | # |
| 403 | #def_key "g" |
| 404 | # jump_to_position_in_song |
| 405 | # |
| 406 | #def_key "l" |
| 407 | # show_lyrics |
| 408 | # |
| 409 | #def_key "v" |
| 410 | # reverse_selection |
| 411 | # |
| 412 | #def_key "V" |
| 413 | # remove_selection |
| 414 | # |
| 415 | #def_key "B" |
| 416 | # select_album |
| 417 | # |
| 418 | #def_key "a" |
| 419 | # add_selected_items |
| 420 | # |
| 421 | #def_key "c" |
| 422 | # clear_playlist |
| 423 | # |
| 424 | #def_key "c" |
| 425 | # clear_main_playlist |
| 426 | # |
| 427 | #def_key "C" |
| 428 | # crop_playlist |
| 429 | # |
| 430 | #def_key "C" |
| 431 | # crop_main_playlist |
| 432 | # |
| 433 | #def_key "m" |
| 434 | # move_sort_order_up |
| 435 | # |
| 436 | #def_key "m" |
| 437 | # move_selected_items_up |
| 438 | # |
| 439 | #def_key "m" |
| 440 | # toggle_media_library_sort_mode |
| 441 | # |
| 442 | #def_key "m" |
| 443 | # set_visualizer_sample_multiplier |
| 444 | # |
| 445 | #def_key "n" |
| 446 | # move_sort_order_down |
| 447 | # |
| 448 | #def_key "n" |
| 449 | # move_selected_items_down |
| 450 | # |
| 451 | #def_key "M" |
| 452 | # move_selected_items_to |
| 453 | # |
| 454 | #def_key "A" |
| 455 | # add |
| 456 | # |
| 457 | #def_key "S" |
| 458 | # save_playlist |
| 459 | # |
| 460 | #def_key "o" |
| 461 | # jump_to_playing_song |
| 462 | # |
| 463 | #def_key "G" |
| 464 | # jump_to_browser |
| 465 | # |
| 466 | #def_key "G" |
| 467 | # jump_to_playlist_editor |
| 468 | # |
| 469 | #def_key "~" |
| 470 | # jump_to_media_library |
| 471 | # |
| 472 | #def_key "E" |
| 473 | # jump_to_tag_editor |
| 474 | # |
| 475 | #def_key "U" |
| 476 | # toggle_playing_song_centering |
| 477 | # |
| 478 | #def_key "P" |
| 479 | # toggle_display_mode |
| 480 | # |
| 481 | #def_key "\\" |
| 482 | # toggle_interface |
| 483 | # |
| 484 | #def_key "!" |
| 485 | # toggle_separators_between_albums |
| 486 | # |
| 487 | #def_key "L" |
| 488 | # toggle_lyrics_fetcher |
| 489 | # |
| 490 | #def_key "F" |
| 491 | # toggle_fetching_lyrics_in_background |
| 492 | # |
| 493 | #def_key "ctrl_l" |
| 494 | # toggle_screen_lock |
| 495 | # |
| 496 | #def_key "`" |
| 497 | # toggle_browser_sort_mode |
| 498 | # |
| 499 | #def_key "`" |
| 500 | # toggle_library_tag_type |
| 501 | # |
| 502 | #def_key "`" |
| 503 | # refetch_lyrics |
| 504 | # |
| 505 | #def_key "`" |
| 506 | # add_random_items |
| 507 | # |
| 508 | #def_key "ctrl_p" |
| 509 | # set_selected_items_priority |
| 510 | # |
| 511 | #def_key "q" |
| 512 | # quit |
| 513 | # |