A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd
at master 588 lines 26 kB view raw
1/*************************************************************************** 2 * __________ __ ___. 3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___ 4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / 5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 7 * \/ \/ \/ \/ \/ 8 * $Id$ 9 * 10 * Copyright (C) 2007-2009 Joshua Simmons <mud at majidejima dot com> 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#ifndef GOBAN_MAIN_H 23#define GOBAN_MAIN_H 24 25/* Enable this to run test mode. (see the end of util.c) */ 26#if 0 27#define GBN_TEST 28#endif 29 30#include "types.h" 31#include "util.h" 32 33 34/* Colors of various things. The colors on mono bitmap targets is fixed 35 based on the background/foreground color. */ 36#ifdef HAVE_LCD_COLOR 37#define BOARD_COLOR LCD_RGBPACK(184,136,72) 38#define WHITE_COLOR LCD_RGBPACK(255,255,255) 39#define BLACK_COLOR LCD_RGBPACK(0,0,0) 40#define LINE_COLOR LCD_RGBPACK(0,0,0) 41#define BACKGROUND_COLOR LCD_RGBPACK(41,104,74) 42#define CURSOR_COLOR LCD_RGBPACK(222,0,0) 43#define MARK_COLOR LCD_RGBPACK(0,0,255) 44#elif LCD_DEPTH > 1 /* grayscale */ 45#define BOARD_COLOR LCD_LIGHTGRAY 46#define WHITE_COLOR LCD_WHITE 47#define BLACK_COLOR LCD_BLACK 48#define LINE_COLOR LCD_BLACK 49#define BACKGROUND_COLOR LCD_DARKGRAY 50#define CURSOR_COLOR LCD_DARKGRAY 51#define MARK_COLOR LCD_DARKGRAY 52#endif 53 54/* Key setups */ 55#ifdef HAVE_TOUCHSCREEN 56#define GBN_BUTTON_UP BUTTON_TOPMIDDLE 57#define GBN_BUTTON_DOWN BUTTON_BOTTOMMIDDLE 58#define GBN_BUTTON_LEFT BUTTON_MIDLEFT 59#define GBN_BUTTON_RIGHT BUTTON_MIDRIGHT 60#define GBN_BUTTON_RETREAT BUTTON_BOTTOMLEFT 61#define GBN_BUTTON_ADVANCE BUTTON_BOTTOMRIGHT 62#define GBN_BUTTON_MENU BUTTON_TOPLEFT 63#define GBN_BUTTON_PLAY BUTTON_CENTER | BUTTON_REL 64#define GBN_BUTTON_CONTEXT BUTTON_CENTER | BUTTON_REPEAT 65#define GBN_BUTTON_NEXT_VAR BUTTON_TOPRIGHT 66 67#elif (CONFIG_KEYPAD == IPOD_1G2G_PAD) \ 68 || (CONFIG_KEYPAD == IPOD_3G_PAD) \ 69 || (CONFIG_KEYPAD == IPOD_4G_PAD) 70#define GBN_BUTTON_UP BUTTON_MENU 71#define GBN_BUTTON_DOWN BUTTON_PLAY 72#define GBN_BUTTON_LEFT BUTTON_LEFT 73#define GBN_BUTTON_RIGHT BUTTON_RIGHT 74#define GBN_BUTTON_RETREAT BUTTON_SCROLL_BACK 75#define GBN_BUTTON_ADVANCE BUTTON_SCROLL_FWD 76#define GBN_BUTTON_PLAY BUTTON_SELECT | BUTTON_REL 77#define GBN_BUTTON_MENU BUTTON_SELECT | BUTTON_REPEAT 78/* no context */ 79/* no next var */ 80 81#elif (CONFIG_KEYPAD == SANSA_E200_PAD) 82#define GBN_BUTTON_UP BUTTON_UP 83#define GBN_BUTTON_DOWN BUTTON_DOWN 84#define GBN_BUTTON_LEFT BUTTON_LEFT 85#define GBN_BUTTON_RIGHT BUTTON_RIGHT 86#define GBN_BUTTON_RETREAT BUTTON_SCROLL_BACK 87#define GBN_BUTTON_ADVANCE BUTTON_SCROLL_FWD 88#define GBN_BUTTON_MENU BUTTON_POWER 89#define GBN_BUTTON_PLAY BUTTON_SELECT | BUTTON_REL 90#define GBN_BUTTON_CONTEXT BUTTON_SELECT | BUTTON_REPEAT 91#define GBN_BUTTON_NEXT_VAR BUTTON_REC 92 93#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD) 94#define GBN_BUTTON_UP BUTTON_UP 95#define GBN_BUTTON_DOWN BUTTON_DOWN 96#define GBN_BUTTON_LEFT BUTTON_LEFT 97#define GBN_BUTTON_RIGHT BUTTON_RIGHT 98#define GBN_BUTTON_RETREAT BUTTON_SCROLL_BACK 99#define GBN_BUTTON_ADVANCE BUTTON_SCROLL_FWD 100#define GBN_BUTTON_MENU (BUTTON_HOME|BUTTON_REPEAT) 101#define GBN_BUTTON_PLAY BUTTON_SELECT | BUTTON_REL 102#define GBN_BUTTON_CONTEXT BUTTON_SELECT | BUTTON_REPEAT 103/* No next var */ 104 105#elif (CONFIG_KEYPAD == SANSA_C200_PAD) 106#define GBN_BUTTON_UP BUTTON_UP 107#define GBN_BUTTON_DOWN BUTTON_DOWN 108#define GBN_BUTTON_LEFT BUTTON_LEFT 109#define GBN_BUTTON_RIGHT BUTTON_RIGHT 110#define GBN_BUTTON_RETREAT BUTTON_VOL_DOWN 111#define GBN_BUTTON_ADVANCE BUTTON_VOL_UP 112#define GBN_BUTTON_MENU BUTTON_POWER 113#define GBN_BUTTON_PLAY BUTTON_SELECT | BUTTON_REL 114#define GBN_BUTTON_CONTEXT BUTTON_SELECT | BUTTON_REPEAT 115#define GBN_BUTTON_NEXT_VAR BUTTON_REC 116 117#elif (CONFIG_KEYPAD == SANSA_CLIP_PAD) 118#define GBN_BUTTON_UP BUTTON_UP 119#define GBN_BUTTON_DOWN BUTTON_DOWN 120#define GBN_BUTTON_LEFT BUTTON_LEFT 121#define GBN_BUTTON_RIGHT BUTTON_RIGHT 122#define GBN_BUTTON_RETREAT BUTTON_VOL_DOWN 123#define GBN_BUTTON_ADVANCE BUTTON_VOL_UP 124#define GBN_BUTTON_MENU BUTTON_POWER 125#define GBN_BUTTON_PLAY BUTTON_SELECT | BUTTON_REL 126#define GBN_BUTTON_CONTEXT BUTTON_SELECT | BUTTON_REPEAT 127#define GBN_BUTTON_NEXT_VAR BUTTON_HOME 128 129#elif (CONFIG_KEYPAD == SANSA_M200_PAD) 130#define GBN_BUTTON_UP BUTTON_UP 131#define GBN_BUTTON_DOWN BUTTON_DOWN 132#define GBN_BUTTON_LEFT BUTTON_LEFT 133#define GBN_BUTTON_RIGHT BUTTON_RIGHT 134#define GBN_BUTTON_RETREAT BUTTON_VOL_DOWN 135#define GBN_BUTTON_ADVANCE BUTTON_VOL_UP 136#define GBN_BUTTON_MENU BUTTON_POWER 137#define GBN_BUTTON_PLAY BUTTON_SELECT | BUTTON_REL 138#define GBN_BUTTON_CONTEXT BUTTON_SELECT | BUTTON_REPEAT 139/* No next var */ 140 141#elif (CONFIG_KEYPAD == SANSA_CONNECT_PAD) 142#define GBN_BUTTON_UP BUTTON_UP 143#define GBN_BUTTON_DOWN BUTTON_DOWN 144#define GBN_BUTTON_LEFT BUTTON_LEFT 145#define GBN_BUTTON_RIGHT BUTTON_RIGHT 146#define GBN_BUTTON_RETREAT BUTTON_VOL_DOWN 147#define GBN_BUTTON_ADVANCE BUTTON_VOL_UP 148#define GBN_BUTTON_MENU BUTTON_POWER 149#define GBN_BUTTON_PLAY BUTTON_SELECT | BUTTON_REL 150#define GBN_BUTTON_CONTEXT BUTTON_SELECT | BUTTON_REPEAT 151#define GBN_BUTTON_NEXT_VAR BUTTON_NEXT 152 153 154#elif (CONFIG_KEYPAD == CREATIVEZVM_PAD) \ 155 || (CONFIG_KEYPAD == CREATIVEZV_PAD) 156#define GBN_BUTTON_UP BUTTON_UP 157#define GBN_BUTTON_DOWN BUTTON_DOWN 158#define GBN_BUTTON_LEFT BUTTON_LEFT 159#define GBN_BUTTON_RIGHT BUTTON_RIGHT 160#define GBN_BUTTON_RETREAT BUTTON_BACK 161#define GBN_BUTTON_ADVANCE BUTTON_CUSTOM 162#define GBN_BUTTON_MENU BUTTON_MENU 163#define GBN_BUTTON_PLAY BUTTON_SELECT | BUTTON_REL 164#define GBN_BUTTON_CONTEXT BUTTON_SELECT | BUTTON_REPEAT 165#define GBN_BUTTON_NEXT_VAR BUTTON_PLAY 166 167#elif (CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD) 168#define GBN_BUTTON_UP BUTTON_UP | BUTTON_REL 169#define GBN_BUTTON_DOWN BUTTON_DOWN 170#define GBN_BUTTON_LEFT BUTTON_BACK 171#define GBN_BUTTON_RIGHT BUTTON_MENU 172#define GBN_BUTTON_RETREAT BUTTON_VOL_DOWN 173#define GBN_BUTTON_ADVANCE BUTTON_VOL_UP 174#define GBN_BUTTON_MENU BUTTON_POWER 175#define GBN_BUTTON_PLAY BUTTON_PLAY | BUTTON_REL 176#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT 177 178#elif (CONFIG_KEYPAD == PHILIPS_HDD1630_PAD) 179#define GBN_BUTTON_UP BUTTON_UP 180#define GBN_BUTTON_DOWN BUTTON_DOWN 181#define GBN_BUTTON_LEFT BUTTON_LEFT 182#define GBN_BUTTON_RIGHT BUTTON_RIGHT 183#define GBN_BUTTON_RETREAT BUTTON_VOL_DOWN 184#define GBN_BUTTON_ADVANCE BUTTON_VOL_UP 185#define GBN_BUTTON_MENU BUTTON_MENU 186#define GBN_BUTTON_PLAY BUTTON_SELECT | BUTTON_REL 187#define GBN_BUTTON_CONTEXT BUTTON_SELECT | BUTTON_REPEAT 188#define GBN_BUTTON_NEXT_VAR BUTTON_VIEW 189 190#elif (CONFIG_KEYPAD == PHILIPS_HDD6330_PAD) 191#define GBN_BUTTON_UP BUTTON_UP 192#define GBN_BUTTON_DOWN BUTTON_DOWN 193#define GBN_BUTTON_LEFT BUTTON_LEFT 194#define GBN_BUTTON_RIGHT BUTTON_RIGHT 195#define GBN_BUTTON_RETREAT BUTTON_VOL_DOWN 196#define GBN_BUTTON_ADVANCE BUTTON_VOL_UP 197#define GBN_BUTTON_MENU BUTTON_MENU 198#define GBN_BUTTON_PLAY BUTTON_PLAY | BUTTON_REL 199#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT 200#define GBN_BUTTON_NEXT_VAR BUTTON_NEXT 201 202#elif (CONFIG_KEYPAD == PHILIPS_SA9200_PAD) 203#define GBN_BUTTON_UP BUTTON_UP 204#define GBN_BUTTON_DOWN BUTTON_DOWN 205#define GBN_BUTTON_LEFT BUTTON_PREV 206#define GBN_BUTTON_RIGHT BUTTON_NEXT 207#define GBN_BUTTON_RETREAT BUTTON_VOL_DOWN 208#define GBN_BUTTON_ADVANCE BUTTON_VOL_UP 209#define GBN_BUTTON_MENU BUTTON_MENU 210#define GBN_BUTTON_PLAY BUTTON_PLAY | BUTTON_REL 211#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT 212#define GBN_BUTTON_NEXT_VAR BUTTON_RIGHT 213 214#elif (CONFIG_KEYPAD == GIGABEAT_PAD) 215#define GBN_BUTTON_UP BUTTON_UP 216#define GBN_BUTTON_DOWN BUTTON_DOWN 217#define GBN_BUTTON_LEFT BUTTON_LEFT 218#define GBN_BUTTON_RIGHT BUTTON_RIGHT 219#define GBN_BUTTON_RETREAT BUTTON_VOL_DOWN 220#define GBN_BUTTON_ADVANCE BUTTON_VOL_UP 221#define GBN_BUTTON_MENU BUTTON_MENU 222#define GBN_BUTTON_PLAY BUTTON_SELECT | BUTTON_REL 223#define GBN_BUTTON_CONTEXT BUTTON_SELECT | BUTTON_REPEAT 224#define GBN_BUTTON_NEXT_VAR BUTTON_A 225 226#elif (CONFIG_KEYPAD == GIGABEAT_S_PAD) 227#define GBN_BUTTON_UP BUTTON_UP 228#define GBN_BUTTON_DOWN BUTTON_DOWN 229#define GBN_BUTTON_LEFT BUTTON_LEFT 230#define GBN_BUTTON_RIGHT BUTTON_RIGHT 231#define GBN_BUTTON_RETREAT BUTTON_VOL_DOWN 232#define GBN_BUTTON_ADVANCE BUTTON_VOL_UP 233#define GBN_BUTTON_MENU BUTTON_MENU 234#define GBN_BUTTON_PLAY BUTTON_SELECT | BUTTON_REL 235#define GBN_BUTTON_CONTEXT BUTTON_SELECT | BUTTON_REPEAT 236#define GBN_BUTTON_NEXT_VAR BUTTON_PLAY 237 238#elif (CONFIG_KEYPAD == IRIVER_H10_PAD) 239#define GBN_BUTTON_UP BUTTON_SCROLL_UP 240#define GBN_BUTTON_DOWN BUTTON_SCROLL_DOWN 241#define GBN_BUTTON_LEFT BUTTON_LEFT 242#define GBN_BUTTON_RIGHT BUTTON_RIGHT 243#define GBN_BUTTON_RETREAT BUTTON_FF 244#define GBN_BUTTON_ADVANCE BUTTON_REW 245#define GBN_BUTTON_MENU BUTTON_POWER 246#define GBN_BUTTON_PLAY BUTTON_PLAY | BUTTON_REL 247#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT 248/* No next var */ 249 250#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ 251 (CONFIG_KEYPAD == IRIVER_H300_PAD) 252#define GBN_BUTTON_UP BUTTON_UP 253#define GBN_BUTTON_DOWN BUTTON_DOWN 254#define GBN_BUTTON_LEFT BUTTON_LEFT 255#define GBN_BUTTON_RIGHT BUTTON_RIGHT 256#define GBN_BUTTON_RETREAT BUTTON_OFF 257#define GBN_BUTTON_ADVANCE BUTTON_ON 258#define GBN_BUTTON_MENU BUTTON_MODE 259#define GBN_BUTTON_PLAY BUTTON_SELECT | BUTTON_REL 260#define GBN_BUTTON_CONTEXT BUTTON_SELECT | BUTTON_REPEAT 261#define GBN_BUTTON_NEXT_VAR BUTTON_REC 262 263#elif (CONFIG_KEYPAD == MROBE100_PAD) 264#define GBN_BUTTON_UP BUTTON_UP 265#define GBN_BUTTON_DOWN BUTTON_DOWN 266#define GBN_BUTTON_LEFT BUTTON_LEFT 267#define GBN_BUTTON_RIGHT BUTTON_RIGHT 268#define GBN_BUTTON_RETREAT BUTTON_MENU 269#define GBN_BUTTON_ADVANCE BUTTON_PLAY 270#define GBN_BUTTON_MENU BUTTON_DISPLAY 271#define GBN_BUTTON_PLAY BUTTON_SELECT | BUTTON_REL 272#define GBN_BUTTON_CONTEXT BUTTON_SELECT | BUTTON_REPEAT 273#define GBN_BUTTON_NEXT_VAR BUTTON_POWER 274 275#elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD) 276#define GBN_BUTTON_UP BUTTON_UP 277#define GBN_BUTTON_DOWN BUTTON_DOWN 278#define GBN_BUTTON_LEFT BUTTON_LEFT 279#define GBN_BUTTON_RIGHT BUTTON_RIGHT 280#define GBN_BUTTON_RETREAT BUTTON_PLAY 281#define GBN_BUTTON_ADVANCE BUTTON_REC 282#define GBN_BUTTON_MENU BUTTON_POWER 283#define GBN_BUTTON_PLAY BUTTON_SELECT | BUTTON_REL 284#define GBN_BUTTON_CONTEXT BUTTON_SELECT | BUTTON_REPEAT 285/* no next var */ 286 287#elif (CONFIG_KEYPAD == IAUDIO_M3_PAD) 288/* TODO: these are basically complete guesses, I have no manual to go by */ 289#define GBN_BUTTON_UP BUTTON_RC_VOL_UP 290#define GBN_BUTTON_DOWN BUTTON_RC_VOL_DOWN 291#define GBN_BUTTON_LEFT BUTTON_RC_REW 292#define GBN_BUTTON_RIGHT BUTTON_RC_FF 293#define GBN_BUTTON_RETREAT BUTTON_VOL_DOWN 294#define GBN_BUTTON_ADVANCE BUTTON_VOL_UP 295#define GBN_BUTTON_MENU BUTTON_MODE 296#define GBN_BUTTON_PLAY BUTTON_PLAY | BUTTON_REL 297#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT 298/* no next var */ 299 300#elif (CONFIG_KEYPAD == SAMSUNG_YH92X_PAD) 301#define GBN_BUTTON_UP BUTTON_UP 302#define GBN_BUTTON_DOWN BUTTON_DOWN 303#define GBN_BUTTON_LEFT BUTTON_LEFT 304#define GBN_BUTTON_RIGHT BUTTON_RIGHT 305#define GBN_BUTTON_RETREAT BUTTON_FFWD | BUTTON_LEFT 306#define GBN_BUTTON_ADVANCE BUTTON_FFWD | BUTTON_RIGHT 307#define GBN_BUTTON_MENU BUTTON_REW 308#define GBN_BUTTON_PLAY BUTTON_PLAY | BUTTON_REL 309#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT 310#define GBN_BUTTON_NEXT_VAR BUTTON_FFWD | BUTTON_UP 311 312#elif (CONFIG_KEYPAD == SAMSUNG_YH820_PAD) 313#define GBN_BUTTON_UP BUTTON_UP 314#define GBN_BUTTON_DOWN BUTTON_DOWN 315#define GBN_BUTTON_LEFT BUTTON_LEFT 316#define GBN_BUTTON_RIGHT BUTTON_RIGHT 317#define GBN_BUTTON_RETREAT BUTTON_REC | BUTTON_LEFT 318#define GBN_BUTTON_ADVANCE BUTTON_REC | BUTTON_RIGHT 319#define GBN_BUTTON_MENU BUTTON_REW 320#define GBN_BUTTON_PLAY BUTTON_PLAY | BUTTON_REL 321#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT 322#define GBN_BUTTON_NEXT_VAR BUTTON_REC | BUTTON_UP 323 324#elif (CONFIG_KEYPAD == PBELL_VIBE500_PAD) 325#define GBN_BUTTON_UP BUTTON_UP 326#define GBN_BUTTON_DOWN BUTTON_DOWN 327#define GBN_BUTTON_LEFT BUTTON_PREV 328#define GBN_BUTTON_RIGHT BUTTON_NEXT 329#define GBN_BUTTON_RETREAT (BUTTON_OK | BUTTON_PREV) 330#define GBN_BUTTON_ADVANCE (BUTTON_OK | BUTTON_NEXT) 331#define GBN_BUTTON_MENU BUTTON_MENU 332#define GBN_BUTTON_PLAY BUTTON_PLAY 333#define GBN_BUTTON_CONTEXT BUTTON_OK 334#define GBN_BUTTON_NEXT_VAR BUTTON_CANCEL 335 336#elif (CONFIG_KEYPAD == MPIO_HD200_PAD) 337#define GBN_BUTTON_UP BUTTON_REW 338#define GBN_BUTTON_DOWN BUTTON_FF 339#define GBN_BUTTON_LEFT BUTTON_VOL_DOWN 340#define GBN_BUTTON_RIGHT BUTTON_VOL_UP 341#define GBN_BUTTON_RETREAT (BUTTON_REC | BUTTON_REW) 342#define GBN_BUTTON_ADVANCE (BUTTON_REC | BUTTON_FF) 343#define GBN_BUTTON_PLAY (BUTTON_FUNC | BUTTON_REL) 344#define GBN_BUTTON_MENU BUTTON_PLAY 345#define GBN_BUTTON_CONTEXT (BUTTON_FUNC | BUTTON_REPEAT) 346#define GBN_BUTTON_NEXT_VAR BUTTON_REC 347 348#elif (CONFIG_KEYPAD == MPIO_HD300_PAD) 349#define GBN_BUTTON_UP BUTTON_UP 350#define GBN_BUTTON_DOWN BUTTON_DOWN 351#define GBN_BUTTON_LEFT BUTTON_REW 352#define GBN_BUTTON_RIGHT BUTTON_FF 353#define GBN_BUTTON_RETREAT (BUTTON_REC | BUTTON_REW) 354#define GBN_BUTTON_ADVANCE (BUTTON_REC | BUTTON_FF) 355#define GBN_BUTTON_PLAY (BUTTON_ENTER | BUTTON_REL) 356#define GBN_BUTTON_CONTEXT (BUTTON_ENTER | BUTTON_REPEAT) 357#define GBN_BUTTON_MENU BUTTON_MENU 358#define GBN_BUTTON_NEXT_VAR BUTTON_REC 359 360#elif (CONFIG_KEYPAD == SANSA_FUZEPLUS_PAD) 361#define GBN_BUTTON_UP BUTTON_UP 362#define GBN_BUTTON_DOWN BUTTON_DOWN 363#define GBN_BUTTON_LEFT BUTTON_LEFT 364#define GBN_BUTTON_RIGHT BUTTON_RIGHT 365#define GBN_BUTTON_MENU BUTTON_POWER 366#define GBN_BUTTON_PLAY BUTTON_SELECT 367#define GBN_BUTTON_RETREAT BUTTON_BACK 368#define GBN_BUTTON_ADVANCE BUTTON_PLAYPAUSE 369#define GBN_BUTTON_CONTEXT BUTTON_BOTTOMLEFT 370#define GBN_BUTTON_NEXT_VAR BUTTON_BOTTOMRIGHT 371 372#elif (CONFIG_KEYPAD == SAMSUNG_YPR0_PAD) 373#define GBN_BUTTON_UP BUTTON_UP 374#define GBN_BUTTON_DOWN BUTTON_DOWN 375#define GBN_BUTTON_LEFT BUTTON_LEFT 376#define GBN_BUTTON_RIGHT BUTTON_RIGHT 377#define GBN_BUTTON_RETREAT BUTTON_BACK 378#define GBN_BUTTON_ADVANCE BUTTON_USER 379#define GBN_BUTTON_PLAY BUTTON_SELECT 380#define GBN_BUTTON_MENU BUTTON_MENU 381 382#elif CONFIG_KEYPAD == SONY_NWZ_PAD 383#define GBN_BUTTON_UP BUTTON_UP 384#define GBN_BUTTON_DOWN BUTTON_DOWN 385#define GBN_BUTTON_LEFT BUTTON_LEFT 386#define GBN_BUTTON_RIGHT BUTTON_RIGHT 387#define GBN_BUTTON_PLAY BUTTON_PLAY 388#define GBN_BUTTON_MENU BUTTON_BACK 389 390#elif CONFIG_KEYPAD == CREATIVE_ZEN_PAD 391#define GBN_BUTTON_UP BUTTON_UP 392#define GBN_BUTTON_DOWN BUTTON_DOWN 393#define GBN_BUTTON_LEFT BUTTON_LEFT 394#define GBN_BUTTON_RIGHT BUTTON_RIGHT 395#define GBN_BUTTON_PLAY BUTTON_SELECT 396#define GBN_BUTTON_MENU BUTTON_MENU 397 398#elif (CONFIG_KEYPAD == HM60X_PAD) 399#define GBN_BUTTON_UP BUTTON_UP 400#define GBN_BUTTON_DOWN BUTTON_DOWN 401#define GBN_BUTTON_LEFT BUTTON_LEFT 402#define GBN_BUTTON_RIGHT BUTTON_RIGHT 403#define GBN_BUTTON_MENU BUTTON_POWER 404#define GBN_BUTTON_PLAY BUTTON_SELECT 405#define GBN_BUTTON_RETREAT (BUTTON_POWER | BUTTON_LEFT) 406#define GBN_BUTTON_ADVANCE (BUTTON_POWER | BUTTON_UP) 407#define GBN_BUTTON_CONTEXT (BUTTON_POWER | BUTTON_DOWN) 408#define GBN_BUTTON_NEXT_VAR (BUTTON_POWER | BUTTON_RIGHT) 409 410#elif (CONFIG_KEYPAD == HM801_PAD) 411#define GBN_BUTTON_UP BUTTON_UP 412#define GBN_BUTTON_DOWN BUTTON_DOWN 413#define GBN_BUTTON_LEFT BUTTON_LEFT 414#define GBN_BUTTON_RIGHT BUTTON_RIGHT 415#define GBN_BUTTON_MENU BUTTON_POWER 416#define GBN_BUTTON_PLAY BUTTON_SELECT 417#define GBN_BUTTON_RETREAT BUTTON_PREV 418#define GBN_BUTTON_ADVANCE (BUTTON_POWER | BUTTON_PLAY) 419#define GBN_BUTTON_CONTEXT BUTTON_PLAY 420#define GBN_BUTTON_NEXT_VAR BUTTON_NEXT 421 422#elif (CONFIG_KEYPAD == DX50_PAD) 423#define GBN_BUTTON_MENU (BUTTON_POWER|BUTTON_REL) 424 425#elif (CONFIG_KEYPAD == AGPTEK_ROCKER_PAD) 426#define GBN_BUTTON_UP BUTTON_UP 427#define GBN_BUTTON_DOWN BUTTON_DOWN 428#define GBN_BUTTON_LEFT BUTTON_LEFT 429#define GBN_BUTTON_RIGHT BUTTON_RIGHT 430#define GBN_BUTTON_MENU BUTTON_POWER 431#define GBN_BUTTON_PLAY (BUTTON_SELECT | BUTTON_REL) 432#define GBN_BUTTON_NAV_MODE BUTTON_VOLUP 433 434#elif (CONFIG_KEYPAD == XDUOO_X3_PAD) 435#define GBN_BUTTON_UP BUTTON_HOME 436#define GBN_BUTTON_DOWN BUTTON_OPTION 437#define GBN_BUTTON_LEFT BUTTON_PREV 438#define GBN_BUTTON_RIGHT BUTTON_NEXT 439#define GBN_BUTTON_RETREAT BUTTON_VOL_DOWN 440#define GBN_BUTTON_ADVANCE BUTTON_VOL_UP 441#define GBN_BUTTON_MENU BUTTON_POWER 442#define GBN_BUTTON_PLAY BUTTON_PLAY | BUTTON_REL 443#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT 444#define GBN_BUTTON_NEXT_VAR BUTTON_HOME | BUTTON_PWRALT 445 446#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD) || (CONFIG_KEYPAD == XDUOO_X20_PAD) 447#define GBN_BUTTON_UP BUTTON_HOME 448#define GBN_BUTTON_DOWN BUTTON_OPTION 449#define GBN_BUTTON_LEFT BUTTON_PREV 450#define GBN_BUTTON_RIGHT BUTTON_NEXT 451#define GBN_BUTTON_RETREAT BUTTON_VOL_DOWN 452#define GBN_BUTTON_ADVANCE BUTTON_VOL_UP 453#define GBN_BUTTON_MENU BUTTON_POWER 454#define GBN_BUTTON_PLAY BUTTON_PLAY | BUTTON_REL 455#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT 456#define GBN_BUTTON_NEXT_VAR BUTTON_HOME | BUTTON_POWER 457 458#elif (CONFIG_KEYPAD == FIIO_M3K_LINUX_PAD) 459#define GBN_BUTTON_UP BUTTON_HOME 460#define GBN_BUTTON_DOWN BUTTON_OPTION 461#define GBN_BUTTON_LEFT BUTTON_PREV 462#define GBN_BUTTON_RIGHT BUTTON_NEXT 463#define GBN_BUTTON_RETREAT BUTTON_VOL_DOWN 464#define GBN_BUTTON_ADVANCE BUTTON_VOL_UP 465#define GBN_BUTTON_MENU BUTTON_POWER 466#define GBN_BUTTON_PLAY BUTTON_PLAY | BUTTON_REL 467#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT 468#define GBN_BUTTON_NEXT_VAR BUTTON_HOME | BUTTON_POWER 469 470#elif (CONFIG_KEYPAD == IHIFI_770_PAD) || (CONFIG_KEYPAD == IHIFI_800_PAD) 471 472#define GBN_BUTTON_UP BUTTON_PREV 473#define GBN_BUTTON_DOWN BUTTON_NEXT 474#define GBN_BUTTON_LEFT BUTTON_HOME 475#define GBN_BUTTON_RIGHT BUTTON_VOL_DOWN 476#define GBN_BUTTON_RETREAT BUTTON_POWER | BUTTON_VOL_DOWN 477#define GBN_BUTTON_ADVANCE BUTTON_POWER | BUTTON_VOL_UP 478#define GBN_BUTTON_MENU BUTTON_POWER 479#define GBN_BUTTON_PLAY BUTTON_PLAY | BUTTON_REL 480#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT 481#define GBN_BUTTON_NEXT_VAR BUTTON_POWER | BUTTON_HOME 482 483#elif (CONFIG_KEYPAD == EROSQ_PAD) 484#define GBN_BUTTON_UP BUTTON_PREV 485#define GBN_BUTTON_DOWN BUTTON_NEXT 486#define GBN_BUTTON_LEFT BUTTON_SCROLL_BACK 487#define GBN_BUTTON_RIGHT BUTTON_SCROLL_FWD 488#define GBN_BUTTON_RETREAT BUTTON_VOL_DOWN 489#define GBN_BUTTON_ADVANCE BUTTON_VOL_UP 490#define GBN_BUTTON_MENU BUTTON_MENU 491#define GBN_BUTTON_PLAY BUTTON_PLAY 492#define GBN_BUTTON_CONTEXT BUTTON_MENU | BUTTON_REPEAT 493#define GBN_BUTTON_NEXT_VAR BUTTON_BACK 494 495#elif CONFIG_KEYPAD == FIIO_M3K_PAD 496#define GBN_BUTTON_UP BUTTON_UP 497#define GBN_BUTTON_DOWN BUTTON_DOWN 498#define GBN_BUTTON_LEFT BUTTON_LEFT 499#define GBN_BUTTON_RIGHT BUTTON_RIGHT 500#define GBN_BUTTON_RETREAT BUTTON_VOL_DOWN 501#define GBN_BUTTON_ADVANCE BUTTON_VOL_UP 502#define GBN_BUTTON_MENU BUTTON_MENU 503#define GBN_BUTTON_PLAY BUTTON_PLAY 504#define GBN_BUTTON_CONTEXT (BUTTON_SELECT|BUTTON_REPEAT) 505#define GBN_BUTTON_NEXT_VAR BUTTON_BACK 506 507#elif CONFIG_KEYPAD == MA_PAD 508#define GBN_BUTTON_UP BUTTON_UP 509#define GBN_BUTTON_DOWN BUTTON_DOWN 510#define GBN_BUTTON_LEFT BUTTON_LEFT 511#define GBN_BUTTON_RIGHT BUTTON_RIGHT 512#define GBN_BUTTON_MENU BUTTON_MENU 513#define GBN_BUTTON_PLAY BUTTON_PLAY 514 515#elif CONFIG_KEYPAD == RG_NANO_PAD 516#define GBN_BUTTON_UP BUTTON_UP 517#define GBN_BUTTON_DOWN BUTTON_DOWN 518#define GBN_BUTTON_LEFT BUTTON_LEFT 519#define GBN_BUTTON_RIGHT BUTTON_RIGHT 520#define GBN_BUTTON_RETREAT BUTTON_L 521#define GBN_BUTTON_ADVANCE BUTTON_R 522#define GBN_BUTTON_MENU BUTTON_B 523#define GBN_BUTTON_PLAY BUTTON_A 524#define GBN_BUTTON_CONTEXT BUTTON_X 525#define GBN_BUTTON_NEXT_VAR BUTTON_Y 526 527#else 528#error Unsupported keypad 529#endif 530 531 532/* The smallest dimension of the LCD */ 533#define LCD_MIN_DIMENSION (LCD_HEIGHT > LCD_WIDTH ? LCD_WIDTH : LCD_HEIGHT) 534 535 536/* Determine if we have a wide screen or a tall screen. This is used to 537 place the board and footer in acceptable locations also, set the 538 LCD_BOARD_SIZE, making sure that we have at least 16 pixels for the 539 "footer" on either the bottom or the right. */ 540 541#define FOOTER_RESERVE (16) 542 543#if (LCD_WIDTH > LCD_HEIGHT) 544 545#define GBN_WIDE_SCREEN 546 547#define LCD_BOARD_WIDTH (LCD_WIDTH - FOOTER_RESERVE) 548#define LCD_BOARD_HEIGHT LCD_HEIGHT 549 550#else 551 552#define GBN_TALL_SCREEN 553 554#define LCD_BOARD_WIDTH LCD_WIDTH 555#define LCD_BOARD_HEIGHT (LCD_HEIGHT - FOOTER_RESERVE) 556 557#endif /* LCD_WIDTH > LCD_HEIGHT */ 558 559 560/* The directory we default to for saving crap */ 561#define DEFAULT_SAVE_DIR PLUGIN_GAMES_DIR "/goban" 562 563/* The default file we save to */ 564#define DEFAULT_SAVE (DEFAULT_SAVE_DIR "/goban_d.sgf") 565 566/* The size of the buffer we store filenames in (1 reserved for '\0') */ 567#define SAVE_FILE_LENGTH 256 568 569/* The maximum setting for idle autosave time, in minutes */ 570#define MAX_AUTOSAVE (30) 571 572/* On mono targets, draw while stones with a black outline so they are 573 actually visibile instead of being white on white */ 574#if (LCD_DEPTH == 1) 575#define OUTLINE_STONES 576#endif 577 578/* The current play mode */ 579extern enum play_mode_t play_mode; 580 581/* Show comments when redoing onto a move? */ 582extern bool auto_show_comments; 583 584/* A stack used for parsing/outputting as well as some board functions 585 such as counting liberties and filling in/ removing stones */ 586extern struct stack_t parse_stack; 587 588#endif