7#include <unordered_map>
58 const std::unordered_map<std::string_view, char> special_keys = {
74 auto reportError = [](
const std::string& field,
const std::string_view& key)
76 std::cerr <<
"** Error: ⚠ Unsupported or empty keybind '" << key <<
"' detected for field '"
77 << field <<
"'. Modify or remove that keybind field. **" << std::endl;
78 std::exit(EXIT_FAILURE);
92 auto handle_special_keys = [&](
const std::string_view& key,
const std::string& field) ->
char
96 reportError(field, key);
98 if (special_keys.find(key) != special_keys.end())
100 return special_keys.at(key);
106 reportError(field, key);
111 const std::unordered_map<std::string, char*> field_map = {
120 {
"vol_up", &keybinds.
vol_up},
143 std::cout <<
"[KEYBINDS] Parsing keybinds..." << std::endl;
147 for (
const auto& [field, member_ptr] : field_map)
153 std::cout <<
"[KEYBINDS] Parsing keybind for " << field <<
": " << key << std::endl;
156 *member_ptr = handle_special_keys(key, field);
160 std::cout <<
"[KEYBINDS] Mapped keybind for " << field
161 <<
" to ASCII value: " <<
static_cast<int>(*member_ptr) << std::endl;
167 std::cout <<
"[KEYBINDS] Keybind parsing complete! Moving on..." << std::endl;
auto parseKeybinds() -> Keybinds
Parses the keybinds from the TOML configuration.
Definition keymaps.hpp:53
Struct to hold keybinding mappings.
Definition keymaps.hpp:15
char goto_main_screen
Definition keymaps.hpp:31
char toggle_audio_devices
Definition keymaps.hpp:39
char show_help
Definition keymaps.hpp:19
char search_item_next
Definition keymaps.hpp:41
char add_artists_songs_to_queue
Definition keymaps.hpp:34
char scroll_up
Definition keymaps.hpp:16
char seek_ahead_5
Definition keymaps.hpp:28
char toggle_mute
Definition keymaps.hpp:26
char search_menu
Definition keymaps.hpp:40
char replay_song
Definition keymaps.hpp:32
char vol_down
Definition keymaps.hpp:25
char view_song_queue
Definition keymaps.hpp:37
char view_lyrics
Definition keymaps.hpp:30
char play_song_prev
Definition keymaps.hpp:23
char search_item_prev
Definition keymaps.hpp:42
char seek_behind_5
Definition keymaps.hpp:29
char scroll_down
Definition keymaps.hpp:17
char play_song_next
Definition keymaps.hpp:22
char toggle_play
Definition keymaps.hpp:20
char remove_song_from_queue
Definition keymaps.hpp:35
char play_this_song_next
Definition keymaps.hpp:36
char toggle_focus
Definition keymaps.hpp:18
char vol_up
Definition keymaps.hpp:24
char add_song_to_queue
Definition keymaps.hpp:33
char quit_app
Definition keymaps.hpp:27
char view_current_song_info
Definition keymaps.hpp:38
char play_song
Definition keymaps.hpp:21
#define PARENT_DBG
Definition toml_parser.hpp:25
#define PARENT_DBG_FIELD_KEYBINDS_PARSER_LOG
Definition toml_parser.hpp:29
#define PARENT_KEYBINDS
Definition toml_parser.hpp:32
auto parseTOMLFieldBool(const string &parent, const string &field) -> bool
Definition toml_parser.hpp:202
auto parseTOMLField(string parent, string field) -> string_view
Parses a string field from the TOML configuration.
Definition toml_parser.hpp:144