/*
 *  PolyInputKeys.h
 *  Poly
 *
 *  Created by Ivan Safrin on 5/28/08.
 *  Copyright 2008 __MyCompanyName__. All rights reserved.
 *
 */
// @package Core

#pragma once

namespace Polycode {

	// copied from SDL for conveniece :)
	
	typedef enum {
		/* The keyboard syms have been cleverly chosen to map to ASCII */
		TAUK_UNKNOWN		= 0,
		TAUK_FIRST		= 0,
		TAUK_BACKSPACE		= 8,
		TAUK_TAB		= 9,
		TAUK_CLEAR		= 12,
		TAUK_RETURN		= 13,
		TAUK_PAUSE		= 19,
		TAUK_ESCAPE		= 27,
		TAUK_SPACE		= 32,
		TAUK_EXCLAIM		= 33,
		TAUK_QUOTEDBL		= 34,
		TAUK_HASH		= 35,
		TAUK_DOLLAR		= 36,
		TAUK_AMPERSAND		= 38,
		TAUK_QUOTE		= 39,
		TAUK_LEFTPAREN		= 40,
		TAUK_RIGHTPAREN		= 41,
		TAUK_ASTERISK		= 42,
		TAUK_PLUS		= 43,
		TAUK_COMMA		= 44,
		TAUK_MINUS		= 45,
		TAUK_PERIOD		= 46,
		TAUK_SLASH		= 47,
		TAUK_0			= 48,
		TAUK_1			= 49,
		TAUK_2			= 50,
		TAUK_3			= 51,
		TAUK_4			= 52,
		TAUK_5			= 53,
		TAUK_6			= 54,
		TAUK_7			= 55,
		TAUK_8			= 56,
		TAUK_9			= 57,
		TAUK_COLON		= 58,
		TAUK_SEMICOLON		= 59,
		TAUK_LESS		= 60,
		TAUK_EQUALS		= 61,
		TAUK_GREATER		= 62,
		TAUK_QUESTION		= 63,
		TAUK_AT			= 64,
		/* 
		 Skip uppercase letters
		 */
		TAUK_LEFTBRACKET	= 91,
		TAUK_BACKSLASH		= 92,
		TAUK_RIGHTBRACKET	= 93,
		TAUK_CARET		= 94,
		TAUK_UNDERSCORE		= 95,
		TAUK_BACKQUOTE		= 96,
		TAUK_a			= 97,
		TAUK_b			= 98,
		TAUK_c			= 99,
		TAUK_d			= 100,
		TAUK_e			= 101,
		TAUK_f			= 102,
		TAUK_g			= 103,
		TAUK_h			= 104,
		TAUK_i			= 105,
		TAUK_j			= 106,
		TAUK_k			= 107,
		TAUK_l			= 108,
		TAUK_m			= 109,
		TAUK_n			= 110,
		TAUK_o			= 111,
		TAUK_p			= 112,
		TAUK_q			= 113,
		TAUK_r			= 114,
		TAUK_s			= 115,
		TAUK_t			= 116,
		TAUK_u			= 117,
		TAUK_v			= 118,
		TAUK_w			= 119,
		TAUK_x			= 120,
		TAUK_y			= 121,
		TAUK_z			= 122,
		TAUK_DELETE		= 127,
		/* End of ASCII mapped keysyms */
		
		/* International keyboard syms */
		TAUK_WORLD_0		= 160,		/* 0xA0 */
		TAUK_WORLD_1		= 161,
		TAUK_WORLD_2		= 162,
		TAUK_WORLD_3		= 163,
		TAUK_WORLD_4		= 164,
		TAUK_WORLD_5		= 165,
		TAUK_WORLD_6		= 166,
		TAUK_WORLD_7		= 167,
		TAUK_WORLD_8		= 168,
		TAUK_WORLD_9		= 169,
		TAUK_WORLD_10		= 170,
		TAUK_WORLD_11		= 171,
		TAUK_WORLD_12		= 172,
		TAUK_WORLD_13		= 173,
		TAUK_WORLD_14		= 174,
		TAUK_WORLD_15		= 175,
		TAUK_WORLD_16		= 176,
		TAUK_WORLD_17		= 177,
		TAUK_WORLD_18		= 178,
		TAUK_WORLD_19		= 179,
		TAUK_WORLD_20		= 180,
		TAUK_WORLD_21		= 181,
		TAUK_WORLD_22		= 182,
		TAUK_WORLD_23		= 183,
		TAUK_WORLD_24		= 184,
		TAUK_WORLD_25		= 185,
		TAUK_WORLD_26		= 186,
		TAUK_WORLD_27		= 187,
		TAUK_WORLD_28		= 188,
		TAUK_WORLD_29		= 189,
		TAUK_WORLD_30		= 190,
		TAUK_WORLD_31		= 191,
		TAUK_WORLD_32		= 192,
		TAUK_WORLD_33		= 193,
		TAUK_WORLD_34		= 194,
		TAUK_WORLD_35		= 195,
		TAUK_WORLD_36		= 196,
		TAUK_WORLD_37		= 197,
		TAUK_WORLD_38		= 198,
		TAUK_WORLD_39		= 199,
		TAUK_WORLD_40		= 200,
		TAUK_WORLD_41		= 201,
		TAUK_WORLD_42		= 202,
		TAUK_WORLD_43		= 203,
		TAUK_WORLD_44		= 204,
		TAUK_WORLD_45		= 205,
		TAUK_WORLD_46		= 206,
		TAUK_WORLD_47		= 207,
		TAUK_WORLD_48		= 208,
		TAUK_WORLD_49		= 209,
		TAUK_WORLD_50		= 210,
		TAUK_WORLD_51		= 211,
		TAUK_WORLD_52		= 212,
		TAUK_WORLD_53		= 213,
		TAUK_WORLD_54		= 214,
		TAUK_WORLD_55		= 215,
		TAUK_WORLD_56		= 216,
		TAUK_WORLD_57		= 217,
		TAUK_WORLD_58		= 218,
		TAUK_WORLD_59		= 219,
		TAUK_WORLD_60		= 220,
		TAUK_WORLD_61		= 221,
		TAUK_WORLD_62		= 222,
		TAUK_WORLD_63		= 223,
		TAUK_WORLD_64		= 224,
		TAUK_WORLD_65		= 225,
		TAUK_WORLD_66		= 226,
		TAUK_WORLD_67		= 227,
		TAUK_WORLD_68		= 228,
		TAUK_WORLD_69		= 229,
		TAUK_WORLD_70		= 230,
		TAUK_WORLD_71		= 231,
		TAUK_WORLD_72		= 232,
		TAUK_WORLD_73		= 233,
		TAUK_WORLD_74		= 234,
		TAUK_WORLD_75		= 235,
		TAUK_WORLD_76		= 236,
		TAUK_WORLD_77		= 237,
		TAUK_WORLD_78		= 238,
		TAUK_WORLD_79		= 239,
		TAUK_WORLD_80		= 240,
		TAUK_WORLD_81		= 241,
		TAUK_WORLD_82		= 242,
		TAUK_WORLD_83		= 243,
		TAUK_WORLD_84		= 244,
		TAUK_WORLD_85		= 245,
		TAUK_WORLD_86		= 246,
		TAUK_WORLD_87		= 247,
		TAUK_WORLD_88		= 248,
		TAUK_WORLD_89		= 249,
		TAUK_WORLD_90		= 250,
		TAUK_WORLD_91		= 251,
		TAUK_WORLD_92		= 252,
		TAUK_WORLD_93		= 253,
		TAUK_WORLD_94		= 254,
		TAUK_WORLD_95		= 255,		/* 0xFF */
		
		/* Numeric keypad */
		TAUK_KP0		= 256,
		TAUK_KP1		= 257,
		TAUK_KP2		= 258,
		TAUK_KP3		= 259,
		TAUK_KP4		= 260,
		TAUK_KP5		= 261,
		TAUK_KP6		= 262,
		TAUK_KP7		= 263,
		TAUK_KP8		= 264,
		TAUK_KP9		= 265,
		TAUK_KP_PERIOD		= 266,
		TAUK_KP_DIVIDE		= 267,
		TAUK_KP_MULTIPLY	= 268,
		TAUK_KP_MINUS		= 269,
		TAUK_KP_PLUS		= 270,
		TAUK_KP_ENTER		= 271,
		TAUK_KP_EQUALS		= 272,
		
		/* Arrows + Home/End pad */
		TAUK_UP			= 273,
		TAUK_DOWN		= 274,
		TAUK_RIGHT		= 275,
		TAUK_LEFT		= 276,
		TAUK_INSERT		= 277,
		TAUK_HOME		= 278,
		TAUK_END		= 279,
		TAUK_PAGEUP		= 280,
		TAUK_PAGEDOWN		= 281,
		
		/* Function keys */
		TAUK_F1			= 282,
		TAUK_F2			= 283,
		TAUK_F3			= 284,
		TAUK_F4			= 285,
		TAUK_F5			= 286,
		TAUK_F6			= 287,
		TAUK_F7			= 288,
		TAUK_F8			= 289,
		TAUK_F9			= 290,
		TAUK_F10		= 291,
		TAUK_F11		= 292,
		TAUK_F12		= 293,
		TAUK_F13		= 294,
		TAUK_F14		= 295,
		TAUK_F15		= 296,
		
		/* Key state modifier keys */
		TAUK_NUMLOCK		= 300,
		TAUK_CAPSLOCK		= 301,
		TAUK_SCROLLOCK		= 302,
		TAUK_RSHIFT		= 303,
		TAUK_LSHIFT		= 304,
		TAUK_RCTRL		= 305,
		TAUK_LCTRL		= 306,
		TAUK_RALT		= 307,
		TAUK_LALT		= 308,
		TAUK_RMETA		= 309,
		TAUK_LMETA		= 310,
		TAUK_LSUPER		= 311,		/* Left "Windows" key */
		TAUK_RSUPER		= 312,		/* Right "Windows" key */
		TAUK_MODE		= 313,		/* "Alt Gr" key */
		TAUK_COMPOSE		= 314,		/* Multi-key compose key */
		
		/* Miscellaneous function keys */
		TAUK_HELP		= 315,
		TAUK_PRINT		= 316,
		TAUK_SYSREQ		= 317,
		TAUK_BREAK		= 318,
		TAUK_MENU		= 319,
		TAUK_POWER		= 320,		/* Power Macintosh power key */
		TAUK_EURO		= 321,		/* Some european keyboards */
		TAUK_UNDO		= 322,		/* Atari keyboard has Undo */
		
		/* Add any other keys here */
		
		TAUK_LAST
	} TAUKey;

};
	