|
@@ -0,0 +1,217 @@
|
|
|
|
+From da27fcc39e187671b5e4373848f701a3d910446c Mon Sep 17 00:00:00 2001
|
|
|
|
+From: Max Kellermann <max@musicpd.org>
|
|
|
|
+Date: Wed, 26 Sep 2018 09:51:09 +0200
|
|
|
|
+Subject: [PATCH] {Global,}Bindings: add KeyBindings constructor to simplify
|
|
|
|
+ initializers
|
|
|
|
+
|
|
|
|
+As a side effect, this works around a build failure with GCC 4.9.
|
|
|
|
+
|
|
|
|
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
|
|
|
+[Retrieved from
|
|
|
|
+https://github.com/MusicPlayerDaemon/ncmpc/commit/da27fcc39e187671b5e4373848f701a3d910446c
|
|
|
|
+and updated for 0.31 (remove NEWS update)]
|
|
|
|
+---
|
|
|
|
+ src/Bindings.hxx | 3 +
|
|
|
|
+ src/GlobalBindings.cxx | 142 ++++++++++++++++++++---------------------
|
|
|
|
+ 3 files changed, 75 insertions(+), 71 deletions(-)
|
|
|
|
+
|
|
|
|
+diff --git a/src/Bindings.hxx b/src/Bindings.hxx
|
|
|
|
+index 342d951..0c630dc 100644
|
|
|
|
+--- a/src/Bindings.hxx
|
|
|
|
++++ b/src/Bindings.hxx
|
|
|
|
+@@ -42,6 +42,9 @@ struct KeyBinding {
|
|
|
|
+ bool modified = false;
|
|
|
|
+ #endif
|
|
|
|
+
|
|
|
|
++ constexpr KeyBinding(int a, int b=0, int c=0) noexcept
|
|
|
|
++ :keys{{a, b, c}} {}
|
|
|
|
++
|
|
|
|
+ gcc_pure
|
|
|
|
+ bool HasKey(int key) const {
|
|
|
|
+ return std::find(keys.begin(), keys.end(), key) != keys.end();
|
|
|
|
+diff --git a/src/GlobalBindings.cxx b/src/GlobalBindings.cxx
|
|
|
|
+index b565848..8049ed2 100644
|
|
|
|
+--- a/src/GlobalBindings.cxx
|
|
|
|
++++ b/src/GlobalBindings.cxx
|
|
|
|
+@@ -51,110 +51,110 @@
|
|
|
|
+
|
|
|
|
+ static KeyBindings global_key_bindings{{{
|
|
|
|
+ #ifdef ENABLE_KEYDEF_SCREEN
|
|
|
|
+- { {'K', 0, 0 } },
|
|
|
|
++ {'K'},
|
|
|
|
+ #endif
|
|
|
|
+- { { 'q', 'Q', C('C') } },
|
|
|
|
++ {'q', 'Q', C('C')},
|
|
|
|
+
|
|
|
|
+ /* movement */
|
|
|
|
+- { { UP, 'k', 0 } },
|
|
|
|
+- { { DWN, 'j', 0 } },
|
|
|
|
+- { { 'H', 0, 0 } },
|
|
|
|
+- { { 'M', 0, 0 } },
|
|
|
|
+- { { 'L', 0, 0 } },
|
|
|
|
+- { { HOME, C('A'), 0 } },
|
|
|
|
+- { { END, C('E'), 0 } },
|
|
|
|
+- { { PGUP, 0, 0 } },
|
|
|
|
+- { { PGDN, 0, 0 } },
|
|
|
|
+- { { 'v', 0, 0 } },
|
|
|
|
+- { { C('N'), 0, 0 } },
|
|
|
|
+- { { C('B'), 0, 0 } },
|
|
|
|
+- { { 'N', 0, 0 } },
|
|
|
|
+- { { 'B', 0, 0 } },
|
|
|
|
+- { { 'l', 0, 0 } },
|
|
|
|
++ {UP, 'k'},
|
|
|
|
++ {DWN, 'j'},
|
|
|
|
++ {'H'},
|
|
|
|
++ {'M'},
|
|
|
|
++ {'L'},
|
|
|
|
++ {HOME, C('A')},
|
|
|
|
++ {END, C('E')},
|
|
|
|
++ {PGUP},
|
|
|
|
++ {PGDN},
|
|
|
|
++ {'v', 0},
|
|
|
|
++ {C('N'), 0},
|
|
|
|
++ {C('B'), 0},
|
|
|
|
++ {'N', 0},
|
|
|
|
++ {'B', 0},
|
|
|
|
++ {'l'},
|
|
|
|
+
|
|
|
|
+ /* basic screens */
|
|
|
|
+- { { '1', F1, 'h' } },
|
|
|
|
+- { { '2', F2, 0 } },
|
|
|
|
+- { { '3', F3, 0 } },
|
|
|
|
++ {'1', F1, 'h'},
|
|
|
|
++ {'2', F2},
|
|
|
|
++ {'3', F3},
|
|
|
|
+
|
|
|
|
+ /* player commands */
|
|
|
|
+- { { RET, 0, 0 } },
|
|
|
|
+- { { 'P', 0, 0 } },
|
|
|
|
+- { { 's', BS, 0 } },
|
|
|
|
+- { { 'o', 0, 0 } },
|
|
|
|
+- { { '>', 0, 0 } },
|
|
|
|
+- { { '<', 0, 0 } },
|
|
|
|
+- { { 'f', 0, 0 } },
|
|
|
|
+- { { 'b', 0, 0 } },
|
|
|
|
+- { { '+', RGHT, 0 } },
|
|
|
|
+- { { '-', LEFT, 0 } },
|
|
|
|
+- { { ' ', 0, 0 } },
|
|
|
|
+- { { 't', 0, 0 } },
|
|
|
|
+- { { DEL, 'd', 0 } },
|
|
|
|
+- { { 'Z', 0, 0 } },
|
|
|
|
+- { { 'c', 0, 0 } },
|
|
|
|
+- { { 'r', 0, 0 } },
|
|
|
|
+- { { 'z', 0, 0 } },
|
|
|
|
+- { { 'y', 0, 0 } },
|
|
|
|
+- { { 'C', 0, 0 } },
|
|
|
|
+- { { 'x', 0, 0 } },
|
|
|
|
+- { { C('U'), 0, 0 } },
|
|
|
|
+- { { 'S', 0, 0 } },
|
|
|
|
+- { { 'a', 0, 0 } },
|
|
|
|
+-
|
|
|
|
+- { { '!', 0, 0 } },
|
|
|
|
+- { { '"', 0, 0 } },
|
|
|
|
+-
|
|
|
|
+- { { 'G', 0, 0 } },
|
|
|
|
++ {RET},
|
|
|
|
++ {'P'},
|
|
|
|
++ {'s', BS},
|
|
|
|
++ {'o'},
|
|
|
|
++ {'>'},
|
|
|
|
++ {'<'},
|
|
|
|
++ {'f'},
|
|
|
|
++ {'b'},
|
|
|
|
++ {'+', RGHT},
|
|
|
|
++ {'-', LEFT},
|
|
|
|
++ {' '},
|
|
|
|
++ {'t'},
|
|
|
|
++ {DEL, 'd'},
|
|
|
|
++ {'Z'},
|
|
|
|
++ {'c'},
|
|
|
|
++ {'r'},
|
|
|
|
++ {'z'},
|
|
|
|
++ {'y'},
|
|
|
|
++ {'C'},
|
|
|
|
++ {'x'},
|
|
|
|
++ {C('U')},
|
|
|
|
++ {'S'},
|
|
|
|
++ {'a'},
|
|
|
|
++
|
|
|
|
++ {'!'},
|
|
|
|
++ {'"'},
|
|
|
|
++
|
|
|
|
++ {'G'},
|
|
|
|
+
|
|
|
|
+ /* lists */
|
|
|
|
+- { { C('K'), 0, 0 } },
|
|
|
|
+- { { C('J'), 0, 0 } },
|
|
|
|
+- { { C('L'), 0, 0 } },
|
|
|
|
++ {C('K')},
|
|
|
|
++ {C('J')},
|
|
|
|
++ {C('L')},
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /* ncmpc options */
|
|
|
|
+- { { 'w', 0, 0 } },
|
|
|
|
+- { { 'U', 0, 0 } },
|
|
|
|
++ {'w'},
|
|
|
|
++ {'U'},
|
|
|
|
+
|
|
|
|
+ /* change screen */
|
|
|
|
+- { { TAB, 0, 0 } },
|
|
|
|
+- { { STAB, 0, 0 } },
|
|
|
|
+- { { '`', 0, 0 } },
|
|
|
|
++ {TAB},
|
|
|
|
++ {STAB},
|
|
|
|
++ {'`'},
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /* find */
|
|
|
|
+- { { '/', 0, 0 } },
|
|
|
|
+- { { 'n', 0, 0 } },
|
|
|
|
+- { { '?', 0, 0 } },
|
|
|
|
+- { { 'p', 0, 0 } },
|
|
|
|
+- { { '.', 0, 0 } },
|
|
|
|
++ {'/'},
|
|
|
|
++ {'n'},
|
|
|
|
++ {'?'},
|
|
|
|
++ {'p'},
|
|
|
|
++ {'.'},
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /* extra screens */
|
|
|
|
+ #ifdef ENABLE_ARTIST_SCREEN
|
|
|
|
+- { {'4', F4, 0 } },
|
|
|
|
++ {'4', F4},
|
|
|
|
+ #endif
|
|
|
|
+ #ifdef ENABLE_SEARCH_SCREEN
|
|
|
|
+- { {'5', F5, 0 } },
|
|
|
|
+- { {'m', 0, 0 } },
|
|
|
|
++ {'5', F5},
|
|
|
|
++ {'m'},
|
|
|
|
+ #endif
|
|
|
|
+ #ifdef ENABLE_SONG_SCREEN
|
|
|
|
+- { { 'i', 0, 0 } },
|
|
|
|
++ {'i'},
|
|
|
|
+ #endif
|
|
|
|
+ #ifdef ENABLE_LYRICS_SCREEN
|
|
|
|
+- { {'7', F7, 0 } },
|
|
|
|
+- { {ESC, 0, 0 } },
|
|
|
|
+- { {'u', 0, 0 } },
|
|
|
|
+- { {'e', 0, 0 } },
|
|
|
|
++ {'7', F7},
|
|
|
|
++ {ESC},
|
|
|
|
++ {'u'},
|
|
|
|
++ {'e'},
|
|
|
|
+ #endif
|
|
|
|
+
|
|
|
|
+ #ifdef ENABLE_OUTPUTS_SCREEN
|
|
|
|
+- { {'8', F8, 0 } },
|
|
|
|
++ {'8', F8},
|
|
|
|
+ #endif
|
|
|
|
+
|
|
|
|
+ #ifdef ENABLE_CHAT_SCREEN
|
|
|
|
+- { {'9', F9, 0} },
|
|
|
|
++ {'9', F9},
|
|
|
|
+ #endif
|
|
|
|
+ }}};
|
|
|
|
+
|