blob: 217fa9b55b8003403b890fe4e223e05a6efceaab [file] [log] [blame]
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
}}};