static void sdl_translate_key()

in modules/sdl_out/video.c [207:574]


static void sdl_translate_key(u32 SDLkey, GF_EventKey *evt)
{
	evt->flags = 0;
	evt->hw_code = SDLkey;
	switch (SDLkey) {
	case SDLK_BACKSPACE:
		evt->key_code = GF_KEY_BACKSPACE;
		break;
	case SDLK_TAB:
		evt->key_code = GF_KEY_TAB;
		break;
	case SDLK_CLEAR:
		evt->key_code = GF_KEY_CLEAR;
		break;
	case SDLK_PAUSE:
		evt->key_code = GF_KEY_PAUSE;
		break;
	case SDLK_ESCAPE:
		evt->key_code = GF_KEY_ESCAPE;
		break;
	case SDLK_SPACE:
		evt->key_code = GF_KEY_SPACE;
		break;

	case SDLK_KP_ENTER:
		evt->flags = GF_KEY_EXT_NUMPAD;
	case SDLK_RETURN:
		evt->key_code = GF_KEY_ENTER;
		break;

	case SDLK_KP_MULTIPLY:
		evt->flags = GF_KEY_EXT_NUMPAD;
	case SDLK_ASTERISK:
		evt->key_code = GF_KEY_STAR;
		break;
	case SDLK_KP_PLUS:
		evt->flags = GF_KEY_EXT_NUMPAD;
	case SDLK_PLUS:
		evt->key_code = GF_KEY_PLUS;
		break;
	case SDLK_KP_MINUS:
		evt->flags = GF_KEY_EXT_NUMPAD;
	case SDLK_MINUS:
		evt->key_code = GF_KEY_HYPHEN;
		break;
	case SDLK_KP_DIVIDE:
		evt->flags = GF_KEY_EXT_NUMPAD;
	case SDLK_SLASH:
		evt->key_code = GF_KEY_SLASH;
		break;

	case SDLK_KP_0:
		evt->flags = GF_KEY_EXT_NUMPAD;
	case SDLK_0:
		evt->key_code = GF_KEY_0;
		break;
	case SDLK_KP_1:
		evt->flags = GF_KEY_EXT_NUMPAD;
	case SDLK_1:
		evt->key_code = GF_KEY_1;
		break;
	case SDLK_KP_2:
		evt->flags = GF_KEY_EXT_NUMPAD;
	case SDLK_2:
		evt->key_code = GF_KEY_2;
		break;
	case SDLK_KP_3:
		evt->flags = GF_KEY_EXT_NUMPAD;
	case SDLK_3:
		evt->key_code = GF_KEY_3;
		break;
	case SDLK_KP_4:
		evt->flags = GF_KEY_EXT_NUMPAD;
	case SDLK_4:
		evt->key_code = GF_KEY_4;
		break;
	case SDLK_KP_5:
		evt->flags = GF_KEY_EXT_NUMPAD;
	case SDLK_5:
		evt->key_code = GF_KEY_5;
		break;
	case SDLK_KP_6:
		evt->flags = GF_KEY_EXT_NUMPAD;
	case SDLK_6:
		evt->key_code = GF_KEY_6;
		break;
	case SDLK_KP_7:
		evt->flags = GF_KEY_EXT_NUMPAD;
	case SDLK_7:
		evt->key_code = GF_KEY_7;
		break;
	case SDLK_KP_8:
		evt->flags = GF_KEY_EXT_NUMPAD;
	case SDLK_8:
		evt->key_code = GF_KEY_8;
		break;
	case SDLK_KP_9:
		evt->flags = GF_KEY_EXT_NUMPAD;
	case SDLK_9:
		evt->key_code = GF_KEY_9;
		break;
	case SDLK_KP_PERIOD:
		evt->flags = GF_KEY_EXT_NUMPAD;
	case SDLK_PERIOD:
		evt->key_code = GF_KEY_FULLSTOP;
		break;
	case SDLK_KP_EQUALS:
		evt->flags = GF_KEY_EXT_NUMPAD;
	case SDLK_EQUALS:
		evt->key_code = GF_KEY_EQUALS;
		break;

	case SDLK_EXCLAIM:
		evt->key_code = GF_KEY_EXCLAMATION;
		break;
	case SDLK_QUOTEDBL:
		evt->key_code = GF_KEY_QUOTATION;
		break;
	case SDLK_HASH:
		evt->key_code = GF_KEY_NUMBER;
		break;
	case SDLK_DOLLAR:
		evt->key_code = GF_KEY_DOLLAR;
		break;
	case SDLK_AMPERSAND:
		evt->key_code = GF_KEY_AMPERSAND;
		break;
	case SDLK_QUOTE:
		evt->key_code = GF_KEY_APOSTROPHE;
		break;
	case SDLK_LEFTPAREN:
		evt->key_code = GF_KEY_LEFTPARENTHESIS;
		break;
	case SDLK_RIGHTPAREN:
		evt->key_code = GF_KEY_RIGHTPARENTHESIS;
		break;
	case SDLK_COMMA:
		evt->key_code = GF_KEY_COMMA;
		break;
	case SDLK_COLON:
		evt->key_code = GF_KEY_COLON;
		break;
	case SDLK_SEMICOLON:
		evt->key_code = GF_KEY_SEMICOLON;
		break;
	case SDLK_LESS:
		evt->key_code = GF_KEY_LESSTHAN;
		break;
	case SDLK_GREATER:
		evt->key_code = GF_KEY_GREATERTHAN;
		break;
	case SDLK_QUESTION:
		evt->key_code = GF_KEY_QUESTION;
		break;
	case SDLK_AT:
		evt->key_code = GF_KEY_AT;
		break;
	case SDLK_LEFTBRACKET:
		evt->key_code = GF_KEY_LEFTSQUAREBRACKET;
		break;
	case SDLK_RIGHTBRACKET:
		evt->key_code = GF_KEY_RIGHTSQUAREBRACKET;
		break;
	case SDLK_BACKSLASH:
		evt->key_code = GF_KEY_BACKSLASH;
		break;
	case SDLK_UNDERSCORE:
		evt->key_code = GF_KEY_UNDERSCORE;
		break;
	case SDLK_BACKQUOTE:
		evt->key_code = GF_KEY_GRAVEACCENT;
		break;
	case SDLK_DELETE:
		evt->key_code = GF_KEY_DEL;
		break;
	case SDLK_UNDO:
		evt->key_code = GF_KEY_UNDO;
		break;

	case SDLK_UP:
		evt->key_code = GF_KEY_UP;
		break;
	case SDLK_DOWN:
		evt->key_code = GF_KEY_DOWN;
		break;
	case SDLK_RIGHT:
		evt->key_code = GF_KEY_RIGHT;
		break;
	case SDLK_LEFT:
		evt->key_code = GF_KEY_LEFT;
		break;
	case SDLK_INSERT:
		evt->key_code = GF_KEY_INSERT;
		break;
	case SDLK_HOME:
		evt->key_code = GF_KEY_HOME;
		break;
	case SDLK_END:
		evt->key_code = GF_KEY_END;
		break;
	case SDLK_PAGEUP:
		evt->key_code = GF_KEY_PAGEUP;
		break;
	case SDLK_PAGEDOWN:
		evt->key_code = GF_KEY_PAGEDOWN;
		break;
	case SDLK_F1:
		evt->key_code = GF_KEY_F1;
		break;
	case SDLK_F2:
		evt->key_code = GF_KEY_F2;
		break;
	case SDLK_F3:
		evt->key_code = GF_KEY_F3;
		break;
	case SDLK_F4:
		evt->key_code = GF_KEY_F4;
		break;
	case SDLK_F5:
		evt->key_code = GF_KEY_F5;
		break;
	case SDLK_F6:
		evt->key_code = GF_KEY_F6;
		break;
	case SDLK_F7:
		evt->key_code = GF_KEY_F7;
		break;
	case SDLK_F8:
		evt->key_code = GF_KEY_F8;
		break;
	case SDLK_F9:
		evt->key_code = GF_KEY_F9;
		break;
	case SDLK_F10:
		evt->key_code = GF_KEY_F10;
		break;
	case SDLK_F11:
		evt->key_code = GF_KEY_F11;
		break;
	case SDLK_F12:
		evt->key_code = GF_KEY_F12;
		break;
	case SDLK_F13:
		evt->key_code = GF_KEY_F13;
		break;
	case SDLK_F14:
		evt->key_code = GF_KEY_F14;
		break;
	case SDLK_F15:
		evt->key_code = GF_KEY_F15;
		break;
	case SDLK_NUMLOCKCLEAR:
		evt->key_code = GF_KEY_NUMLOCK;
		break;
	case SDLK_CAPSLOCK:
		evt->key_code = GF_KEY_CAPSLOCK;
		break;
	case SDLK_SCROLLLOCK:
		evt->key_code = GF_KEY_SCROLL;
		break;

	case SDLK_RSHIFT:
		evt->key_code = GF_KEY_SHIFT;
		evt->flags = GF_KEY_EXT_RIGHT;
		break;
	case SDLK_LSHIFT:
		evt->key_code = GF_KEY_SHIFT;
		evt->flags = GF_KEY_EXT_LEFT;
		break;
	case SDLK_LCTRL:
		evt->key_code = GF_KEY_CONTROL;
		evt->flags = GF_KEY_EXT_LEFT;
		break;
	case SDLK_RCTRL:
		evt->key_code = GF_KEY_CONTROL;
		evt->flags = GF_KEY_EXT_RIGHT;
		break;
	case SDLK_LALT:
		evt->key_code = GF_KEY_ALT;
		evt->flags = GF_KEY_EXT_LEFT;
		break;
	case SDLK_RALT:
		evt->key_code = GF_KEY_ALT;
		evt->flags = GF_KEY_EXT_RIGHT;
		break;
#if (SDL_MAJOR_VERSION<=1) && (SDL_MINOR_VERSION<3)
	case SDLK_LMETA:
	case SDLK_LSUPER:
#else
	case SDLK_LGUI:
#endif
		evt->key_code = GF_KEY_META;
		evt->flags = GF_KEY_EXT_LEFT;
		break;
#if (SDL_MAJOR_VERSION<=1) && (SDL_MINOR_VERSION<3)
	case SDLK_RMETA:
	case SDLK_RSUPER:
#else
	case SDLK_RGUI:
#endif
		evt->key_code = GF_KEY_META;
		evt->flags = GF_KEY_EXT_RIGHT;
		break;
	case SDLK_MODE:
		evt->key_code = GF_KEY_MODECHANGE;
		break;
	case SDLK_APPLICATION:
		evt->key_code = GF_KEY_COMPOSE;
		break;
	case SDLK_HELP:
		evt->key_code = GF_KEY_HELP;
		break;
	case SDLK_PRINTSCREEN:
		evt->key_code = GF_KEY_PRINTSCREEN;
		break;

#if (SDL_MAJOR_VERSION>=1) && (SDL_MINOR_VERSION>=3)
	/*
		SDLK_CARET		= 94,
	 */
	case SDLK_a:
	case SDLK_b:
	case SDLK_c:
	case SDLK_d:
	case SDLK_e:
	case SDLK_f:
	case SDLK_g:
	case SDLK_h:
	case SDLK_i:
	case SDLK_j:
	case SDLK_k:
	case SDLK_l:
	case SDLK_m:
	case SDLK_n:
	case SDLK_o:
	case SDLK_p:
	case SDLK_q:
	case SDLK_r:
	case SDLK_s:
	case SDLK_t:
	case SDLK_u:
	case SDLK_v:
	case SDLK_w:
	case SDLK_x:
	case SDLK_y:
	case SDLK_z:
		evt->key_code = GF_KEY_A + SDLkey - SDLK_a;
		break;
		/*
		SDLK_DELETE		= 127,

		SDLK_SYSREQ		= 317,
		SDLK_POWER		= 320,

		*/
#endif

	default:
		if ((SDLkey>=0x30) && (SDLkey<=0x39))  evt->key_code = GF_KEY_0 + SDLkey-0x30;
		else if ((SDLkey>=0x41) && (SDLkey<=0x5A))  evt->key_code = GF_KEY_A + SDLkey-0x41;
		else if ((SDLkey>=0x61) && (SDLkey<=0x7A))  evt->key_code = GF_KEY_A + SDLkey-0x61;
		else
		{
			evt->key_code = GF_KEY_UNIDENTIFIED;
		}
		break;
	}
}