Index: uisimulator/sdl/button.c =================================================================== --- uisimulator/sdl/button.c (revision 18437) +++ uisimulator/sdl/button.c (working copy) @@ -53,7 +53,8 @@ /* speed repeat finishes at */ #define REPEAT_INTERVAL_FINISH 2 -#if defined(IRIVER_H100_SERIES) || defined (IRIVER_H300_SERIES) +/* iRiver remote specific */ +#ifdef UI_REMOTE_TYPE_IRIVER int _remote_type=REMOTETYPE_H100_LCD; int remote_type(void) @@ -97,6 +98,197 @@ } #endif +void button_usage(void) +{ + printf("\nKeyboard shortcuts:\n\n"); + printf("\tThis help\t\t\t\t?; `\n"); +#ifdef HAVE_TOUCHSCREEN + printf("\tTouchscreen enabled:\n"); + printf("\tTop-left\t\t\t\tKeypad 7\n"); + printf("\tTop-middle\t\t\t\tKeypad 8\n"); + printf("\tTop-right\t\t\t\tKeypad 9\n"); + printf("\tMiddle-left\t\t\t\tKeypad 4\n"); + printf("\tCenter\t\t\t\t\tKeypad 5\n"); + printf("\tMiddle-right\t\t\t\tKeypad 6\n"); + printf("\tButton-left\t\t\t\tKeypad 1\n"); + printf("\tButton-middle\t\t\t\tKeypad 2\n"); + printf("\tButton-right\t\t\t\tKeypad 3\n"); + printf("\tToggle touchscreen mode (point/button)\tF4\n"); +#endif + + printf("\tUSB toggle (connected/disconnected)\tU\n"); + +#ifdef HAS_BUTTON_HOLD + printf("\tHOLD toggle (ON/OFF)\t\t\tH\n"); +#endif + +#ifdef HAS_REMOTE_BUTTON_HOLD + printf("\tRemote HOLD toggle (ON/OFF)\t\tJ\n"); +#endif + +#ifdef UI_KEYS_LEFT_RIGHT +#ifdef HAVE_TOUCHSCREEN + printf("\tLeft\t\t\t\t\tLeft arrow\n"); + printf("\tRight\t\t\t\t\tRight arrow\n"); +#else + printf("\tLeft\t\t\t\t\tLeft arrow; Keypad 4\n"); + printf("\tRight\t\t\t\t\tRight arrow; Keypad 6\n"); +#endif +#endif + +#ifdef HAVE_TOUCHSCREEN +#ifdef UI_KEYS_SCROLL_BACK_FORWARD + printf("\tScroll back\t\t\t\tUp arrow\n"); + printf("\tScroll forward\t\t\t\tDown arrow\n"); +#elif defined UI_KEYS_SCROLL_UP_DOWN + printf("\tScroll up\t\t\t\tUp arrow\n"); + printf("\tScroll down\t\t\t\tDown arrow\n"); +#elif defined UI_KEYS_UP_DOWN + printf("\tUp\t\t\t\t\tUp arrow\n"); + printf("\tDown\t\t\t\t\tDown arrow\n"); +#endif +#else +#ifdef UI_KEYS_SCROLL_BACK_FORWARD + printf("\tScroll back\t\t\t\tUp arrow; Numpad 8\n"); + printf("\tScroll forward\t\t\t\tDown arrow; Numpad 2\n"); +#elif defined UI_KEYS_SCROLL_UP_DOWN + printf("\tScroll up\t\t\t\tUp arrow; Numpad 8\n"); + printf("\tScroll down\t\t\t\tDown arrow; Numpad 2\n"); +#elif defined UI_KEYS_UP_DOWN + printf("\tUp\t\t\t\t\tUp arrow; Numpad 8\n"); + printf("\tDown\t\t\t\t\tDown arrow; Numpad 2\n"); +#endif +#endif + +#ifdef UI_KEYS_VOLUME_UP_DOWN + printf("\tVolume up\t\t\t\tV; Plus; Keypad Plus\n"); + printf("\tVolume down\t\t\t\tC; Minus; Keypad Minus\n"); +#endif + +#ifdef UI_KEYS_POWER_ON_OFF + printf("\tPower On\t\t\t\tV; Plus; Keypad Plus\n"); + printf("\tPower Off\t\t\t\tC; Minus; Keypad Minus\n"); +#endif + +#ifdef UI_KEY_POWER_ON + printf("\tPower On\t\t\t\tV; Plus; Keypad Plus\n"); +#endif + +#ifdef UI_KEY_STOP + printf("\tStop\t\t\t\t\tC; Minus; Keypad Minus\n"); +#endif + +#ifdef UI_KEYS_PLUS_MINUS + printf("\tPlus\t\t\t\t\tV; Plus; Keypad Plus\n"); + printf("\tMinus\t\t\t\t\tC; Minus; Keypad Minus\n"); +#endif + +#if ((defined UI_KEYS_SCROLL_BACK_FORWARD) || (defined UI_KEYS_SCROLL_UP_DOWN)) && \ + (defined UI_KEYS_UP_DOWN) +#ifdef HAVE_TOUCHSCREEN + printf("\tUp\t\t\t\t\tRight bracket (']'); Page-Up\n"); + printf("\tDown\t\t\t\t\tLeft bracket ('['); Page-Down\n"); +#else + printf("\tUp\t\t\t\t\tRight bracket (']'); Page-Up; Numpad 9\n"); + printf("\tDown\t\t\t\t\tLeft bracket ('['); Page-Down; Numpad 3\n"); +#endif +#endif + +#ifdef UI_KEY_POWER + printf("\tPower\t\t\t\t\tF8; Escape; Backspace; Delete;\n" + "\t\t\t\t\t\tKeypad period (DEL)\n"); +#endif + +#ifdef UI_KEY_SELECT + printf("\tSelect\t\t\t\t\tSpace; Return; Keypad Enter\n"); +#endif + +#ifdef UI_KEY_MENU +#ifdef HAVE_TOUCHSCREEN + printf("\tMenu\t\t\t\t\tM; Home\n"); +#else + printf("\tMenu\t\t\t\t\tM; Home; Keypad 7 (Home)\n"); +#endif +#endif + +#ifdef UI_KEY_MODE + printf("\tMode\t\t\t\t\tD; Insert; Keypad 0 (INS)\n"); +#endif + +#ifdef UI_KEY_PLAY +#ifdef HAVE_TOUCHSCREEN + printf("\tPlay\t\t\t\t\tP\n"); +#else + printf("\tPlay\t\t\t\t\tP; Keypad 5\n"); +#endif +#endif + +#ifdef UI_KEY_RECORD + printf("\tRecord\t\t\t\t\tR\n"); +#endif + +#ifdef UI_KEY_REW + printf("\tRew\t\t\t\t\tZ; Less-than sign ('<');\n" + "\t\t\t\t\t\tKeypad divide ('/')\n"); +#elif defined UI_KEY_BACK + printf("\tBack\t\t\t\t\tZ; Less-than sign ('<');\n" + "\t\t\t\t\t\tKeypad divide ('/')\n"); +#elif defined UI_KEY_PREV + printf("\tPrev\t\t\t\t\tZ; Less-than sign ('<');\n" + "\t\t\t\t\t\tKeypad divide ('/')\n"); +#endif + +#ifdef UI_KEY_FF + printf("\tFF\t\t\t\t\tX; Greater-than sign ('>');\n" + "\t\t\t\t\t\tKeypad multiply ('*')\n"); +#elif defined UI_KEY_NEXT + printf("\tNext\t\t\t\t\tX; Greater-than sign ('>');\n" + "\t\t\t\t\t\tKeypad multiply ('*')\n"); +#endif + +/* Function keys */ +#ifdef UI_KEYS_FUNCTIONS_KEYS + printf("\tFunction Key 1\tF1\n"); + printf("\tFunction Key 2\tF2; Keypad multiply ('*')\n"); + printf("\tFunction Key 3\tF3; Keypad minus ('-')\n"); +#endif + +/* Special function button */ +#ifdef UI_KEY_SPECIAL + do { + int i; + + printf("\t%s\t", UI_KEY_SPECIAL_STR); + + for (i = 4 - (strlen(UI_KEY_SPECIAL_STR) / 8); i > 0 ; i--) + printf("\t"); + +#ifdef HAVE_TOUCHSCREEN + printf("A, End\n"); +#else + printf("A, End; Keypad 1 (END)\n"); +#endif + } while (0); +#endif + +/* iRiver remote specific keys */ +#ifdef UI_REMOTE_TYPE_IRIVER + printf("\tRemote type toggle\t\t\tT\n"); +#endif + + printf("\tScreen dump\t\t\t\tF5\n"); +/* Mrobe remote specific keys */ +#ifdef UI_REMOTE_TYPE_MROBE + printf("\tRemote Control Down\t\t\tF6\n"); + printf("\tRemote Control Play\t\t\tF7\n"); + printf("\tRemote Control Heart\t\t\tF9\n"); + printf("\tRemote Control Mode\t\t\tF10\n"); + printf("\tRemote Control Volume Down\t\tF11\n"); + printf("\tRemote Control Volume Up\t\tF12\n"); +#endif + printf("\n"); +} + static int lastbtn; void button_event(int key, bool pressed) { @@ -117,6 +309,11 @@ static bool usb_connected = false; if (usb_connected && key != SDLK_u) return; + + /* A list of keyboard constants is available in the following locations: + * http://www.libsdl.org/cgi/docwiki.cgi/SDLKey + * /usr/share/doc/libsdl1.2-dev/docs/html/sdlkey.html + */ switch (key) { @@ -175,7 +372,7 @@ printf("Touchscreen mode: %s\n", touchscreen_mode == TOUCHSCREEN_POINT ? "TOUCHSCREEN_POINT" : "TOUCHSCREEN_BUTTON"); } break; - + #endif case SDLK_u: if (!pressed) @@ -197,7 +394,7 @@ } return; #endif - + #ifdef HAS_REMOTE_BUTTON_HOLD case SDLK_j: if(pressed) @@ -208,232 +405,208 @@ } return; #endif - -#if CONFIG_KEYPAD == GIGABEAT_PAD + +/* Left and Right */ +#ifdef UI_KEYS_LEFT_RIGHT +#ifndef HAVE_TOUCHSCREEN case SDLK_KP4: +#endif case SDLK_LEFT: new_btn = BUTTON_LEFT; break; +#ifndef HAVE_TOUCHSCREEN case SDLK_KP6: +#endif case SDLK_RIGHT: new_btn = BUTTON_RIGHT; break; +#endif + +/* Up and Down */ +#ifndef HAVE_TOUCHSCREEN case SDLK_KP8: +#endif case SDLK_UP: +#ifdef UI_KEYS_SCROLL_BACK_FORWARD + new_btn = BUTTON_SCROLL_BACK; +#elif defined UI_KEYS_SCROLL_UP_DOWN + new_btn = BUTTON_SCROLL_UP; +#elif defined UI_KEYS_UP_DOWN new_btn = BUTTON_UP; +#endif break; +#ifndef HAVE_TOUCHSCREEN case SDLK_KP2: +#endif case SDLK_DOWN: +#ifdef UI_KEYS_SCROLL_BACK_FORWARD + new_btn = BUTTON_SCROLL_FWD; +#elif defined UI_KEYS_SCROLL_UP_DOWN + new_btn = BUTTON_SCROLL_DOWN; +#elif defined UI_KEYS_UP_DOWN new_btn = BUTTON_DOWN; +#endif break; + +/* Volume Up / Down ; Power On / Power Off ; Minus / Plus */ + case SDLK_EQUALS: case SDLK_KP_PLUS: - case SDLK_F8: - new_btn = BUTTON_POWER; - break; - case SDLK_ESCAPE: - new_btn = BUTTON_POWER; - break; - case SDLK_KP_ENTER: - case SDLK_RETURN: - case SDLK_a: - new_btn = BUTTON_A; - break; - case SDLK_KP5: - case SDLK_SPACE: - new_btn = BUTTON_SELECT; - break; - case SDLK_KP_PERIOD: - case SDLK_INSERT: - new_btn = BUTTON_MENU; - break; - case SDLK_KP9: + case SDLK_v: +#ifdef UI_KEYS_VOLUME_UP_DOWN new_btn = BUTTON_VOL_UP; +#elif defined UI_KEYS_POWER_ON_OFF + new_btn = BUTTON_ON; +#elif defined UI_KEY_POWER_ON + new_btn = BUTTON_ON; +#elif defined UI_KEYS_PLUS_MINUS + new_btn = BUTTON_PLUS; +#endif break; - case SDLK_KP3: + + case SDLK_MINUS: + case SDLK_KP_MINUS: + case SDLK_c: +#ifdef UI_KEYS_VOLUME_UP_DOWN new_btn = BUTTON_VOL_DOWN; +#elif defined UI_KEYS_POWER_ON_OFF + new_btn = BUTTON_OFF; +#elif defined UI_KEY_STOP + new_btn = BUTTON_STOP; +#elif defined UI_KEYS_PLUS_MINUS + new_btn = BUTTON_MINUS; +#endif break; -#elif CONFIG_KEYPAD == GIGABEAT_S_PAD - case SDLK_KP4: - case SDLK_LEFT: - new_btn = BUTTON_LEFT; - break; - case SDLK_KP6: - case SDLK_RIGHT: - new_btn = BUTTON_RIGHT; - break; - case SDLK_KP8: - case SDLK_UP: - new_btn = BUTTON_UP; - break; - case SDLK_KP2: - case SDLK_DOWN: - new_btn = BUTTON_DOWN; - break; - case SDLK_F8: - case SDLK_ESCAPE: - new_btn = BUTTON_POWER; - break; - case SDLK_KP_PLUS: - case SDLK_KP_ENTER: - case SDLK_RETURN: - new_btn = BUTTON_PLAY; - break; - case SDLK_KP7: - new_btn = BUTTON_BACK; - break; - case SDLK_KP5: - case SDLK_SPACE: - new_btn = BUTTON_SELECT; - break; +/* Up / Down (when scroll-wheel available) */ +#if ((defined UI_KEYS_SCROLL_BACK_FORWARD) || (defined UI_KEYS_SCROLL_UP_DOWN)) && \ + (defined UI_KEYS_UP_DOWN) +#ifndef HAVE_TOUCHSCREEN case SDLK_KP9: - case SDLK_KP_PERIOD: - case SDLK_INSERT: - new_btn = BUTTON_MENU; - break; - -#elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD - case SDLK_KP4: - case SDLK_LEFT: - new_btn = BUTTON_LEFT; - break; - case SDLK_KP6: - case SDLK_RIGHT: - new_btn = BUTTON_RIGHT; - break; - case SDLK_KP8: - case SDLK_UP: +#endif + case SDLK_PAGEUP: + case SDLK_RIGHTBRACKET: new_btn = BUTTON_UP; break; - case SDLK_KP2: - case SDLK_DOWN: + +#ifndef HAVE_TOUCHSCREEN + case SDLK_KP3: +#endif + case SDLK_PAGEDOWN: + case SDLK_LEFTBRACKET: new_btn = BUTTON_DOWN; break; - case SDLK_KP_PLUS: - case SDLK_F8: - new_btn = BUTTON_PLAY; - break; +#endif + +/* Power */ +#ifdef UI_KEY_POWER + case SDLK_KP_PERIOD: + case SDLK_DELETE: + case SDLK_BACKSPACE: case SDLK_ESCAPE: + case SDLK_F8: new_btn = BUTTON_POWER; break; +#endif + +/* Select */ +#ifdef UI_KEY_SELECT case SDLK_KP_ENTER: case SDLK_RETURN: - case SDLK_a: - new_btn = BUTTON_POWER; - break; - case SDLK_KP_DIVIDE: - case SDLK_F1: - new_btn = BUTTON_REC; - break; - case SDLK_KP5: case SDLK_SPACE: new_btn = BUTTON_SELECT; break; +#endif -#elif CONFIG_KEYPAD == IAUDIO_M3_PAD - case SDLK_KP4: - case SDLK_LEFT: - new_btn = BUTTON_LEFT; +/* Menu */ +#ifdef UI_KEY_MENU +#ifndef HAVE_TOUCHSCREEN + case SDLK_KP7: +#endif + case SDLK_HOME: + case SDLK_m: + new_btn = BUTTON_MENU; break; - case SDLK_KP6: - case SDLK_RIGHT: - new_btn = BUTTON_RIGHT; - break; - case SDLK_KP8: - case SDLK_UP: - new_btn = BUTTON_VOL_UP; - break; - case SDLK_KP2: - case SDLK_DOWN: - new_btn = BUTTON_VOL_DOWN; - break; - case SDLK_KP_PERIOD: +#endif + +/* Mode */ +#ifdef UI_KEY_MODE + case SDLK_KP0: case SDLK_INSERT: + case SDLK_d: new_btn = BUTTON_MODE; break; - case SDLK_KP_DIVIDE: - case SDLK_F1: - new_btn = BUTTON_REC; - break; +#endif + +/* Play */ +#ifdef UI_KEY_PLAY +#ifndef HAVE_TOUCHSCREEN case SDLK_KP5: - case SDLK_SPACE: +#endif + case SDLK_p: new_btn = BUTTON_PLAY; break; +#endif -#elif (CONFIG_KEYPAD == IPOD_1G2G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) \ - || (CONFIG_KEYPAD == IPOD_4G_PAD) - case SDLK_KP4: - case SDLK_LEFT: - new_btn = BUTTON_LEFT; +/* Record */ +#ifdef UI_KEY_RECORD + case SDLK_r: + new_btn = BUTTON_REC; break; - case SDLK_KP6: - case SDLK_RIGHT: - new_btn = BUTTON_RIGHT; +#endif + +/* Rew / Back */ + case SDLK_KP_DIVIDE: + case SDLK_LESS: + case SDLK_z: +#ifdef UI_KEY_REW + new_btn = BUTTON_REW; +#elif defined UI_KEY_BACK + new_btn = BUTTON_BACK; +#endif break; - case SDLK_KP8: - case SDLK_UP: - new_btn = BUTTON_SCROLL_BACK; - break; - case SDLK_KP2: - case SDLK_DOWN: - new_btn = BUTTON_SCROLL_FWD; - break; - case SDLK_KP_PLUS: - case SDLK_F8: - new_btn = BUTTON_PLAY; - break; - case SDLK_KP5: - case SDLK_SPACE: - new_btn = BUTTON_SELECT; - break; - case SDLK_KP_PERIOD: - case SDLK_INSERT: - new_btn = BUTTON_MENU; - break; -#elif CONFIG_KEYPAD == IRIVER_H10_PAD - case SDLK_KP4: - case SDLK_LEFT: - new_btn = BUTTON_LEFT; +/* FF */ + case SDLK_KP_MULTIPLY: + case SDLK_GREATER: + case SDLK_x: +#ifdef UI_KEY_FF + new_btn = BUTTON_FF; +#endif break; - case SDLK_KP6: - case SDLK_RIGHT: - new_btn = BUTTON_RIGHT; - break; - case SDLK_KP8: - case SDLK_UP: - new_btn = BUTTON_SCROLL_UP; - break; - case SDLK_KP2: - case SDLK_DOWN: - new_btn = BUTTON_SCROLL_DOWN; - break; - case SDLK_KP_PLUS: - case SDLK_F8: - new_btn = BUTTON_POWER; - break; - case SDLK_ESCAPE: - new_btn = BUTTON_POWER; - break; - case SDLK_KP_DIVIDE: + +/* Function keys */ +#ifdef UI_KEYS_FUNCTIONS_KEYS case SDLK_F1: - new_btn = BUTTON_REW; + new_btn = BUTTON_F1; break; case SDLK_KP_MULTIPLY: case SDLK_F2: - new_btn = BUTTON_FF; + new_btn = BUTTON_F2; break; - case SDLK_KP5: - case SDLK_SPACE: - new_btn = BUTTON_PLAY; + case SDLK_KP_MINUS: + case SDLK_F3: + new_btn = BUTTON_F3; break; +#endif -#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) +/* Special function button */ +#ifdef UI_KEY_SPECIAL +#ifndef HAVE_TOUCHSCREEN + case SDLK_KP1: +#endif + case SDLK_END: + case SDLK_a: + new_btn = UI_KEY_SPECIAL; + break; +#endif + +/* iRiver remote specific keys */ +#ifdef UI_REMOTE_TYPE_IRIVER case SDLK_t: if(pressed) switch(_remote_type) { - case REMOTETYPE_UNPLUGGED: + case REMOTETYPE_UNPLUGGED: _remote_type=REMOTETYPE_H100_LCD; DEBUGF("Changed remote type to H100\n"); break; @@ -451,288 +624,10 @@ break; } break; - case SDLK_KP4: - case SDLK_LEFT: - new_btn = BUTTON_LEFT; - break; - case SDLK_KP6: - case SDLK_RIGHT: - new_btn = BUTTON_RIGHT; - break; - case SDLK_KP8: - case SDLK_UP: - new_btn = BUTTON_UP; - break; - case SDLK_KP2: - case SDLK_DOWN: - new_btn = BUTTON_DOWN; - break; - case SDLK_KP_PLUS: - case SDLK_F8: - new_btn = BUTTON_ON; - break; - case SDLK_KP_ENTER: - case SDLK_RETURN: - case SDLK_a: - new_btn = BUTTON_OFF; - break; - case SDLK_KP_DIVIDE: - case SDLK_F1: - new_btn = BUTTON_REC; - break; - case SDLK_KP5: - case SDLK_SPACE: - new_btn = BUTTON_SELECT; - break; - case SDLK_KP_PERIOD: - case SDLK_INSERT: - new_btn = BUTTON_MODE; - break; +#endif -#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD - case SDLK_KP4: - case SDLK_LEFT: - new_btn = BUTTON_LEFT; - break; - case SDLK_KP6: - case SDLK_RIGHT: - new_btn = BUTTON_RIGHT; - break; - case SDLK_KP8: - case SDLK_UP: - new_btn = BUTTON_UP; - break; - case SDLK_KP2: - case SDLK_DOWN: - new_btn = BUTTON_DOWN; - break; - case SDLK_KP_PLUS: - case SDLK_F8: - new_btn = BUTTON_PLAY; - break; - case SDLK_KP_ENTER: - case SDLK_RETURN: - case SDLK_a: - new_btn = BUTTON_EQ; - break; - case SDLK_KP5: - case SDLK_SPACE: - new_btn = BUTTON_SELECT; - break; - case SDLK_KP_PERIOD: - case SDLK_INSERT: - new_btn = BUTTON_MODE; - break; - -#elif CONFIG_KEYPAD == ONDIO_PAD - case SDLK_KP4: - case SDLK_LEFT: - new_btn = BUTTON_LEFT; - break; - case SDLK_KP6: - case SDLK_RIGHT: - new_btn = BUTTON_RIGHT; - break; - case SDLK_KP8: - case SDLK_UP: - new_btn = BUTTON_UP; - break; - case SDLK_KP2: - case SDLK_DOWN: - new_btn = BUTTON_DOWN; - break; - case SDLK_KP_ENTER: - case SDLK_RETURN: - case SDLK_a: - new_btn = BUTTON_OFF; - break; - case SDLK_KP_PERIOD: - case SDLK_INSERT: - new_btn = BUTTON_MENU; - break; - -#elif CONFIG_KEYPAD == PLAYER_PAD - case SDLK_KP4: - case SDLK_LEFT: - new_btn = BUTTON_LEFT; - break; - case SDLK_KP6: - case SDLK_RIGHT: - new_btn = BUTTON_RIGHT; - break; - case SDLK_KP8: - case SDLK_UP: - new_btn = BUTTON_PLAY; - break; - case SDLK_KP2: - case SDLK_DOWN: - new_btn = BUTTON_STOP; - break; - case SDLK_KP_PLUS: - case SDLK_F8: - new_btn = BUTTON_ON; - break; - case SDLK_KP_PERIOD: - case SDLK_INSERT: - new_btn = BUTTON_MENU; - break; - -#elif CONFIG_KEYPAD == RECORDER_PAD - case SDLK_KP4: - case SDLK_LEFT: - new_btn = BUTTON_LEFT; - break; - case SDLK_KP6: - case SDLK_RIGHT: - new_btn = BUTTON_RIGHT; - break; - case SDLK_KP8: - case SDLK_UP: - new_btn = BUTTON_UP; - break; - case SDLK_KP2: - case SDLK_DOWN: - new_btn = BUTTON_DOWN; - break; - case SDLK_KP_PLUS: - case SDLK_F8: - new_btn = BUTTON_ON; - break; - case SDLK_KP_ENTER: - case SDLK_RETURN: - case SDLK_a: - new_btn = BUTTON_OFF; - break; - case SDLK_KP_DIVIDE: - case SDLK_F1: - new_btn = BUTTON_F1; - break; - case SDLK_KP_MULTIPLY: - case SDLK_F2: - new_btn = BUTTON_F2; - break; - case SDLK_KP_MINUS: - case SDLK_F3: - new_btn = BUTTON_F3; - break; - case SDLK_KP5: - case SDLK_SPACE: - new_btn = BUTTON_PLAY; - break; - -#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD - case SDLK_KP4: - case SDLK_LEFT: - new_btn = BUTTON_LEFT; - break; - case SDLK_KP6: - case SDLK_RIGHT: - new_btn = BUTTON_RIGHT; - break; - case SDLK_KP8: - case SDLK_UP: - new_btn = BUTTON_UP; - break; - case SDLK_KP2: - case SDLK_DOWN: - new_btn = BUTTON_DOWN; - break; - case SDLK_KP_PLUS: - case SDLK_F8: - new_btn = BUTTON_ON; - break; - case SDLK_KP_ENTER: - case SDLK_RETURN: - case SDLK_a: - new_btn = BUTTON_OFF; - break; - case SDLK_KP_DIVIDE: - case SDLK_F1: - new_btn = BUTTON_F1; - break; - case SDLK_KP_MULTIPLY: - case SDLK_F2: - new_btn = BUTTON_F2; - break; - case SDLK_KP_MINUS: - case SDLK_F3: - new_btn = BUTTON_F3; - break; - case SDLK_KP5: - case SDLK_SPACE: - new_btn = BUTTON_SELECT; - break; - -#elif CONFIG_KEYPAD == SANSA_E200_PAD - case SDLK_KP4: - case SDLK_LEFT: - new_btn = BUTTON_LEFT; - break; - case SDLK_KP6: - case SDLK_RIGHT: - new_btn = BUTTON_RIGHT; - break; - case SDLK_KP8: - case SDLK_UP: - new_btn = BUTTON_SCROLL_BACK; - break; - case SDLK_KP2: - case SDLK_DOWN: - new_btn = BUTTON_SCROLL_FWD; - break; - case SDLK_KP9: - new_btn = BUTTON_UP; - break; - case SDLK_KP3: - new_btn = BUTTON_DOWN; - break; - case SDLK_KP1: - new_btn = BUTTON_POWER; - break; - case SDLK_KP7: - new_btn = BUTTON_REC; - break; - case SDLK_KP5: - case SDLK_SPACE: - new_btn = BUTTON_SELECT; - break; - -#elif CONFIG_KEYPAD == SANSA_C200_PAD - case SDLK_KP4: - case SDLK_LEFT: - new_btn = BUTTON_LEFT; - break; - case SDLK_KP6: - case SDLK_RIGHT: - new_btn = BUTTON_RIGHT; - break; - case SDLK_KP8: - case SDLK_UP: - new_btn = BUTTON_UP; - break; - case SDLK_KP2: - case SDLK_DOWN: - new_btn = BUTTON_DOWN; - break; - case SDLK_KP3: - new_btn = BUTTON_POWER; - break; - case SDLK_KP1: - new_btn = BUTTON_REC; - break; - case SDLK_KP5: - case SDLK_KP_ENTER: - case SDLK_RETURN: - new_btn = BUTTON_SELECT; - break; - case SDLK_KP7: - new_btn = BUTTON_VOL_DOWN; - break; - case SDLK_KP9: - new_btn = BUTTON_VOL_UP; - break; - -#elif CONFIG_KEYPAD == MROBE500_PAD +/* Mrobe remote specific keys */ +#ifdef UI_REMOTE_TYPE_MROBE case SDLK_F9: new_btn = BUTTON_RC_HEART; break; @@ -745,189 +640,21 @@ case SDLK_F12: new_btn = BUTTON_RC_VOL_UP; break; - case SDLK_LEFT: - new_btn = BUTTON_LEFT; - break; - case SDLK_RIGHT: - new_btn = BUTTON_RIGHT; - break; - case SDLK_UP: + case SDLK_F7: new_btn = BUTTON_RC_PLAY; break; - case SDLK_DOWN: + case SDLK_F6: new_btn = BUTTON_RC_DOWN; break; - case SDLK_F8: - case SDLK_ESCAPE: - new_btn = BUTTON_POWER; - break; -#elif CONFIG_KEYPAD == MROBE100_PAD - case SDLK_KP1: - new_btn = BUTTON_DISPLAY; - break; - case SDLK_KP7: - new_btn = BUTTON_MENU; - break; - case SDLK_KP9: - new_btn = BUTTON_PLAY; - break; - case SDLK_KP4: - case SDLK_LEFT: - new_btn = BUTTON_LEFT; - break; - case SDLK_KP6: - case SDLK_RIGHT: - new_btn = BUTTON_RIGHT; - break; - case SDLK_KP8: - case SDLK_UP: - new_btn = BUTTON_UP; - break; - case SDLK_KP2: - case SDLK_DOWN: - new_btn = BUTTON_DOWN; - break; - case SDLK_KP5: - case SDLK_SPACE: - new_btn = BUTTON_SELECT; - break; - case SDLK_KP_MULTIPLY: - case SDLK_F8: - case SDLK_ESCAPE: - new_btn = BUTTON_POWER; - break; - -#elif CONFIG_KEYPAD == COWOND2_PAD - case SDLK_ESCAPE: - new_btn = BUTTON_POWER; - break; - case SDLK_KP_PLUS: - new_btn = BUTTON_PLUS; - break; - case SDLK_KP_MINUS: - new_btn = BUTTON_MINUS; - break; - case SDLK_KP_ENTER: - new_btn = BUTTON_MENU; - break; +#endif -#elif CONFIG_KEYPAD == CREATIVEZVM_PAD - case SDLK_KP1: - new_btn = BUTTON_BACK; - break; - case SDLK_KP3: - new_btn = BUTTON_MENU; - break; - case SDLK_KP7: - new_btn = BUTTON_CUSTOM; - break; - case SDLK_KP9: - new_btn = BUTTON_PLAY; - break; - case SDLK_KP4: - case SDLK_LEFT: - new_btn = BUTTON_LEFT; - break; - case SDLK_KP6: - case SDLK_RIGHT: - new_btn = BUTTON_RIGHT; - break; - case SDLK_KP8: - case SDLK_UP: - new_btn = BUTTON_UP; - break; - case SDLK_KP2: - case SDLK_DOWN: - new_btn = BUTTON_DOWN; - break; - case SDLK_KP5: - case SDLK_SPACE: - new_btn = BUTTON_SELECT; - break; - case SDLK_KP_MULTIPLY: - case SDLK_F8: - case SDLK_ESCAPE: - new_btn = BUTTON_POWER; - break; -#elif CONFIG_KEYPAD == CREATIVEZV_PAD - case SDLK_KP1: - new_btn = BUTTON_PREV; - break; - case SDLK_KP3: - new_btn = BUTTON_NEXT; - break; - case SDLK_KP7: - new_btn = BUTTON_BACK; - break; - case SDLK_p: - new_btn = BUTTON_PLAY; - break; - case SDLK_KP9: - new_btn = BUTTON_MENU; - break; - case SDLK_KP4: - case SDLK_LEFT: - new_btn = BUTTON_LEFT; - break; - case SDLK_KP6: - case SDLK_RIGHT: - new_btn = BUTTON_RIGHT; - break; - case SDLK_KP8: - case SDLK_UP: - new_btn = BUTTON_UP; - break; - case SDLK_KP2: - case SDLK_DOWN: - new_btn = BUTTON_DOWN; - break; - case SDLK_KP5: - case SDLK_SPACE: - new_btn = BUTTON_SELECT; - break; - case SDLK_KP_MULTIPLY: - case SDLK_F8: - case SDLK_ESCAPE: - new_btn = BUTTON_POWER; - break; - case SDLK_z: - new_btn = BUTTON_VOL_DOWN; - break; - case SDLK_s: - new_btn = BUTTON_VOL_UP; - -#elif CONFIG_KEYPAD == MEIZU_M6SL_PAD - case SDLK_KP1: - new_btn = BUTTON_PREV; - break; - case SDLK_KP3: - new_btn = BUTTON_NEXT; - break; - case SDLK_KP_ENTER: - case SDLK_RETURN: - case SDLK_a: - new_btn = BUTTON_PLAY; - break; - case SDLK_KP_PERIOD: - case SDLK_INSERT: - new_btn = BUTTON_MENU; - break; - case SDLK_KP8: - case SDLK_UP: - new_btn = BUTTON_UP; - break; - case SDLK_KP2: - case SDLK_DOWN: - new_btn = BUTTON_DOWN; - break; - case SDLK_KP5: - case SDLK_SPACE: - new_btn = BUTTON_SELECT; - break; -#else +#ifndef CONFIG_KEYPAD #error No keymap defined! -#endif /* CONFIG_KEYPAD */ - case SDLK_KP0: +#elif (CONFIG_KEYPAD == 0) +#error No keymap defined! +#endif + +/* Screen dump */ case SDLK_F5: if(pressed) { @@ -935,8 +662,15 @@ return; } break; + +/* Keyboard Usage */ + case SDLK_SLASH: + case SDLK_BACKQUOTE: + if (!pressed) + button_usage(); + return; } - + if (pressed) btn |= new_btn; else @@ -1140,8 +874,10 @@ } } #endif + void button_init(void) { + button_usage(); #ifdef HAVE_TOUCHSCREEN tick_add_task(mouse_tick_task); #endif Index: uisimulator/sdl/uisdl.h =================================================================== --- uisimulator/sdl/uisdl.h (revision 18437) +++ uisimulator/sdl/uisdl.h (working copy) @@ -39,6 +39,11 @@ #define UI_LCD_POSY 104 /* y position of lcd (96 for real aspect) */ #define UI_LCD_WIDTH 112 #define UI_LCD_HEIGHT 64 /* (80 for real aspect) */ +#define UI_KEYS_LEFT_RIGHT +#define UI_KEYS_UP_DOWN +#define UI_KEYS_POWER_ON_OFF +#define UI_KEY_PLAY +#define UI_KEYS_FUNCTION_KEYS #elif defined(ARCHOS_PLAYER) #define UI_TITLE "Jukebox Player" @@ -52,6 +57,11 @@ #define UI_LCD_POSY 116 /* y position of lcd */ #define UI_LCD_WIDTH 132 #define UI_LCD_HEIGHT 64 +#define UI_KEYS_LEFT_RIGHT +#define UI_KEY_POWER_ON +#define UI_KEY_STOP +#define UI_KEY_MENU +#define UI_KEY_PLAY #elif defined(ARCHOS_FMRECORDER) || defined(ARCHOS_RECORDERV2) #define UI_TITLE "Jukebox FM Recorder" @@ -65,6 +75,11 @@ #define UI_LCD_POSY 77 /* y position of lcd (69 for real aspect) */ #define UI_LCD_WIDTH 112 #define UI_LCD_HEIGHT 64 /* (80 for real aspect) */ +#define UI_KEYS_LEFT_RIGHT +#define UI_KEYS_UP_DOWN +#define UI_KEYS_POWER_ON_OFF +#define UI_KEY_PLAY +#define UI_KEYS_FUNCTION_KEYS #elif defined(ARCHOS_ONDIOSP) || defined(ARCHOS_ONDIOFM) #define UI_TITLE "Ondio" @@ -78,6 +93,11 @@ #define UI_LCD_POSY 82 /* y position of lcd (74 for real aspect) */ #define UI_LCD_WIDTH 112 #define UI_LCD_HEIGHT 64 /* (80 for real aspect) */ +#define UI_KEYS_LEFT_RIGHT +#define UI_KEYS_UP_DOWN +#define UI_KEY_MENU +#define UI_KEY_SPECIAL BUTTON_OFF +#define UI_KEY_SPECIAL_STR "Off" #elif defined(IRIVER_H120) || defined(IRIVER_H100) #define UI_TITLE "iriver H1x0" @@ -99,6 +119,13 @@ #define UI_REMOTE_POSY 403 /* y position of remote lcd */ #define UI_REMOTE_WIDTH 128 #define UI_REMOTE_HEIGHT 64 +#define UI_REMOTE_TYPE_IRIVER +#define UI_KEYS_LEFT_RIGHT +#define UI_KEYS_UP_DOWN +#define UI_KEYS_POWER_ON_OFF +#define UI_KEY_SELECT +#define UI_KEY_MODE +#define UI_KEY_RECORD #elif defined(IRIVER_H300) #define UI_TITLE "iriver H300" @@ -115,6 +142,13 @@ #define UI_REMOTE_POSY 478 /* y position of remote lcd */ #define UI_REMOTE_WIDTH 128 #define UI_REMOTE_HEIGHT 64 +#define UI_REMOTE_TYPE_IRIVER +#define UI_KEYS_LEFT_RIGHT +#define UI_KEYS_UP_DOWN +#define UI_KEYS_POWER_ON_OFF +#define UI_KEY_SELECT +#define UI_KEY_MODE +#define UI_KEY_RECORD #elif defined(IPOD_1G2G) #define UI_TITLE "iPod 1G/2G" @@ -128,6 +162,11 @@ #define UI_LCD_POSY 12 /* y position of lcd */ #define UI_LCD_WIDTH 160 #define UI_LCD_HEIGHT 128 +#define UI_KEYS_LEFT_RIGHT +#define UI_KEYS_SCROLL_BACK_FORWARD +#define UI_KEY_SELECT +#define UI_KEY_MENU +#define UI_KEY_PLAY #elif defined(IPOD_3G) #define UI_TITLE "iPod 3G" @@ -141,6 +180,11 @@ #define UI_LCD_POSY 16 /* y position of lcd */ #define UI_LCD_WIDTH 160 #define UI_LCD_HEIGHT 128 +#define UI_KEYS_LEFT_RIGHT +#define UI_KEYS_SCROLL_BACK_FORWARD +#define UI_KEY_SELECT +#define UI_KEY_MENU +#define UI_KEY_PLAY #elif defined(IPOD_4G) #define UI_TITLE "iPod 4G" @@ -154,6 +198,11 @@ #define UI_LCD_POSY 14 /* y position of lcd */ #define UI_LCD_WIDTH 160 #define UI_LCD_HEIGHT 128 +#define UI_KEYS_LEFT_RIGHT +#define UI_KEYS_SCROLL_BACK_FORWARD +#define UI_KEY_SELECT +#define UI_KEY_MENU +#define UI_KEY_PLAY #elif defined(IPOD_MINI) || defined(IPOD_MINI2G) #define UI_TITLE "iPod mini" @@ -213,6 +262,12 @@ #define UI_REMOTE_POSY 462 /* y position of remote lcd */ #define UI_REMOTE_WIDTH 128 #define UI_REMOTE_HEIGHT 96 +#define UI_KEYS_LEFT_RIGHT +#define UI_KEYS_UP_DOWN +#define UI_KEY_POWER +#define UI_KEY_SELECT +#define UI_KEY_PLAY +#define UI_KEY_RECORD #elif defined(IAUDIO_M5) #define UI_TITLE "iAudio M5" @@ -233,6 +288,12 @@ #define UI_REMOTE_POSY 509 /* y position of remote lcd */ #define UI_REMOTE_WIDTH 128 #define UI_REMOTE_HEIGHT 96 +#define UI_KEYS_LEFT_RIGHT +#define UI_KEYS_UP_DOWN +#define UI_KEY_POWER +#define UI_KEY_SELECT +#define UI_KEY_PLAY +#define UI_KEY_RECORD #elif defined(IAUDIO_M3) #define UI_TITLE "iAudio M3" @@ -246,6 +307,11 @@ #define UI_LCD_FGCOLORLIGHT 0, 0, 0 /* foreground color of LCD (backlight) */ #define UI_LCD_WIDTH LCD_WIDTH /* * 1.5 */ #define UI_LCD_HEIGHT LCD_HEIGHT /* * 1.5 */ +#define UI_KEYS_LEFT_RIGHT +#define UI_KEYS_VOLUME_UP_DOWN +#define UI_KEY_MODE +#define UI_KEY_PLAY +#define UI_KEY_RECORD #elif defined(GIGABEAT_F) #define UI_TITLE "Toshiba Gigabeat" @@ -256,6 +322,14 @@ #define UI_LCD_POSY 60 /* y position of lcd */ #define UI_LCD_WIDTH 240 #define UI_LCD_HEIGHT 320 +#define UI_KEYS_LEFT_RIGHT +#define UI_KEYS_UP_DOWN +#define UI_KEYS_VOLUME_UP_DOWN +#define UI_KEY_POWER +#define UI_KEY_SELECT +#define UI_KEY_MENU +#define UI_KEY_SPECIAL BUTTON_A +#define UI_KEY_SPECIAL_STR "A button" #elif defined(GIGABEAT_S) #define UI_TITLE "Toshiba Gigabeat" @@ -266,6 +340,13 @@ #define UI_LCD_POSY 90 /* y position of lcd */ #define UI_LCD_WIDTH 240 #define UI_LCD_HEIGHT 320 +#define UI_KEYS_LEFT_RIGHT +#define UI_KEYS_UP_DOWN +#define UI_KEY_POWER +#define UI_KEY_SELECT +#define UI_KEY_MENU +#define UI_KEY_PLAY +#define UI_KEY_BACK #elif defined(MROBE_500) #define UI_TITLE "Olympus M:Robe 500" @@ -282,6 +363,9 @@ #define UI_REMOTE_POSY 403 /* y position of remote lcd */ #define UI_REMOTE_WIDTH 79 #define UI_REMOTE_HEIGHT 16 +#define UI_REMOTE_TYPE_MROBE +#define UI_KEYS_LEFT_RIGHT +#define UI_KEY_POWER #elif defined(IRIVER_H10) #define UI_TITLE "iriver H10 20Gb" @@ -292,6 +376,12 @@ #define UI_LCD_POSY 30 /* y position of lcd (74 for real aspect) */ #define UI_LCD_WIDTH LCD_WIDTH /* * 1.5 */ #define UI_LCD_HEIGHT LCD_HEIGHT /* * 1.5 */ +#define UI_KEYS_LEFT_RIGHT +#define UI_KEYS_SCROLL_UP_DOWN +#define UI_KEY_POWER +#define UI_KEY_PLAY +#define UI_KEY_REW +#define UI_KEY_FF #elif defined(IRIVER_H10_5GB) #define UI_TITLE "iriver H10 5/6Gb" @@ -302,6 +392,12 @@ #define UI_LCD_POSY 45 /* y position of lcd (74 for real aspect) */ #define UI_LCD_WIDTH LCD_WIDTH /* * 1.5 */ #define UI_LCD_HEIGHT LCD_HEIGHT /* * 1.5 */ +#define UI_KEYS_LEFT_RIGHT +#define UI_KEYS_SCROLL_BACK_FORWARD +#define UI_KEY_POWER +#define UI_KEY_PLAY +#define UI_KEY_REW +#define UI_KEY_FF #elif defined(SANSA_E200) #define UI_TITLE "Sansa e200" @@ -312,6 +408,12 @@ #define UI_LCD_POSY 37 /* y position of lcd (74 for real aspect) */ #define UI_LCD_WIDTH LCD_WIDTH /* * 1.5 */ #define UI_LCD_HEIGHT LCD_HEIGHT /* * 1.5 */ +#define UI_KEYS_LEFT_RIGHT +#define UI_KEYS_UP_DOWN +#define UI_KEYS_SCROLL_BACK_FORWARD +#define UI_KEY_POWER +#define UI_KEY_SELECT +#define UI_KEY_RECORD #elif defined(SANSA_C200) #define UI_TITLE "Sansa c200" @@ -322,6 +424,12 @@ #define UI_LCD_POSY 35 /* y position of lcd (74 for real aspect) */ #define UI_LCD_WIDTH LCD_WIDTH /* * 1.5 */ #define UI_LCD_HEIGHT LCD_HEIGHT /* * 1.5 */ +#define UI_KEYS_LEFT_RIGHT +#define UI_KEYS_UP_DOWN +#define UI_KEYS_VOLUME_UP_DOWN +#define UI_KEY_POWER +#define UI_KEY_SELECT +#define UI_KEY_RECORD #elif defined(IRIVER_IFP7XX) #define UI_TITLE "iriver iFP7xx" @@ -335,7 +443,14 @@ #define UI_LCD_POSY 54 /* y position of lcd */ #define UI_LCD_WIDTH LCD_WIDTH /* * 1.5 */ #define UI_LCD_HEIGHT LCD_HEIGHT /* * 1.5 */ - +#define UI_KEYS_LEFT_RIGHT +#define UI_KEYS_UP_DOWN +#define UI_KEY_SELECT +#define UI_KEY_MODE +#define UI_KEY_PLAY +#define UI_KEY_SPECIAL BUTTON_EQ +#define UI_KEY_SPECIAL_STR "Equalizer" + #elif defined(ARCHOS_AV300) #define UI_TITLE "Archos AV300" /* We are temporarily using a 2bpp LCD driver and dummy bitmap */ @@ -349,6 +464,11 @@ #define UI_LCD_BGCOLORLIGHT 173, 216, 230 /* bkgnd color of LCD (backlight) */ #define UI_LCD_FGCOLOR 0, 0, 0 /* foreground color of LCD (no backlight) */ #define UI_LCD_FGCOLORLIGHT 0, 0, 0 /* foreground color of LCD (backlight) */ +#define UI_KEYS_LEFT_RIGHT +#define UI_KEYS_UP_DOWN +#define UI_KEYS_POWER_ON_OFF +#define UI_KEY_SELECT +#define UI_KEYS_FUNCTION_KEYS #elif defined(MROBE_100) #define UI_TITLE "Olympus M:Robe 100" @@ -362,6 +482,14 @@ #define UI_LCD_POSY 25 /* y position of lcd */ #define UI_LCD_WIDTH 160 #define UI_LCD_HEIGHT 128 +#define UI_KEYS_LEFT_RIGHT +#define UI_KEYS_UP_DOWN +#define UI_KEY_POWER +#define UI_KEY_SELECT +#define UI_KEY_MENU +#define UI_KEY_PLAY +#define UI_KEY_SPECIAL BUTTON_DISPLAY +#define UI_KEY_SPECIAL_STR "Display" #elif defined(COWON_D2) #define UI_TITLE "Cowon D2" @@ -375,6 +503,9 @@ #define UI_LCD_BGCOLORLIGHT 192, 192, 192 /* bkgnd color of LCD (backlight) */ #define UI_LCD_FGCOLOR 0, 0, 0 /* foreground color of LCD (no backlight) */ #define UI_LCD_FGCOLORLIGHT 0, 0, 0 /* foreground color of LCD (backlight) */ +#define UI_KEYS_PLUS_MINUS +#define UI_KEY_POWER +#define UI_KEY_MENU #elif defined(CREATIVE_ZVM) || defined(CREATIVE_ZVM60GB) #ifdef CREATIVE_ZVM @@ -392,6 +523,15 @@ #define UI_LCD_BGCOLORLIGHT 192, 192, 192 /* bkgnd color of LCD (backlight) */ #define UI_LCD_FGCOLOR 0, 0, 0 /* foreground color of LCD (no backlight) */ #define UI_LCD_FGCOLORLIGHT 0, 0, 0 /* foreground color of LCD (backlight) */ +#define UI_KEYS_LEFT_RIGHT +#define UI_KEYS_UP_DOWN +#define UI_KEY_POWER +#define UI_KEY_SELECT +#define UI_KEY_MENU +#define UI_KEY_PLAY +#define UI_KEY_BACK +#define UI_KEY_SPECIAL BUTTON_CUSTOM +#define UI_KEY_SPECIAL_STR "Custom button" #elif defined(CREATIVE_ZV) #define UI_TITLE "Creative Zen Vision" @@ -405,6 +545,17 @@ #define UI_LCD_BGCOLORLIGHT 192, 192, 192 /* bkgnd color of LCD (backlight) */ #define UI_LCD_FGCOLOR 0, 0, 0 /* foreground color of LCD (no backlight) */ #define UI_LCD_FGCOLORLIGHT 0, 0, 0 /* foreground color of LCD (backlight) */ +#define UI_KEYS_LEFT_RIGHT +#define UI_KEYS_UP_DOWN +#define UI_KEYS_VOLUME_UP_DOWN +#define UI_KEY_POWER +#define UI_KEY_SELECT +#define UI_KEY_MENU +#define UI_KEY_PLAY +#define UI_KEY_PREV +#define UI_KEY_NEXT +#define UI_KEY_SPECIAL BUTTON_BACK +#define UI_KEY_SPECIAL_STR "Back" #elif defined(MEIZU_M6SL) #define UI_TITLE "Meizu M6" @@ -418,6 +569,11 @@ #define UI_LCD_BGCOLORLIGHT 192, 192, 192 /* bkgnd color of LCD (backlight) */ #define UI_LCD_FGCOLOR 0, 0, 0 /* foreground color of LCD (no backlight) */ #define UI_LCD_FGCOLORLIGHT 0, 0, 0 /* foreground color of LCD (backlight) */ +#define UI_KEYS_LEFT_RIGHT +#define UI_KEYS_UP_DOWN +#define UI_KEY_SELECT +#define UI_KEY_MENU +#define UI_KEY_PLAY #endif extern SDL_Surface *gui_surface;