/*
    libpspirkeyb: PSP IR Keyboard Library (http://pspirkeyb.podzone.net)
    Copyright (C) 2007 Harald Fielker <harald.fielker@web.de>

    This program can be distributed under the terms of the GNU LGPL.
    See the file LICENSE.
*/

#include <stdlib.h>
#include "pspirkeyb_rawkeys.h"

struct KeyName keys[] =
{
		{KEY_RESERVED	, "KEY_RESERVED"},
		{KEY_ESC	, "KEY_ESC"},
		{KEY_1	, "KEY_1"},
		{KEY_2	, "KEY_2"},
		{KEY_3	, "KEY_3"},
		{KEY_4	, "KEY_4"},
		{KEY_5	, "KEY_5"},
		{KEY_6	, "KEY_6"},
		{KEY_7	, "KEY_7"},
		{KEY_8	, "KEY_8"},
		{KEY_9	, "KEY_9"},
		{KEY_0	, "KEY_0"},
		{KEY_MINUS	, "KEY_MINUS"},
		{KEY_EQUAL	, "KEY_EQUAL"},
		{KEY_BACKSPACE	, "KEY_BACKSPACE"},
		{KEY_TAB	, "KEY_TAB"},
		{KEY_Q	, "KEY_Q"},
		{KEY_W	, "KEY_W"},
		{KEY_E	, "KEY_E"},
		{KEY_R	, "KEY_R"},
		{KEY_T	, "KEY_T"},
		{KEY_Y	, "KEY_Y"},
		{KEY_U	, "KEY_U"},
		{KEY_I	, "KEY_I"},
		{KEY_O	, "KEY_O"},
		{KEY_P	, "KEY_P"},
		{KEY_LEFTBRACE	, "KEY_LEFTBRACE"},
		{KEY_RIGHTBRACE	, "KEY_RIGHTBRACE"},
		{KEY_ENTER	, "KEY_ENTER"},
		{KEY_LEFTCTRL	, "KEY_LEFTCTRL"},
		{KEY_A	, "KEY_A"},
		{KEY_S	, "KEY_S"},
		{KEY_D	, "KEY_D"},
		{KEY_F	, "KEY_F"},
		{KEY_G	, "KEY_G"},
		{KEY_H	, "KEY_H"},
		{KEY_J	, "KEY_J"},
		{KEY_K	, "KEY_K"},
		{KEY_L	, "KEY_L"},
		{KEY_SEMICOLON	, "KEY_SEMICOLON"},
		{KEY_APOSTROPHE	, "KEY_APOSTROPHE"},
		{KEY_GRAVE	, "KEY_GRAVE"},
		{KEY_LEFTSHIFT	, "KEY_LEFTSHIFT"},
		{KEY_BACKSLASH	, "KEY_BACKSLASH"},
		{KEY_Z	, "KEY_Z"},
		{KEY_X	, "KEY_X"},
		{KEY_C	, "KEY_C"},
		{KEY_V	, "KEY_V"},
		{KEY_B	, "KEY_B"},
		{KEY_N	, "KEY_N"},
		{KEY_M	, "KEY_M"},
		{KEY_COMMA	, "KEY_COMMA"},
		{KEY_DOT	, "KEY_DOT"},
		{KEY_SLASH	, "KEY_SLASH"},
		{KEY_RIGHTSHIFT	, "KEY_RIGHTSHIFT"},
		{KEY_KPASTERISK	, "KEY_KPASTERISK"},
		{KEY_LEFTALT	, "KEY_LEFTALT"},
		{KEY_SPACE	, "KEY_SPACE"},
		{KEY_CAPSLOCK	, "KEY_CAPSLOCK"},
		{KEY_F1	, "KEY_F1"},
		{KEY_F2	, "KEY_F2"},
		{KEY_F3	, "KEY_F3"},
		{KEY_F4	, "KEY_F4"},
		{KEY_F5	, "KEY_F5"},
		{KEY_F6	, "KEY_F6"},
		{KEY_F7	, "KEY_F7"},
		{KEY_F8	, "KEY_F8"},
		{KEY_F9	, "KEY_F9"},
		{KEY_F10	, "KEY_F10"},
		{KEY_NUMLOCK	, "KEY_NUMLOCK"},
		{KEY_SCROLLLOCK	, "KEY_SCROLLLOCK"},
		{KEY_KP7	, "KEY_KP7"},
		{KEY_KP8	, "KEY_KP8"},
		{KEY_KP9	, "KEY_KP9"},
		{KEY_KPMINUS	, "KEY_KPMINUS"},
		{KEY_KP4	, "KEY_KP4"},
		{KEY_KP5	, "KEY_KP5"},
		{KEY_KP6	, "KEY_KP6"},
		{KEY_KPPLUS	, "KEY_KPPLUS"},
		{KEY_KP1	, "KEY_KP1"},
		{KEY_KP2	, "KEY_KP2"},
		{KEY_KP3	, "KEY_KP3"},
		{KEY_KP0	, "KEY_KP0"},
		{KEY_KPDOT	, "KEY_KPDOT"},
		{KEY_103RD	, "KEY_103RD"},
		{KEY_F13	, "KEY_F13"},
		{KEY_102ND	, "KEY_102ND"},
		{KEY_F11	, "KEY_F11"},
		{KEY_F12	, "KEY_F12"},
		{KEY_F14	, "KEY_F14"},
		{KEY_F15	, "KEY_F15"},
		{KEY_F16	, "KEY_F16"},
		{KEY_F17	, "KEY_F17"},
		{KEY_F18	, "KEY_F18"},
		{KEY_F19	, "KEY_F19"},
		{KEY_F20	, "KEY_F20"},
		{KEY_KPENTER	, "KEY_KPENTER"},
		{KEY_RIGHTCTRL	, "KEY_RIGHTCTRL"},
		{KEY_KPSLASH	, "KEY_KPSLASH"},
		{KEY_SYSRQ	, "KEY_SYSRQ"},
		{KEY_RIGHTALT	, "KEY_RIGHTALT"},
		{KEY_LINEFEED	, "KEY_LINEFEED"},
		{KEY_HOME	, "KEY_HOME"},
		{KEY_UP	, "KEY_UP"},
		{KEY_PAGEUP	, "KEY_PAGEUP"},
		{KEY_LEFT	, "KEY_LEFT"},
		{KEY_RIGHT	, "KEY_RIGHT"},
		{KEY_END	, "KEY_END"},
		{KEY_DOWN	, "KEY_DOWN"},
		{KEY_PAGEDOWN	, "KEY_PAGEDOWN"},
		{KEY_INSERT	, "KEY_INSERT"},
		{KEY_DELETE	, "KEY_DELETE"},
		{KEY_MACRO	, "KEY_MACRO"},
		{KEY_MUTE	, "KEY_MUTE"},
		{KEY_VOLUMEDOWN	, "KEY_VOLUMEDOWN"},
		{KEY_VOLUMEUP	, "KEY_VOLUMEUP"},
		{KEY_POWER	, "KEY_POWER"},
		{KEY_KPEQUAL	, "KEY_KPEQUAL"},
		{KEY_KPPLUSMINUS	, "KEY_KPPLUSMINUS"},
		{KEY_PAUSE	, "KEY_PAUSE"},
		{KEY_F21	, "KEY_F21"},
		{KEY_F22	, "KEY_F22"},
		{KEY_F23	, "KEY_F23"},
		{KEY_F24	, "KEY_F24"},
		{KEY_KPCOMMA	, "KEY_KPCOMMA"},
		{KEY_LEFTMETA	, "KEY_LEFTMETA"},
		{KEY_RIGHTMETA	, "KEY_RIGHTMETA"},
		{KEY_COMPOSE	, "KEY_COMPOSE"},
		{KEY_STOP	, "KEY_STOP"},
		{KEY_AGAIN	, "KEY_AGAIN"},
		{KEY_PROPS	, "KEY_PROPS"},
		{KEY_UNDO	, "KEY_UNDO"},
		{KEY_FRONT	, "KEY_FRONT"},
		{KEY_COPY	, "KEY_COPY"},
		{KEY_OPEN	, "KEY_OPEN"},
		{KEY_PASTE	, "KEY_PASTE"},
		{KEY_FIND	, "KEY_FIND"},
		{KEY_CUT	, "KEY_CUT"},
		{KEY_HELP	, "KEY_HELP"},
		{KEY_MENU	, "KEY_MENU"},
		{KEY_CALC	, "KEY_CALC"},
		{KEY_SETUP	, "KEY_SETUP"},
		{KEY_SLEEP	, "KEY_SLEEP"},
		{KEY_WAKEUP	, "KEY_WAKEUP"},
		{KEY_FILE	, "KEY_FILE"},
		{KEY_SENDFILE	, "KEY_SENDFILE"},
		{KEY_DELETEFILE	, "KEY_DELETEFILE"},
		{KEY_XFER	, "KEY_XFER"},
		{KEY_PROG1	, "KEY_PROG1"},
		{KEY_PROG2	, "KEY_PROG2"},
		{KEY_WWW	, "KEY_WWW"},
		{KEY_MSDOS	, "KEY_MSDOS"},
		{KEY_COFFEE	, "KEY_COFFEE"},
		{KEY_DIRECTION	, "KEY_DIRECTION"},
		{KEY_CYCLEWINDOWS	, "KEY_CYCLEWINDOWS"},
		{KEY_MAIL	, "KEY_MAIL"},
		{KEY_BOOKMARKS	, "KEY_BOOKMARKS"},
		{KEY_COMPUTER	, "KEY_COMPUTER"},
		{KEY_BACK	, "KEY_BACK"},
		{KEY_FORWARD	, "KEY_FORWARD"},
		{KEY_CLOSECD	, "KEY_CLOSECD"},
		{KEY_EJECTCD	, "KEY_EJECTCD"},
		{KEY_EJECTCLOSECD	, "KEY_EJECTCLOSECD"},
		{KEY_NEXTSONG	, "KEY_NEXTSONG"},
		{KEY_PLAYPAUSE	, "KEY_PLAYPAUSE"},
		{KEY_PREVIOUSSONG	, "KEY_PREVIOUSSONG"},
		{KEY_STOPCD	, "KEY_STOPCD"},
		{KEY_RECORD	, "KEY_RECORD"},
		{KEY_REWIND	, "KEY_REWIND"},
		{KEY_PHONE	, "KEY_PHONE"},
		{KEY_ISO	, "KEY_ISO"},
		{KEY_CONFIG	, "KEY_CONFIG"},
		{KEY_HOMEPAGE	, "KEY_HOMEPAGE"},
		{KEY_REFRESH	, "KEY_REFRESH"},
		{KEY_EXIT	, "KEY_EXIT"},
		{KEY_MOVE	, "KEY_MOVE"},
		{KEY_EDIT	, "KEY_EDIT"},
		{KEY_SCROLLUP	, "KEY_SCROLLUP"},
		{KEY_SCROLLDOWN	, "KEY_SCROLLDOWN"},
		{KEY_KPLEFTPAREN	, "KEY_KPLEFTPAREN"},
		{KEY_KPRIGHTPAREN	, "KEY_KPRIGHTPAREN"},
		{KEY_INTL1	, "KEY_INTL1"},
		{KEY_INTL2	, "KEY_INTL2"},
		{KEY_INTL3	, "KEY_INTL3"},
		{KEY_INTL4	, "KEY_INTL4"},
		{KEY_INTL5	, "KEY_INTL5"},
		{KEY_INTL6	, "KEY_INTL6"},
		{KEY_INTL7	, "KEY_INTL7"},
		{KEY_INTL8	, "KEY_INTL8"},
		{KEY_INTL9	, "KEY_INTL9"},
		{KEY_LANG1	, "KEY_LANG1"},
		{KEY_LANG2	, "KEY_LANG2"},
		{KEY_LANG3	, "KEY_LANG3"},
		{KEY_LANG4	, "KEY_LANG4"},
		{KEY_LANG5	, "KEY_LANG5"},
		{KEY_LANG6	, "KEY_LANG6"},
		{KEY_LANG7	, "KEY_LANG7"},
		{KEY_LANG8	, "KEY_LANG8"},
		{KEY_LANG9	, "KEY_LANG9"},
		{KEY_PLAYCD	, "KEY_PLAYCD"},
		{KEY_PAUSECD	, "KEY_PAUSECD"},
		{KEY_PROG3	, "KEY_PROG3"},
		{KEY_PROG4	, "KEY_PROG4"},
		{KEY_SUSPEND	, "KEY_SUSPEND"},
		{KEY_CLOSE	, "KEY_CLOSE"},
		{KEY_UNKNOWN	, "KEY_UNKNOWN"},
		{KEY_BRIGHTNESSDOWN	, "KEY_BRIGHTNESSDOWN"},
		{KEY_BRIGHTNESSUP	, "KEY_BRIGHTNESSUP"},
		{BTN_MISC	, "BTN_MISC"},
		{BTN_0	, "BTN_0"},
		{BTN_1	, "BTN_1"},
		{BTN_2	, "BTN_2"},
		{BTN_3	, "BTN_3"},
		{BTN_4	, "BTN_4"},
		{BTN_5	, "BTN_5"},
		{BTN_6	, "BTN_6"},
		{BTN_7	, "BTN_7"},
		{BTN_8	, "BTN_8"},
		{BTN_9	, "BTN_9"},
		{BTN_MOUSE	, "BTN_MOUSE"},
		{BTN_LEFT	, "BTN_LEFT"},
		{BTN_RIGHT	, "BTN_RIGHT"},
		{BTN_MIDDLE	, "BTN_MIDDLE"},
		{BTN_SIDE	, "BTN_SIDE"},
		{BTN_EXTRA	, "BTN_EXTRA"},
		{BTN_FORWARD	, "BTN_FORWARD"},
		{BTN_BACK	, "BTN_BACK"},
		{BTN_JOYSTICK	, "BTN_JOYSTICK"},
		{BTN_TRIGGER	, "BTN_TRIGGER"},
		{BTN_THUMB	, "BTN_THUMB"},
		{BTN_THUMB2	, "BTN_THUMB2"},
		{BTN_TOP	, "BTN_TOP"},
		{BTN_TOP2	, "BTN_TOP2"},
		{BTN_PINKIE	, "BTN_PINKIE"},
		{BTN_BASE	, "BTN_BASE"},
		{BTN_BASE2	, "BTN_BASE2"},
		{BTN_BASE3	, "BTN_BASE3"},
		{BTN_BASE4	, "BTN_BASE4"},
		{BTN_BASE5	, "BTN_BASE5"},
		{BTN_BASE6	, "BTN_BASE6"},
		{BTN_DEAD	, "BTN_DEAD"},
		{BTN_GAMEPAD	, "BTN_GAMEPAD"},
		{BTN_A	, "BTN_A"},
		{BTN_B	, "BTN_B"},
		{BTN_C	, "BTN_C"},
		{BTN_X	, "BTN_X"},
		{BTN_Y	, "BTN_Y"},
		{BTN_Z	, "BTN_Z"},
		{BTN_TL	, "BTN_TL"},
		{BTN_TR	, "BTN_TR"},
		{BTN_TL2	, "BTN_TL2"},
		{BTN_TR2	, "BTN_TR2"},
		{BTN_SELECT	, "BTN_SELECT"},
		{BTN_START	, "BTN_START"},
		{BTN_MODE	, "BTN_MODE"},
		{BTN_THUMBL	, "BTN_THUMBL"},
		{BTN_THUMBR	, "BTN_THUMBR"},
		{BTN_DIGI	, "BTN_DIGI"},
		{BTN_TOOL_PEN	, "BTN_TOOL_PEN"},
		{BTN_TOOL_RUBBER	, "BTN_TOOL_RUBBER"},
		{BTN_TOOL_BRUSH	, "BTN_TOOL_BRUSH"},
		{BTN_TOOL_PENCIL	, "BTN_TOOL_PENCIL"},
		{BTN_TOOL_AIRBRUSH	, "BTN_TOOL_AIRBRUSH"},
		{BTN_TOOL_FINGER	, "BTN_TOOL_FINGER"},
		{BTN_TOOL_MOUSE	, "BTN_TOOL_MOUSE"},
		{BTN_TOOL_LENS	, "BTN_TOOL_LENS"},
		{BTN_TOUCH	, "BTN_TOUCH"},
		{BTN_STYLUS	, "BTN_STYLUS"},
		{BTN_STYLUS2	, "BTN_STYLUS2"}
};

int g_maxKeys = ( sizeof( keys ) / sizeof( struct KeyName ) );

const char* pspIrKeybRawkeyName(unsigned int raw)
{
    int i;

    for( i=0; i < g_maxKeys; i++ )
    {
        struct KeyName *keyName = keys+i;
        
        if( keyName->raw == raw )
            return keyName->name;
    }

    return NULL;
}
