A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd
at master 563 lines 36 kB view raw
1/*************************************************************************** 2* __________ __ ___. 3* Open \______ \ ____ ____ | | _\_ |__ _______ ___ 4* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / 5* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 6* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 7* \/ \/ \/ \/ \/ 8* $Id$ 9* 10* Copyright (C) 2006 Jonathan Gordon 11* 12* 13* This program is free software; you can redistribute it and/or 14* modify it under the terms of the GNU General Public License 15* as published by the Free Software Foundation; either version 2 16* of the License, or (at your option) any later version. 17* 18* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 19* KIND, either express or implied. 20* 21****************************************************************************/ 22 23#include "plugin.h" 24#include "action.h" 25#include "pluginlib_actions.h" 26 27#if defined(HAVE_REMOTE_LCD) 28/* remote directions */ 29const struct button_mapping pla_remote_ctx[] = 30{ 31#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ 32 (CONFIG_KEYPAD == IRIVER_H300_PAD) 33 { PLA_UP, BUTTON_RC_BITRATE, BUTTON_NONE}, 34 { PLA_DOWN, BUTTON_RC_SOURCE, BUTTON_NONE}, 35 { PLA_LEFT, BUTTON_RC_VOL_DOWN, BUTTON_NONE}, 36 { PLA_RIGHT, BUTTON_RC_VOL_UP, BUTTON_NONE}, 37 { PLA_UP_REPEAT, BUTTON_RC_BITRATE|BUTTON_REPEAT, BUTTON_NONE}, 38 { PLA_DOWN_REPEAT, BUTTON_RC_SOURCE|BUTTON_REPEAT, BUTTON_NONE}, 39 { PLA_LEFT_REPEAT, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE}, 40 { PLA_RIGHT_REPEAT, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE}, 41#elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD) || \ 42 (CONFIG_KEYPAD == IRIVER_H10_PAD) || \ 43 (CONFIG_KEYPAD == GIGABEAT_PAD) || \ 44 (CONFIG_KEYPAD == IAUDIO_M3_PAD) || \ 45 (CONFIG_KEYPAD == GIGABEAT_S_PAD) 46 { PLA_UP, BUTTON_RC_FF, BUTTON_NONE}, 47 { PLA_DOWN, BUTTON_RC_REW, BUTTON_NONE}, 48 { PLA_LEFT, BUTTON_RC_VOL_DOWN, BUTTON_NONE}, 49 { PLA_RIGHT, BUTTON_RC_VOL_UP, BUTTON_NONE}, 50 { PLA_UP_REPEAT, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE}, 51 { PLA_DOWN_REPEAT, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE}, 52 { PLA_LEFT_REPEAT, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE}, 53 { PLA_RIGHT_REPEAT, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE}, 54#elif (CONFIG_REMOTE_KEYPAD == MROBE_REMOTE) 55 { PLA_UP, BUTTON_RC_PLAY, BUTTON_NONE}, 56 { PLA_DOWN, BUTTON_RC_DOWN, BUTTON_NONE}, 57 { PLA_LEFT, BUTTON_RC_REW, BUTTON_NONE}, 58 { PLA_RIGHT, BUTTON_RC_FF, BUTTON_NONE}, 59 { PLA_UP_REPEAT, BUTTON_RC_PLAY|BUTTON_REPEAT, BUTTON_NONE}, 60 { PLA_DOWN_REPEAT, BUTTON_RC_DOWN|BUTTON_REPEAT, BUTTON_NONE}, 61 { PLA_LEFT_REPEAT, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE}, 62 { PLA_RIGHT_REPEAT, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE}, 63#else 64 #error pluginlib_actions: No remote directions 65#endif 66 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_PLUGIN), 67}; 68#endif /* HAVE_REMOTE_LCD */ 69 70/* these were taken from the bubbles plugin, so may need tweaking */ 71const struct button_mapping pla_main_ctx[] = 72{ 73 /* Touchscreens */ 74#ifdef HAVE_TOUCHSCREEN 75 { PLA_CANCEL, BUTTON_BOTTOMRIGHT, BUTTON_NONE}, 76 { PLA_SELECT, BUTTON_CENTER, BUTTON_NONE}, 77 { PLA_SELECT_REL, BUTTON_CENTER|BUTTON_REL, BUTTON_NONE}, 78 { PLA_SELECT_REPEAT, BUTTON_CENTER|BUTTON_REPEAT, BUTTON_NONE}, 79 { PLA_UP, BUTTON_TOPMIDDLE, BUTTON_NONE}, 80 { PLA_DOWN, BUTTON_BOTTOMMIDDLE, BUTTON_NONE}, 81 { PLA_LEFT, BUTTON_MIDLEFT, BUTTON_NONE}, 82 { PLA_RIGHT, BUTTON_MIDRIGHT, BUTTON_NONE}, 83 { PLA_UP_REPEAT, BUTTON_TOPMIDDLE|BUTTON_REPEAT, BUTTON_NONE}, 84 { PLA_DOWN_REPEAT, BUTTON_BOTTOMMIDDLE|BUTTON_REPEAT, BUTTON_NONE}, 85 { PLA_LEFT_REPEAT, BUTTON_MIDLEFT|BUTTON_REPEAT, BUTTON_NONE}, 86 { PLA_RIGHT_REPEAT, BUTTON_MIDRIGHT|BUTTON_REPEAT, BUTTON_NONE}, 87#endif 88 89 /* Directions */ 90#if ((CONFIG_KEYPAD == IRIVER_H100_PAD) \ 91 || (CONFIG_KEYPAD == IRIVER_H300_PAD) \ 92 || (CONFIG_KEYPAD == IAUDIO_X5M5_PAD) \ 93 || (CONFIG_KEYPAD == GIGABEAT_PAD) \ 94 || (CONFIG_KEYPAD == SANSA_C200_PAD) \ 95 || (CONFIG_KEYPAD == GIGABEAT_S_PAD) \ 96 || (CONFIG_KEYPAD == MROBE100_PAD) \ 97 || (CONFIG_KEYPAD == PHILIPS_HDD1630_PAD) \ 98 || (CONFIG_KEYPAD == SANSA_CLIP_PAD) \ 99 || (CONFIG_KEYPAD == CREATIVEZVM_PAD) \ 100 || (CONFIG_KEYPAD == SANSA_M200_PAD)\ 101 || (CONFIG_KEYPAD == SANSA_E200_PAD) \ 102 || (CONFIG_KEYPAD == SANSA_FUZE_PAD) \ 103 || (CONFIG_KEYPAD == SAMSUNG_YH820_PAD) \ 104 || (CONFIG_KEYPAD == SAMSUNG_YH92X_PAD) \ 105 || (CONFIG_KEYPAD == SANSA_FUZEPLUS_PAD) \ 106 || (CONFIG_KEYPAD == SANSA_CONNECT_PAD) \ 107 || (CONFIG_KEYPAD == SAMSUNG_YPR0_PAD) \ 108 || (CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD) \ 109 || (CONFIG_KEYPAD == HM60X_PAD) \ 110 || (CONFIG_KEYPAD == HM801_PAD) \ 111 || (CONFIG_KEYPAD == SONY_NWZ_PAD) \ 112 || (CONFIG_KEYPAD == CREATIVE_ZEN_PAD) \ 113 || (CONFIG_KEYPAD == AGPTEK_ROCKER_PAD)) 114 { PLA_UP, BUTTON_UP, BUTTON_NONE }, 115 { PLA_DOWN, BUTTON_DOWN, BUTTON_NONE }, 116 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE }, 117 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, 118 { PLA_UP_REPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 119 { PLA_DOWN_REPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 120 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 121 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, 122 /* now the bad ones that don't have standard names for the directional 123 * buttons */ 124#elif (CONFIG_KEYPAD == IPOD_1G2G_PAD) \ 125 || (CONFIG_KEYPAD == IPOD_3G_PAD) \ 126 || (CONFIG_KEYPAD == IPOD_4G_PAD) 127 { PLA_UP, BUTTON_MENU, BUTTON_NONE }, 128 { PLA_DOWN, BUTTON_PLAY, BUTTON_NONE }, 129 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE }, 130 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, 131 { PLA_UP_REPEAT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE }, 132 { PLA_DOWN_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE }, 133 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 134 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, 135#elif (CONFIG_KEYPAD == IRIVER_H10_PAD) 136 { PLA_UP, BUTTON_SCROLL_UP, BUTTON_NONE }, 137 { PLA_DOWN, BUTTON_SCROLL_DOWN, BUTTON_NONE }, 138 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE }, 139 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, 140 { PLA_UP_REPEAT, BUTTON_SCROLL_UP|BUTTON_REPEAT, BUTTON_NONE }, 141 { PLA_DOWN_REPEAT, BUTTON_SCROLL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 142 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 143 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, 144#elif (CONFIG_KEYPAD == IAUDIO_M3_PAD) 145 { PLA_UP, BUTTON_VOL_UP, BUTTON_NONE }, 146 { PLA_DOWN, BUTTON_VOL_DOWN, BUTTON_NONE }, 147 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE }, 148 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, 149 { PLA_UP_REPEAT, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 150 { PLA_DOWN_REPEAT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 151 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 152 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, 153#elif (CONFIG_KEYPAD == PHILIPS_HDD6330_PAD) \ 154 || (CONFIG_KEYPAD == PHILIPS_SA9200_PAD) 155 { PLA_UP, BUTTON_UP, BUTTON_NONE }, 156 { PLA_DOWN, BUTTON_DOWN, BUTTON_NONE }, 157 { PLA_LEFT, BUTTON_PREV, BUTTON_NONE }, 158 { PLA_RIGHT, BUTTON_NEXT, BUTTON_NONE }, 159 { PLA_UP_REPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 160 { PLA_DOWN_REPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 161 { PLA_LEFT_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, 162 { PLA_RIGHT_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, 163#elif (CONFIG_KEYPAD == PBELL_VIBE500_PAD) 164 { PLA_UP, BUTTON_UP, BUTTON_NONE}, 165 { PLA_DOWN, BUTTON_DOWN, BUTTON_NONE}, 166 { PLA_LEFT, BUTTON_PREV, BUTTON_NONE}, 167 { PLA_RIGHT, BUTTON_NEXT, BUTTON_NONE}, 168 { PLA_UP_REPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE}, 169 { PLA_DOWN_REPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE}, 170 { PLA_LEFT_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE}, 171 { PLA_RIGHT_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE}, 172#elif (CONFIG_KEYPAD == MPIO_HD200_PAD) 173 { PLA_UP, BUTTON_REW, BUTTON_NONE}, 174 { PLA_DOWN, BUTTON_FF, BUTTON_NONE}, 175 { PLA_LEFT, BUTTON_VOL_DOWN, BUTTON_NONE}, 176 { PLA_RIGHT, BUTTON_VOL_UP, BUTTON_NONE}, 177 { PLA_UP_REPEAT, BUTTON_REW|BUTTON_REPEAT, BUTTON_NONE}, 178 { PLA_DOWN_REPEAT, BUTTON_FF|BUTTON_REPEAT, BUTTON_NONE}, 179 { PLA_LEFT_REPEAT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE}, 180 { PLA_RIGHT_REPEAT, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE}, 181#elif (CONFIG_KEYPAD == MPIO_HD300_PAD) 182 { PLA_UP, BUTTON_UP, BUTTON_NONE}, 183 { PLA_DOWN, BUTTON_DOWN, BUTTON_NONE}, 184 { PLA_LEFT, BUTTON_REW, BUTTON_NONE}, 185 { PLA_RIGHT, BUTTON_FF, BUTTON_NONE}, 186 { PLA_UP_REPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE}, 187 { PLA_DOWN_REPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE}, 188 { PLA_LEFT_REPEAT, BUTTON_REW|BUTTON_REPEAT, BUTTON_NONE}, 189 { PLA_RIGHT_REPEAT, BUTTON_FF|BUTTON_REPEAT, BUTTON_NONE}, 190#elif (CONFIG_KEYPAD == RK27XX_GENERIC_PAD) 191 { PLA_UP, BUTTON_REW, BUTTON_NONE}, 192 { PLA_DOWN, BUTTON_FF, BUTTON_NONE}, 193 { PLA_LEFT, BUTTON_REW|BUTTON_M, BUTTON_NONE}, 194 { PLA_RIGHT, BUTTON_FF|BUTTON_M, BUTTON_NONE}, 195 { PLA_UP_REPEAT, BUTTON_REW|BUTTON_REPEAT, BUTTON_NONE}, 196 { PLA_DOWN_REPEAT, BUTTON_FF|BUTTON_REPEAT, BUTTON_NONE}, 197 { PLA_LEFT_REPEAT, BUTTON_REW|BUTTON_M|BUTTON_REPEAT, BUTTON_NONE}, 198 { PLA_RIGHT_REPEAT, BUTTON_FF|BUTTON_M|BUTTON_REPEAT, BUTTON_NONE}, 199#elif (CONFIG_KEYPAD == XDUOO_X3_PAD) 200 { PLA_UP, BUTTON_HOME, BUTTON_NONE }, 201 { PLA_DOWN, BUTTON_OPTION, BUTTON_NONE }, 202 { PLA_LEFT, BUTTON_PREV, BUTTON_NONE }, 203 { PLA_RIGHT, BUTTON_NEXT, BUTTON_NONE }, 204 { PLA_UP_REPEAT, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE }, 205 { PLA_DOWN_REPEAT, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_NONE }, 206 { PLA_LEFT_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, 207 { PLA_RIGHT_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, 208#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD) 209 { PLA_UP, BUTTON_HOME, BUTTON_NONE }, 210 { PLA_DOWN, BUTTON_OPTION, BUTTON_NONE }, 211 { PLA_LEFT, BUTTON_PREV, BUTTON_NONE }, 212 { PLA_RIGHT, BUTTON_NEXT, BUTTON_NONE }, 213 { PLA_UP_REPEAT, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE }, 214 { PLA_DOWN_REPEAT, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_NONE }, 215 { PLA_LEFT_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, 216 { PLA_RIGHT_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, 217#elif (CONFIG_KEYPAD == XDUOO_X20_PAD) 218 { PLA_UP, BUTTON_HOME, BUTTON_NONE }, 219 { PLA_DOWN, BUTTON_OPTION, BUTTON_NONE }, 220 { PLA_LEFT, BUTTON_PREV, BUTTON_NONE }, 221 { PLA_RIGHT, BUTTON_NEXT, BUTTON_NONE }, 222 { PLA_UP_REPEAT, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE }, 223 { PLA_DOWN_REPEAT, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_NONE }, 224 { PLA_LEFT_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, 225 { PLA_RIGHT_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, 226#elif (CONFIG_KEYPAD == FIIO_M3K_LINUX_PAD) 227 { PLA_UP, BUTTON_HOME, BUTTON_NONE }, 228 { PLA_DOWN, BUTTON_OPTION, BUTTON_NONE }, 229 { PLA_LEFT, BUTTON_PREV, BUTTON_NONE }, 230 { PLA_RIGHT, BUTTON_NEXT, BUTTON_NONE }, 231 { PLA_UP_REPEAT, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE }, 232 { PLA_DOWN_REPEAT, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_NONE }, 233 { PLA_LEFT_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, 234 { PLA_RIGHT_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, 235#elif (CONFIG_KEYPAD == EROSQ_PAD) 236 { PLA_UP, BUTTON_VOL_UP, BUTTON_NONE }, 237 { PLA_DOWN, BUTTON_VOL_DOWN, BUTTON_NONE }, 238 { PLA_LEFT, BUTTON_PREV, BUTTON_NONE }, 239 { PLA_RIGHT, BUTTON_NEXT, BUTTON_NONE }, 240 { PLA_UP_REPEAT, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 241 { PLA_DOWN_REPEAT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 242 { PLA_LEFT_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, 243 { PLA_RIGHT_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, 244#elif (CONFIG_KEYPAD == IHIFI_770_PAD) 245 { PLA_UP, BUTTON_PREV, BUTTON_NONE }, 246 { PLA_DOWN, BUTTON_NEXT, BUTTON_NONE }, 247 { PLA_LEFT, BUTTON_HOME, BUTTON_NONE }, 248 { PLA_RIGHT, BUTTON_VOL_DOWN, BUTTON_NONE }, 249 { PLA_UP_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, 250 { PLA_DOWN_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, 251 { PLA_LEFT_REPEAT, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE }, 252 { PLA_RIGHT_REPEAT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 253#elif (CONFIG_KEYPAD == IHIFI_800_PAD) 254 { PLA_UP, BUTTON_PREV, BUTTON_NONE }, 255 { PLA_DOWN, BUTTON_NEXT, BUTTON_NONE }, 256 { PLA_LEFT, BUTTON_HOME, BUTTON_NONE }, 257 { PLA_RIGHT, BUTTON_VOL_DOWN, BUTTON_NONE }, 258 { PLA_UP_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, 259 { PLA_DOWN_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, 260 { PLA_LEFT_REPEAT, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE }, 261 { PLA_RIGHT_REPEAT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 262#elif (CONFIG_KEYPAD == FIIO_M3K_PAD) 263 { PLA_UP, BUTTON_UP, BUTTON_NONE }, 264 { PLA_DOWN, BUTTON_DOWN, BUTTON_NONE }, 265 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE }, 266 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, 267 { PLA_UP_REPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 268 { PLA_DOWN_REPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 269 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 270 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, 271#elif (CONFIG_KEYPAD == MA_PAD) 272 { PLA_UP, BUTTON_UP, BUTTON_NONE }, 273 { PLA_DOWN, BUTTON_DOWN, BUTTON_NONE }, 274 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE }, 275 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, 276 { PLA_UP_REPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 277 { PLA_DOWN_REPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 278 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 279 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, 280#elif (CONFIG_KEYPAD == RG_NANO_PAD) 281 { PLA_UP, BUTTON_UP, BUTTON_NONE }, 282 { PLA_DOWN, BUTTON_DOWN, BUTTON_NONE }, 283 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE }, 284 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, 285 { PLA_UP_REPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 286 { PLA_DOWN_REPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 287 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 288 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, 289#else 290# ifndef HAVE_TOUCHSCREEN 291# error pluginlib_actions: No directions defined 292# endif 293#endif 294 295 /* Scrollwheels */ 296#ifdef HAVE_SCROLLWHEEL 297 { PLA_SCROLL_BACK, BUTTON_SCROLL_BACK, BUTTON_NONE }, 298 { PLA_SCROLL_FWD, BUTTON_SCROLL_FWD, BUTTON_NONE }, 299 { PLA_SCROLL_BACK_REPEAT,BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_NONE }, 300 { PLA_SCROLL_FWD_REPEAT, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE }, 301#endif 302 303 /* Actions */ 304#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) 305 {PLA_CANCEL, BUTTON_OFF, BUTTON_NONE }, 306 {PLA_CANCEL, BUTTON_RC_STOP, BUTTON_NONE }, 307 {PLA_EXIT, BUTTON_ON, BUTTON_NONE }, 308 {PLA_EXIT, BUTTON_RC_MENU, BUTTON_NONE }, 309 {PLA_SELECT, BUTTON_SELECT, BUTTON_NONE }, 310 {PLA_SELECT, BUTTON_RC_ON, BUTTON_NONE }, 311 {PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, 312 {PLA_SELECT_REL, BUTTON_RC_ON|BUTTON_REL, BUTTON_RC_ON }, 313 {PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE }, 314 {PLA_SELECT_REPEAT, BUTTON_RC_ON|BUTTON_REPEAT, BUTTON_NONE }, 315#elif (CONFIG_KEYPAD == IPOD_1G2G_PAD) \ 316 || (CONFIG_KEYPAD == IPOD_3G_PAD) \ 317 || (CONFIG_KEYPAD == IPOD_4G_PAD) 318 {PLA_CANCEL, BUTTON_MENU|BUTTON_SELECT, BUTTON_NONE }, 319 {PLA_EXIT, BUTTON_PLAY|BUTTON_SELECT, BUTTON_NONE }, 320 {PLA_SELECT, BUTTON_SELECT, BUTTON_NONE }, 321 {PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, 322 {PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE }, 323#elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD) 324 {PLA_CANCEL, BUTTON_REC, BUTTON_NONE }, 325 {PLA_CANCEL, BUTTON_RC_REC|BUTTON_REL, BUTTON_RC_REC}, 326 {PLA_EXIT, BUTTON_POWER, BUTTON_NONE }, 327 {PLA_EXIT, BUTTON_RC_REC|BUTTON_REPEAT, BUTTON_NONE }, 328 {PLA_SELECT, BUTTON_SELECT, BUTTON_NONE }, 329 {PLA_SELECT, BUTTON_RC_MODE, BUTTON_NONE }, 330 {PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, 331 {PLA_SELECT_REL, BUTTON_RC_MODE|BUTTON_REL, BUTTON_RC_MODE }, 332 {PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE }, 333 {PLA_SELECT_REPEAT, BUTTON_RC_MODE|BUTTON_REPEAT, BUTTON_NONE }, 334#elif (CONFIG_KEYPAD == GIGABEAT_PAD \ 335 || CONFIG_KEYPAD == SANSA_E200_PAD \ 336 || CONFIG_KEYPAD == SANSA_C200_PAD \ 337 || CONFIG_KEYPAD == SANSA_CLIP_PAD \ 338 || CONFIG_KEYPAD == SANSA_M200_PAD \ 339 || CONFIG_KEYPAD == MROBE100_PAD \ 340 || CONFIG_KEYPAD == PHILIPS_HDD1630_PAD \ 341 || CONFIG_KEYPAD == SANSA_CONNECT_PAD \ 342 || CONFIG_KEYPAD == HM60X_PAD \ 343 || CONFIG_KEYPAD == HM801_PAD) 344 {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER}, 345 {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE}, 346 {PLA_SELECT, BUTTON_SELECT, BUTTON_NONE}, 347 {PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT}, 348 {PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE}, 349#elif (CONFIG_KEYPAD == GIGABEAT_S_PAD) \ 350 || (CONFIG_KEYPAD == SAMSUNG_YPR0_PAD) 351 {PLA_CANCEL, BUTTON_BACK, BUTTON_NONE}, 352 {PLA_EXIT, BUTTON_MENU, BUTTON_NONE}, 353 {PLA_SELECT, BUTTON_SELECT, BUTTON_NONE}, 354 {PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT}, 355 {PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE}, 356#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD) 357 {PLA_CANCEL, BUTTON_HOME|BUTTON_REL, BUTTON_HOME}, 358 {PLA_EXIT, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE}, 359 {PLA_SELECT, BUTTON_SELECT, BUTTON_NONE}, 360 {PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT}, 361 {PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE}, 362#elif (CONFIG_KEYPAD == IRIVER_H10_PAD) 363 {PLA_CANCEL, BUTTON_REW, BUTTON_NONE}, 364 {PLA_EXIT, BUTTON_POWER, BUTTON_NONE}, 365 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE}, 366 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY}, 367 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, 368#elif (CONFIG_KEYPAD == MROBE500_PAD) 369 {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER}, 370 {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE}, 371 {PLA_SELECT, BUTTON_RC_HEART, BUTTON_NONE}, 372 {PLA_SELECT_REL, BUTTON_RC_HEART|BUTTON_REL, BUTTON_RC_HEART}, 373 {PLA_SELECT_REPEAT, BUTTON_RC_HEART|BUTTON_REPEAT, BUTTON_NONE}, 374#elif (CONFIG_KEYPAD == COWON_D2_PAD) 375 {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER}, 376 {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE}, 377 {PLA_SELECT, BUTTON_MINUS, BUTTON_NONE}, 378 {PLA_SELECT_REL, BUTTON_MINUS|BUTTON_REL, BUTTON_MINUS}, 379 {PLA_SELECT_REPEAT, BUTTON_MINUS|BUTTON_REPEAT, BUTTON_NONE}, 380#elif (CONFIG_KEYPAD == ANDROID_PAD) 381 {PLA_CANCEL, BUTTON_BACK|BUTTON_REL, BUTTON_BACK}, 382 {PLA_EXIT, BUTTON_BACK|BUTTON_REPEAT, BUTTON_NONE}, 383 {PLA_SELECT, BUTTON_MENU, BUTTON_NONE}, 384 {PLA_SELECT_REL, BUTTON_MENU|BUTTON_REL, BUTTON_MENU}, 385 {PLA_SELECT_REPEAT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE}, 386#elif (CONFIG_KEYPAD == IAUDIO_M3_PAD) 387 {PLA_CANCEL, BUTTON_RC_REC|BUTTON_REL, BUTTON_RC_REC}, 388 {PLA_EXIT, BUTTON_RC_REC|BUTTON_REPEAT, BUTTON_NONE}, 389 {PLA_SELECT, BUTTON_RC_MODE, BUTTON_NONE}, 390 {PLA_SELECT_REL, BUTTON_RC_MODE|BUTTON_REL, BUTTON_RC_MODE}, 391 {PLA_SELECT_REPEAT, BUTTON_RC_MODE|BUTTON_REPEAT, BUTTON_NONE}, 392#elif (CONFIG_KEYPAD == PHILIPS_HDD6330_PAD) \ 393 || (CONFIG_KEYPAD == PHILIPS_SA9200_PAD) 394 {PLA_EXIT, BUTTON_POWER, BUTTON_NONE}, 395 {PLA_CANCEL, BUTTON_MENU, BUTTON_NONE}, 396 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE}, 397 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY}, 398 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, 399#elif (CONFIG_KEYPAD == CREATIVEZVM_PAD) 400 {PLA_CANCEL, BUTTON_BACK|BUTTON_REL, BUTTON_BACK}, 401 {PLA_EXIT, BUTTON_BACK|BUTTON_REPEAT, BUTTON_NONE}, 402 {PLA_SELECT, BUTTON_SELECT, BUTTON_NONE}, 403 {PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT}, 404 {PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE}, 405#elif (CONFIG_KEYPAD == ONDAVX747_PAD) 406 {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER}, 407 {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE}, 408 {PLA_SELECT, BUTTON_VOL_UP, BUTTON_NONE}, 409 {PLA_SELECT_REL, BUTTON_VOL_UP|BUTTON_REL, BUTTON_VOL_UP}, 410 {PLA_SELECT_REPEAT, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE}, 411#elif (CONFIG_KEYPAD == SAMSUNG_YH820_PAD) \ 412 || (CONFIG_KEYPAD == SAMSUNG_YH92X_PAD) 413 {PLA_CANCEL, BUTTON_REW|BUTTON_REL, BUTTON_REW}, 414 {PLA_EXIT, BUTTON_REW|BUTTON_REPEAT, BUTTON_NONE}, 415 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE}, 416 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY}, 417 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, 418#elif (CONFIG_KEYPAD == PBELL_VIBE500_PAD) 419 {PLA_CANCEL, BUTTON_MENU, BUTTON_NONE}, 420 {PLA_EXIT, BUTTON_REC, BUTTON_NONE}, 421 {PLA_SELECT, BUTTON_OK, BUTTON_NONE}, 422 {PLA_SELECT_REL, BUTTON_OK|BUTTON_REL, BUTTON_OK }, 423 {PLA_SELECT_REPEAT, BUTTON_OK|BUTTON_REPEAT, BUTTON_NONE}, 424#elif (CONFIG_KEYPAD == MPIO_HD200_PAD) 425 {PLA_CANCEL, BUTTON_REC, BUTTON_NONE}, 426 {PLA_EXIT, (BUTTON_REC|BUTTON_PLAY), BUTTON_NONE}, 427 {PLA_SELECT, BUTTON_FUNC, BUTTON_NONE}, 428 {PLA_SELECT_REL, BUTTON_FUNC|BUTTON_REL, BUTTON_FUNC}, 429 {PLA_SELECT_REPEAT, BUTTON_FUNC|BUTTON_REPEAT, BUTTON_NONE}, 430#elif (CONFIG_KEYPAD == MPIO_HD300_PAD) 431 {PLA_CANCEL, BUTTON_MENU, BUTTON_NONE}, 432 {PLA_EXIT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE}, 433 {PLA_SELECT, BUTTON_ENTER, BUTTON_NONE}, 434 {PLA_SELECT_REL, BUTTON_ENTER|BUTTON_REL, BUTTON_ENTER}, 435 {PLA_SELECT_REPEAT, BUTTON_ENTER|BUTTON_REPEAT, BUTTON_NONE}, 436#elif (CONFIG_KEYPAD == RK27XX_GENERIC_PAD) 437 {PLA_CANCEL, BUTTON_M, BUTTON_NONE}, 438 {PLA_EXIT, BUTTON_M|BUTTON_REPEAT, BUTTON_NONE}, 439 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE}, 440 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY}, 441 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, 442#elif (CONFIG_KEYPAD == SANSA_FUZEPLUS_PAD) || (CONFIG_KEYPAD == CREATIVE_ZEN_PAD) 443 {PLA_CANCEL, BUTTON_BACK, BUTTON_NONE}, 444 {PLA_EXIT, BUTTON_POWER, BUTTON_NONE}, 445 {PLA_SELECT, BUTTON_SELECT, BUTTON_NONE}, 446 {PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT}, 447 {PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE}, 448#elif (CONFIG_KEYPAD == AGPTEK_ROCKER_PAD) 449 {PLA_CANCEL, BUTTON_VOLUP, BUTTON_NONE}, 450 {PLA_EXIT, BUTTON_POWER, BUTTON_NONE}, 451 {PLA_SELECT, BUTTON_SELECT, BUTTON_NONE}, 452 {PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT}, 453 {PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE}, 454#elif (CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD) 455 {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_NONE}, 456 {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE}, 457 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE}, 458 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY}, 459 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, 460#elif (CONFIG_KEYPAD == SONY_NWZ_PAD) 461 {PLA_CANCEL, BUTTON_BACK, BUTTON_NONE}, 462 {PLA_EXIT, BUTTON_POWER, BUTTON_NONE}, 463 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE}, 464 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY}, 465 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, 466#elif (CONFIG_KEYPAD == DX50_PAD) 467 {PLA_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE}, 468 {PLA_EXIT, BUTTON_POWER|BUTTON_REL, BUTTON_NONE}, 469 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE}, 470 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_NONE}, 471 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, 472#elif (CONFIG_KEYPAD == XDUOO_X3_PAD) 473 {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER}, 474 {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE}, 475 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE}, 476 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY}, 477 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, 478#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD) 479 {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER}, 480 {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE}, 481 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE}, 482 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY}, 483 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, 484#elif (CONFIG_KEYPAD == XDUOO_X20_PAD) 485 {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER}, 486 {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE}, 487 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE}, 488 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY}, 489 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, 490#elif (CONFIG_KEYPAD == FIIO_M3K_LINUX_PAD) 491 {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER}, 492 {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE}, 493 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE}, 494 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY}, 495 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, 496#elif (CONFIG_KEYPAD == EROSQ_PAD) 497 {PLA_CANCEL, BUTTON_BACK|BUTTON_REL, BUTTON_BACK}, 498 {PLA_EXIT, BUTTON_POWER, BUTTON_NONE}, 499 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE}, 500 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY}, 501 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, 502#elif (CONFIG_KEYPAD == IHIFI_770_PAD) 503 {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER}, 504 {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE}, 505 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE}, 506 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY}, 507 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, 508#elif (CONFIG_KEYPAD == IHIFI_800_PAD) 509 {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER}, 510 {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE}, 511 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE}, 512 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY}, 513 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, 514#elif (CONFIG_KEYPAD == FIIO_M3K_PAD) 515 {PLA_CANCEL, BUTTON_BACK, BUTTON_NONE}, 516 {PLA_EXIT, BUTTON_POWER, BUTTON_NONE}, 517 {PLA_SELECT, BUTTON_SELECT, BUTTON_NONE}, 518 {PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT}, 519 {PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE}, 520#elif (CONFIG_KEYPAD == SHANLING_Q1_PAD) 521 {PLA_EXIT, BUTTON_POWER, BUTTON_NONE}, 522#elif (CONFIG_KEYPAD == MA_PAD) 523 {PLA_CANCEL, BUTTON_BACK|BUTTON_REL, BUTTON_BACK}, 524 {PLA_EXIT, BUTTON_BACK|BUTTON_REPEAT, BUTTON_NONE}, 525 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE}, 526 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY}, 527 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, 528#elif (CONFIG_KEYPAD == RG_NANO_PAD) 529 {PLA_EXIT, BUTTON_START, BUTTON_NONE}, 530 {PLA_CANCEL, BUTTON_B, BUTTON_NONE}, 531 {PLA_SELECT, BUTTON_A, BUTTON_NONE}, 532 {PLA_SELECT_REL, BUTTON_A|BUTTON_REL, BUTTON_A}, 533 {PLA_SELECT_REPEAT, BUTTON_A|BUTTON_REPEAT, BUTTON_NONE}, 534#else 535# ifndef HAVE_TOUCHSCREEN 536# error pluginlib_actions: No actions defined 537# endif 538#endif 539 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_PLUGIN), 540}; 541 542static struct button_mapping **plugin_context_order; 543static int plugin_context_count = 0; 544static int last_context = 0; /* index into plugin_context_order 545 of the last context returned */ 546 547static const struct button_mapping* get_context_map(int context) 548{ 549 (void)context; 550 if (last_context<plugin_context_count) 551 return plugin_context_order[last_context++]; 552 else return NULL; 553} 554 555int pluginlib_getaction(int timeout, 556 const struct button_mapping *plugin_contexts[], 557 int count) 558{ 559 plugin_context_order = (struct button_mapping **)plugin_contexts; 560 plugin_context_count = count; 561 last_context = 0; 562 return rb->get_custom_action(CONTEXT_PLUGIN,timeout,get_context_map); 563}