A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd
at master 171 lines 6.7 kB view raw
1/*************************************************************************** 2 * __________ __ ___. 3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___ 4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / 5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 7 * \/ \/ \/ \/ \/ 8 * $Id: keymap-sdl.c 28704 2010-11-29 11:28:53Z teru $ 9 * 10 * Copyright (C) 2013 Lorenzo Miori 11 * 12 * This program is free software; you can redistribute it and/or 13 * modify it under the terms of the GNU General Public License 14 * as published by the Free Software Foundation; either version 2 15 * of the License, or (at your option) any later version. 16 * 17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 18 * KIND, either express or implied. 19 * 20 ****************************************************************************/ 21 22/* Button Code Definitions for Samsung YP-R1 target */ 23 24#include <stdio.h> 25#include <string.h> 26#include <stdlib.h> 27 28#include "config.h" 29#include "action.h" 30#include "button.h" 31#include "settings.h" 32 33/* 34 * The format of the list is as follows 35 * { Action Code, Button code, Prereq button code } 36 * if there's no need to check the previous button's value, use BUTTON_NONE 37 * Insert LAST_ITEM_IN_LIST at the end of each mapping 38 */ 39 40static const struct button_mapping button_context_standard[] = { 41 { ACTION_STD_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, 42 43 LAST_ITEM_IN_LIST 44}; /* button_context_standard */ 45 46static const struct button_mapping button_context_wps[] = { 47 48 { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE }, 49 { ACTION_WPS_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 50 { ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE }, 51 { ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 52 { ACTION_STD_KEYLOCK, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, 53 LAST_ITEM_IN_LIST 54}; /* button_context_wps */ 55 56static const struct button_mapping button_context_list[] = { 57 58#ifdef HAVE_VOLUME_IN_LIST 59 { ACTION_LIST_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 60 { ACTION_LIST_VOLUP, BUTTON_VOL_UP, BUTTON_NONE }, 61 { ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE }, 62 { ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 63#endif 64 65 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) 66}; /* button_context_list */ 67 68static const struct button_mapping button_context_tree[] = { 69 { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE }, 70 71 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) 72}; /* button_context_tree */ 73 74static const struct button_mapping button_context_settings[] = { 75 76 { ACTION_SETTINGS_INC, BUTTON_VOL_UP, BUTTON_NONE }, 77 { ACTION_SETTINGS_INCREPEAT, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 78 { ACTION_SETTINGS_DEC, BUTTON_VOL_DOWN, BUTTON_NONE }, 79 { ACTION_SETTINGS_DECREPEAT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 80 { ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE }, 81 82 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_TREE) 83}; /* button_context_settings */ 84 85static const struct button_mapping button_context_settings_right_is_inc[] = { 86 { ACTION_SETTINGS_INC, BUTTON_VOL_UP, BUTTON_NONE }, 87 { ACTION_SETTINGS_INCREPEAT,BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 88 { ACTION_NONE, BUTTON_VOL_UP|BUTTON_REL, BUTTON_VOL_UP }, 89 90 { ACTION_SETTINGS_DEC, BUTTON_VOL_DOWN, BUTTON_NONE }, 91 { ACTION_SETTINGS_DECREPEAT,BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 92 { ACTION_NONE, BUTTON_VOL_DOWN|BUTTON_REL, BUTTON_VOL_DOWN }, 93 94 { ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE }, 95 96 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD), 97}; /* button_context_settings_right_is_inc */ 98 99static const struct button_mapping button_context_yesno[] = { 100 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) 101}; /* button_context_settings_yesno */ 102#if 0 103static const struct button_mapping button_context_colorchooser[] = { 104 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS), 105}; /* button_context_colorchooser */ 106 107static const struct button_mapping button_context_eq[] = { 108 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS), 109}; /* button_context_eq */ 110#endif 111/** Bookmark Screen **/ 112static const struct button_mapping button_context_bmark[] = { 113 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST), 114}; /* button_context_bmark */ 115 116static const struct button_mapping button_context_quickscreen[] = { 117 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) 118}; /* button_context_quickscreen */ 119 120static const struct button_mapping button_context_pitchscreen[] = { 121 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) 122}; /* button_context_pitchcreen */ 123 124static const struct button_mapping button_context_keyboard[] = { 125 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) 126}; /* button_context_keyboard */ 127 128/** FM Radio Screen **/ 129static const struct button_mapping button_context_radio[] = { 130 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS) 131}; /* button_context_radio */ 132 133const struct button_mapping* target_get_context_mapping(int context) 134{ 135 switch (context & ~CONTEXT_LOCKED) 136 { 137 case CONTEXT_STD: 138 return button_context_standard; 139 case CONTEXT_WPS: 140 return button_context_wps; 141 142 case CONTEXT_LIST: 143 return button_context_list; 144 case CONTEXT_MAINMENU: 145 case CONTEXT_CUSTOM|CONTEXT_TREE: 146 return button_context_tree; 147 148 case CONTEXT_SETTINGS: 149 case CONTEXT_SETTINGS_TIME: 150 return button_context_settings; 151 case CONTEXT_CUSTOM|CONTEXT_SETTINGS: 152 case CONTEXT_SETTINGS_COLOURCHOOSER: 153 case CONTEXT_SETTINGS_EQ: 154 case CONTEXT_SETTINGS_RECTRIGGER: 155 return button_context_settings_right_is_inc; 156 157 case CONTEXT_YESNOSCREEN: 158 return button_context_yesno; 159 case CONTEXT_FM: 160 return button_context_radio; 161 case CONTEXT_BOOKMARKSCREEN: 162 return button_context_bmark; 163 case CONTEXT_QUICKSCREEN: 164 return button_context_quickscreen; 165 case CONTEXT_PITCHSCREEN: 166 return button_context_pitchscreen; 167 case CONTEXT_KEYBOARD: 168 return button_context_keyboard; 169 } 170 return button_context_standard; 171}