//
// Lol Engine
//
// Copyright: (c) 2010-2013 Benjamin Litzelmann
// This program is free software; you can redistribute it and/or
// modify it under the terms of the Do What The Fuck You Want To
// Public License) Version 2) as published by Sam Hocevar. See
// http://www.wtfpl.net/ for more details.
//

#if defined KEY_FUNC

/* ASCII mapped keys */
KEY_FUNC(Unknown, 0)
KEY_FUNC(First, 0)
KEY_FUNC(Backspace, 8)
KEY_FUNC(Tab, (int)'\t')
KEY_FUNC(Clear, 12)
KEY_FUNC(Return, 13)
KEY_FUNC(Pause, 19)
KEY_FUNC(Escape, 27)
KEY_FUNC(Space, (int)' ')
KEY_FUNC(Exclaim, (int)'!')
KEY_FUNC(DoubleQuote, (int)'"')
KEY_FUNC(Hash, (int)'#')
KEY_FUNC(Dollar, (int)'$')
KEY_FUNC(Ampersand, (int)'&')
KEY_FUNC(Quote, (int)'\'')
KEY_FUNC(LeftParen, (int)'(')
KEY_FUNC(RightParen, (int)')')
KEY_FUNC(Asterisk, (int)'*')
KEY_FUNC(Plus, (int)'+')
KEY_FUNC(Comma, (int)')')
KEY_FUNC(Minus, (int)'-')
KEY_FUNC(Period, (int)'.')
KEY_FUNC(Slash, (int)'/')
KEY_FUNC(K0, (int)'0')
KEY_FUNC(K1, (int)'1')
KEY_FUNC(K2, (int)'2')
KEY_FUNC(K3, (int)'3')
KEY_FUNC(K4, (int)'4')
KEY_FUNC(K5, (int)'5')
KEY_FUNC(K6, (int)'6')
KEY_FUNC(K7, (int)'7')
KEY_FUNC(K8, (int)'8')
KEY_FUNC(K9, (int)'9')
KEY_FUNC(Colon, (int)':')
KEY_FUNC(Semicolon, (int)';')
KEY_FUNC(Less, (int)'<')
KEY_FUNC(Equals, (int)'=')
KEY_FUNC(Greater, (int)'>')
KEY_FUNC(Question, (int)'?')
KEY_FUNC(At, (int)'@')
/* XXX: SDL decides to skip uppercase characters */
KEY_FUNC(LeftBracket, (int)'[')
KEY_FUNC(BackSlash, (int)'\\')
KEY_FUNC(RightBracket, (int)']')
KEY_FUNC(Caret, (int)'^')
KEY_FUNC(Underscore, (int)'_')
KEY_FUNC(Backquote, (int)'`')
KEY_FUNC(A, (int)'a')
KEY_FUNC(B, (int)'b')
KEY_FUNC(C, (int)'c')
KEY_FUNC(D, (int)'d')
KEY_FUNC(E, (int)'e')
KEY_FUNC(F, (int)'f')
KEY_FUNC(G, (int)'g')
KEY_FUNC(H, (int)'h')
KEY_FUNC(I, (int)'i')
KEY_FUNC(J, (int)'j')
KEY_FUNC(K, (int)'k')
KEY_FUNC(L, (int)'l')
KEY_FUNC(M, (int)'m')
KEY_FUNC(N, (int)'n')
KEY_FUNC(O, (int)'o')
KEY_FUNC(P, (int)'p')
KEY_FUNC(Q, (int)'q')
KEY_FUNC(R, (int)'r')
KEY_FUNC(S, (int)'s')
KEY_FUNC(T, (int)'t')
KEY_FUNC(U, (int)'u')
KEY_FUNC(V, (int)'v')
KEY_FUNC(W, (int)'w')
KEY_FUNC(X, (int)'x')
KEY_FUNC(Y, (int)'y')
KEY_FUNC(Z, (int)'z')
KEY_FUNC(Delete, 127)

/* International keyboard syms */
#ifndef KEY_DISABLE_WORLD
KEY_FUNC(World0, 160) /* 0xA0 */
KEY_FUNC(World1, 161)
KEY_FUNC(World2, 162)
KEY_FUNC(World3, 163)
KEY_FUNC(World4, 164)
KEY_FUNC(World5, 165)
KEY_FUNC(World6, 166)
KEY_FUNC(World7, 167)
KEY_FUNC(World8, 168)
KEY_FUNC(World9, 169)
KEY_FUNC(World10, 170)
KEY_FUNC(World11, 171)
KEY_FUNC(World12, 172)
KEY_FUNC(World13, 173)
KEY_FUNC(World14, 174)
KEY_FUNC(World15, 175)
KEY_FUNC(World16, 176)
KEY_FUNC(World17, 177)
KEY_FUNC(World18, 178)
KEY_FUNC(World19, 179)
KEY_FUNC(World20, 180)
KEY_FUNC(World21, 181)
KEY_FUNC(World22, 182)
KEY_FUNC(World23, 183)
KEY_FUNC(World24, 184)
KEY_FUNC(World25, 185)
KEY_FUNC(World26, 186)
KEY_FUNC(World27, 187)
KEY_FUNC(World28, 188)
KEY_FUNC(World29, 189)
KEY_FUNC(World30, 190)
KEY_FUNC(World31, 191)
KEY_FUNC(World32, 192)
KEY_FUNC(World33, 193)
KEY_FUNC(World34, 194)
KEY_FUNC(World35, 195)
KEY_FUNC(World36, 196)
KEY_FUNC(World37, 197)
KEY_FUNC(World38, 198)
KEY_FUNC(World39, 199)
KEY_FUNC(World40, 200)
KEY_FUNC(World41, 201)
KEY_FUNC(World42, 202)
KEY_FUNC(World43, 203)
KEY_FUNC(World44, 204)
KEY_FUNC(World45, 205)
KEY_FUNC(World46, 206)
KEY_FUNC(World47, 207)
KEY_FUNC(World48, 208)
KEY_FUNC(World49, 209)
KEY_FUNC(World50, 210)
KEY_FUNC(World51, 211)
KEY_FUNC(World52, 212)
KEY_FUNC(World53, 213)
KEY_FUNC(World54, 214)
KEY_FUNC(World55, 215)
KEY_FUNC(World56, 216)
KEY_FUNC(World57, 217)
KEY_FUNC(World58, 218)
KEY_FUNC(World59, 219)
KEY_FUNC(World60, 220)
KEY_FUNC(World61, 221)
KEY_FUNC(World62, 222)
KEY_FUNC(World63, 223)
KEY_FUNC(World64, 224)
KEY_FUNC(World65, 225)
KEY_FUNC(World66, 226)
KEY_FUNC(World67, 227)
KEY_FUNC(World68, 228)
KEY_FUNC(World69, 229)
KEY_FUNC(World70, 230)
KEY_FUNC(World71, 231)
KEY_FUNC(World72, 232)
KEY_FUNC(World73, 233)
KEY_FUNC(World74, 234)
KEY_FUNC(World75, 235)
KEY_FUNC(World76, 236)
KEY_FUNC(World77, 237)
KEY_FUNC(World78, 238)
KEY_FUNC(World79, 239)
KEY_FUNC(World80, 240)
KEY_FUNC(World81, 241)
KEY_FUNC(World82, 242)
KEY_FUNC(World83, 243)
KEY_FUNC(World84, 244)
KEY_FUNC(World85, 245)
KEY_FUNC(World86, 246)
KEY_FUNC(World87, 247)
KEY_FUNC(World88, 248)
KEY_FUNC(World89, 249)
KEY_FUNC(World90, 250)
KEY_FUNC(World91, 251)
KEY_FUNC(World92, 252)
KEY_FUNC(World93, 253)
KEY_FUNC(World94, 254)
KEY_FUNC(World95, 255) /* 0xFF */
#endif // !KEY_DISABLE_WORLD

/* Numeric keypad */
KEY_FUNC(KP0, 256)
KEY_FUNC(KP1, 257)
KEY_FUNC(KP2, 258)
KEY_FUNC(KP3, 259)
KEY_FUNC(KP4, 260)
KEY_FUNC(KP5, 261)
KEY_FUNC(KP6, 262)
KEY_FUNC(KP7, 263)
KEY_FUNC(KP8, 264)
KEY_FUNC(KP9, 265)
KEY_FUNC(KPPeriod, 266)
KEY_FUNC(KPDivide, 267)
KEY_FUNC(KPMultiply, 268)
KEY_FUNC(KPMinus, 269)
KEY_FUNC(KPPlus, 270)
KEY_FUNC(KPEnter, 271)
KEY_FUNC(KPEquals, 272)

/* Arrows + Home/End pad */
KEY_FUNC(Up, 273)
KEY_FUNC(Down, 274)
KEY_FUNC(Right, 275)
KEY_FUNC(Left, 276)
KEY_FUNC(Insert, 277)
KEY_FUNC(Home, 278)
KEY_FUNC(End, 279)
KEY_FUNC(PageUp, 280)
KEY_FUNC(PageDown, 281)

/* Function keys */
KEY_FUNC(F1, 282)
KEY_FUNC(F2, 283)
KEY_FUNC(F3, 284)
KEY_FUNC(F4, 285)
KEY_FUNC(F5, 286)
KEY_FUNC(F6, 287)
KEY_FUNC(F7, 288)
KEY_FUNC(F8, 289)
KEY_FUNC(F9, 290)
KEY_FUNC(F10, 291)
KEY_FUNC(F11, 292)
KEY_FUNC(F12, 293)
KEY_FUNC(F13, 294)
KEY_FUNC(F14, 295)
KEY_FUNC(F15, 296)

/* Modifier keys */
KEY_FUNC(NumLock, 300)
KEY_FUNC(CapsLock, 301)
KEY_FUNC(ScrollLock, 302)
KEY_FUNC(RightShift, 303)
KEY_FUNC(LeftShift, 304)
KEY_FUNC(RightCtrl, 305)
KEY_FUNC(LeftCtrl, 306)
KEY_FUNC(RightAlt, 307)
KEY_FUNC(LeftAlt, 308)
KEY_FUNC(RightMeta, 309)
KEY_FUNC(LeftMeta, 310)
KEY_FUNC(LeftSuper, 311) /* Left "Windows" key */
KEY_FUNC(RightSuper, 312) /* Right "Windows" key */
KEY_FUNC(Mode, 313) /* "Alt Gr" key */
KEY_FUNC(Compose, 314) /* Multi-key compose key */

/* Miscellaneous function keys */
KEY_FUNC(Help, 315)
KEY_FUNC(Print, 316)
KEY_FUNC(SysReq, 317)
KEY_FUNC(Break, 318)
KEY_FUNC(Menu, 319)
KEY_FUNC(Power, 320) /* Power Macintosh power key */
KEY_FUNC(Euro, 321) /* Some european keyboards */
KEY_FUNC(Undo, 322) /* Atari keyboard has Undo */

/* Add any other keys here, but ensure Last value matches the last + 1 */
KEY_FUNC(Last, 323)

#endif // KEY_FUNC
