Rockbox open source high quality audio player as a Music Player Daemon
mpris rockbox mpd libadwaita audio rust zig deno
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

echoplayer: initial Echo R1 keymap

Change-Id: Id720378a55425070ef69ca002c2e954cc1e147cf

+153 -1
+153 -1
apps/keymaps/keymap-echor1.c
··· 7 7 * \/ \/ \/ \/ \/ 8 8 * $Id$ 9 9 * 10 - * Copyright (C) 2025 Aidan MacDonald 10 + * Copyright (C) 2026 Aidan MacDonald 11 11 * 12 12 * This program is free software; you can redistribute it and/or 13 13 * modify it under the terms of the GNU General Public License ··· 29 29 /* {Action Code, Button code, Prereq button code } */ 30 30 31 31 static const struct button_mapping button_context_standard[] = { 32 + {ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE}, 33 + {ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE}, 34 + {ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE}, 35 + {ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE}, 36 + {ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE}, 37 + {ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE}, 38 + {ACTION_STD_CONTEXT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE}, 39 + {ACTION_STD_QUICKSCREEN, BUTTON_B, BUTTON_NONE}, 40 + {ACTION_STD_MENU, BUTTON_Y, BUTTON_NONE}, 32 41 LAST_ITEM_IN_LIST 33 42 }; /* button_context_standard */ 34 43 44 + static const struct button_mapping button_context_wps[] = { 45 + {ACTION_WPS_PLAY, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN}, 46 + {ACTION_WPS_STOP, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE}, 47 + {ACTION_WPS_VIEW_PLAYLIST, BUTTON_UP|BUTTON_REL, BUTTON_UP}, 48 + {ACTION_WPS_CONTEXT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE}, 49 + {ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE}, 50 + {ACTION_WPS_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE}, 51 + {ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE}, 52 + {ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE}, 53 + {ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT}, 54 + {ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT}, 55 + {ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE}, 56 + {ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT}, 57 + {ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE}, 58 + {ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT}, 59 + {ACTION_WPS_QUICKSCREEN, BUTTON_B, BUTTON_NONE}, 60 + LAST_ITEM_IN_LIST 61 + }; /* button_context_wps */ 62 + 63 + static const struct button_mapping button_context_tree[] = { 64 + {ACTION_TREE_WPS, BUTTON_X, BUTTON_NONE}, 65 + {ACTION_TREE_HOTKEY, BUTTON_Y, BUTTON_NONE}, 66 + {ACTION_TREE_STOP, BUTTON_START|BUTTON_REPEAT, BUTTON_START}, 67 + LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) 68 + }; /* button_context_tree */ 69 + 70 + static const struct button_mapping button_context_list[] = { 71 + {ACTION_LISTTREE_PGUP, BUTTON_UP|BUTTON_SELECT, BUTTON_NONE}, 72 + {ACTION_LISTTREE_PGUP, BUTTON_UP|BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE}, 73 + {ACTION_LISTTREE_PGDOWN, BUTTON_DOWN|BUTTON_SELECT, BUTTON_NONE}, 74 + {ACTION_LISTTREE_PGDOWN, BUTTON_DOWN|BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE}, 75 + {ACTION_LIST_VOLUP, BUTTON_VOL_UP, BUTTON_NONE}, 76 + {ACTION_LIST_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE}, 77 + {ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE}, 78 + {ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE}, 79 + LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) 80 + }; /* button_context_list */ 81 + 82 + static const struct button_mapping button_context_settings[] = { 83 + {ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE}, 84 + {ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE}, 85 + {ACTION_SETTINGS_INCBIGSTEP, BUTTON_VOL_UP, BUTTON_NONE}, 86 + {ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE}, 87 + {ACTION_SETTINGS_DECREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE}, 88 + {ACTION_SETTINGS_DECBIGSTEP, BUTTON_VOL_DOWN, BUTTON_NONE}, 89 + {ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE}, 90 + {ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE}, 91 + {ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE}, 92 + {ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE}, 93 + {ACTION_STD_OK, BUTTON_A, BUTTON_NONE}, 94 + {ACTION_STD_CANCEL, BUTTON_X, BUTTON_NONE}, 95 + LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) 96 + }; /* button_context_settings */ 97 + 98 + static const struct button_mapping button_context_settings_eq[] = { 99 + {ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE}, 100 + {ACTION_SETTINGS_INCREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE}, 101 + {ACTION_SETTINGS_INCBIGSTEP, BUTTON_VOL_UP, BUTTON_NONE}, 102 + {ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE}, 103 + {ACTION_SETTINGS_DECREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE}, 104 + {ACTION_SETTINGS_DECBIGSTEP, BUTTON_VOL_DOWN, BUTTON_NONE}, 105 + {ACTION_STD_OK, BUTTON_A, BUTTON_NONE}, 106 + {ACTION_STD_CANCEL, BUTTON_X, BUTTON_NONE}, 107 + LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) 108 + }; /* button_context_settings_eq */ 109 + 110 + static const struct button_mapping button_context_quickscreen[] = { 111 + {ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE}, 112 + {ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE}, 113 + {ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE}, 114 + {ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE}, 115 + {ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE}, 116 + {ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE}, 117 + {ACTION_QS_RIGHT, BUTTON_RIGHT, BUTTON_NONE}, 118 + {ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE}, 119 + {ACTION_QS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE}, 120 + {ACTION_QS_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE}, 121 + {ACTION_QS_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE}, 122 + {ACTION_QS_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE}, 123 + {ACTION_STD_CONTEXT, BUTTON_B|BUTTON_REPEAT, BUTTON_B}, 124 + {ACTION_STD_CANCEL, BUTTON_B|BUTTON_REL, BUTTON_B}, 125 + LAST_ITEM_IN_LIST 126 + }; /* button_context_quickscreen */ 127 + 128 + static const struct button_mapping button_context_yesnoscreen[] = { 129 + {ACTION_YESNO_ACCEPT, BUTTON_A, BUTTON_NONE}, 130 + {ACTION_YESNO_ACCEPT, BUTTON_X, BUTTON_NONE}, 131 + {ACTION_STD_CANCEL, BUTTON_B, BUTTON_NONE}, 132 + {ACTION_STD_CANCEL, BUTTON_Y, BUTTON_NONE}, 133 + {ACTION_STD_CANCEL, BUTTON_START, BUTTON_NONE}, 134 + {ACTION_STD_CANCEL, BUTTON_SELECT, BUTTON_NONE}, 135 + {ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE}, 136 + {ACTION_STD_CANCEL, BUTTON_VOL_UP, BUTTON_NONE}, 137 + {ACTION_STD_CANCEL, BUTTON_VOL_DOWN, BUTTON_NONE}, 138 + LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) 139 + }; /* button_context_yesnoscreen */ 140 + 141 + static const struct button_mapping button_context_keyboard[] = { 142 + {ACTION_KBD_UP, BUTTON_UP, BUTTON_NONE}, 143 + {ACTION_KBD_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE}, 144 + {ACTION_KBD_DOWN, BUTTON_DOWN, BUTTON_NONE}, 145 + {ACTION_KBD_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE}, 146 + {ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE}, 147 + {ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE}, 148 + {ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE}, 149 + {ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE}, 150 + {ACTION_KBD_SELECT, BUTTON_SELECT, BUTTON_NONE}, 151 + {ACTION_KBD_BACKSPACE, BUTTON_X, BUTTON_NONE}, 152 + {ACTION_KBD_BACKSPACE, BUTTON_X|BUTTON_REPEAT, BUTTON_NONE}, 153 + {ACTION_KBD_DONE, BUTTON_A, BUTTON_NONE}, 154 + {ACTION_KBD_ABORT, BUTTON_POWER, BUTTON_NONE}, 155 + {ACTION_KBD_PAGE_FLIP, BUTTON_START, BUTTON_NONE}, 156 + {ACTION_KBD_CURSOR_LEFT, BUTTON_Y, BUTTON_NONE}, 157 + {ACTION_KBD_CURSOR_LEFT, BUTTON_Y|BUTTON_REPEAT, BUTTON_NONE}, 158 + {ACTION_KBD_CURSOR_RIGHT, BUTTON_B, BUTTON_NONE}, 159 + {ACTION_KBD_CURSOR_RIGHT, BUTTON_B|BUTTON_REPEAT, BUTTON_NONE}, 160 + {ACTION_KBD_CURSOR_LEFT, BUTTON_VOL_UP, BUTTON_NONE}, 161 + {ACTION_KBD_CURSOR_LEFT, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE}, 162 + {ACTION_KBD_CURSOR_RIGHT, BUTTON_VOL_DOWN, BUTTON_NONE}, 163 + {ACTION_KBD_CURSOR_RIGHT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE}, 164 + LAST_ITEM_IN_LIST 165 + }; /* button_context_keyboard */ 166 + 35 167 const struct button_mapping* get_context_mapping(int context) 36 168 { 37 169 switch (context) 38 170 { 39 171 default: 172 + case CONTEXT_STD: 40 173 return button_context_standard; 174 + case CONTEXT_WPS: 175 + return button_context_wps; 176 + case CONTEXT_TREE: 177 + case CONTEXT_MAINMENU: 178 + return button_context_tree; 179 + case CONTEXT_LIST: 180 + return button_context_list; 181 + case CONTEXT_SETTINGS: 182 + case CONTEXT_SETTINGS_TIME: 183 + return button_context_settings; 184 + case CONTEXT_SETTINGS_EQ: 185 + case CONTEXT_SETTINGS_COLOURCHOOSER: 186 + return button_context_settings_eq; 187 + case CONTEXT_QUICKSCREEN: 188 + return button_context_quickscreen; 189 + case CONTEXT_YESNOSCREEN: 190 + return button_context_yesnoscreen; 191 + case CONTEXT_KEYBOARD: 192 + return button_context_keyboard; 41 193 } 42 194 }