Bladeren bron

Fix lua bindings.

Eugene Kozlov 7 jaren geleden
bovenliggende
commit
fa1524e14e

+ 16 - 0
Source/Urho3D/LuaScript/pkgs/Graphics/Animation.pkg

@@ -92,4 +92,20 @@ static Animation* AnimationClone(const Animation* animation, const String& clone
         
     return animation->Clone(cloneName).Detach();
 }
+
+#define TOLUA_DISABLE_tolua_set_AnimationTrack_unsigned_channelMask
+static int tolua_set_AnimationTrack_unsigned_channelMask(lua_State* tolua_S)
+{
+  AnimationTrack* self = (AnimationTrack*)  tolua_tousertype(tolua_S,1,0);
+#ifndef TOLUA_RELEASE
+ tolua_Error tolua_err;
+ if (!self) tolua_error(tolua_S,"invalid 'self' in accessing variable 'channelMask_'",NULL);
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);
+#endif
+  self->channelMask_ = AnimationChannelFlags((unsigned char)  tolua_tonumber(tolua_S,2,0))
+;
+ return 0;
+}
+
 $}

+ 31 - 23
Source/Urho3D/LuaScript/pkgs/Graphics/GraphicsDefs.pkg

@@ -229,28 +229,36 @@ struct VertexElement
     unsigned offset_ @ offset;
 };
 
+enum MaterialQuality
+{
+    QUALITY_LOW,
+    QUALITY_MEDIUM,
+    QUALITY_HIGH,
+    QUALITY_MAX
+};
 
-static const int QUALITY_LOW;
-static const int QUALITY_MEDIUM;
-static const int QUALITY_HIGH;
-static const int QUALITY_MAX;
-
-static const unsigned CLEAR_COLOR;
-static const unsigned CLEAR_DEPTH;
-static const unsigned CLEAR_STENCIL;
+enum ClearFlag
+{
+    CLEAR_COLOR,
+    CLEAR_DEPTH,
+    CLEAR_STENCIL
+};
 
-static const unsigned MASK_NONE;
-static const unsigned MASK_POSITION;
-static const unsigned MASK_NORMAL;
-static const unsigned MASK_COLOR;
-static const unsigned MASK_TEXCOORD1;
-static const unsigned MASK_TEXCOORD2;
-static const unsigned MASK_CUBETEXCOORD1;
-static const unsigned MASK_CUBETEXCOORD2;
-static const unsigned MASK_TANGENT;
-static const unsigned MASK_BLENDWEIGHTS;
-static const unsigned MASK_BLENDINDICES;
-static const unsigned MASK_INSTANCEMATRIX1;
-static const unsigned MASK_INSTANCEMATRIX2;
-static const unsigned MASK_INSTANCEMATRIX3;
-static const unsigned MASK_OBJECTINDEX;
+enum VertexMask
+{
+    MASK_NONE,
+    MASK_POSITION,
+    MASK_NORMAL,
+    MASK_COLOR,
+    MASK_TEXCOORD1,
+    MASK_TEXCOORD2,
+    MASK_CUBETEXCOORD1,
+    MASK_CUBETEXCOORD2,
+    MASK_TANGENT,
+    MASK_BLENDWEIGHTS,
+    MASK_BLENDINDICES,
+    MASK_INSTANCEMATRIX1,
+    MASK_INSTANCEMATRIX2,
+    MASK_INSTANCEMATRIX3,
+    MASK_OBJECTINDEX
+};

+ 1 - 1
Source/Urho3D/LuaScript/pkgs/Graphics/Material.pkg

@@ -9,7 +9,7 @@ class Material : public Resource
     ~Material();
     
     void SetNumTechniques(unsigned num);
-    void SetTechnique(unsigned index, Technique* tech, unsigned qualityLevel = 0, float lodDistance = 0.0f);
+    void SetTechnique(unsigned index, Technique* tech, MaterialQuality qualityLevel = 0, float lodDistance = 0.0f);
     void SetVertexShaderDefines(const String defines);
     void SetPixelShaderDefines(const String defines);
     void SetShaderParameter(const String name, const Variant& value);

+ 16 - 0
Source/Urho3D/LuaScript/pkgs/Graphics/RenderPath.pkg

@@ -129,4 +129,20 @@ static RenderPath* RenderPathClone(RenderPath* renderPath)
 
     return renderPath->Clone().Detach();
 }
+
+#define TOLUA_DISABLE_tolua_set_RenderPathCommand_clearFlags
+static int tolua_set_RenderPathCommand_clearFlags(lua_State* tolua_S)
+{
+  RenderPathCommand* self = (RenderPathCommand*)  tolua_tousertype(tolua_S,1,0);
+#ifndef TOLUA_RELEASE
+ tolua_Error tolua_err;
+ if (!self) tolua_error(tolua_S,"invalid 'self' in accessing variable 'clearFlags_'",NULL);
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);
+#endif
+  self->clearFlags_ = ClearFlags((unsigned)  tolua_tonumber(tolua_S,2,0))
+;
+ return 0;
+}
+
 $}

+ 6 - 6
Source/Urho3D/LuaScript/pkgs/Graphics/Renderer.pkg

@@ -11,8 +11,8 @@ class Renderer
     void SetSpecularLighting(bool enable);
     void SetTextureAnisotropy(int level);
     void SetTextureFilterMode(TextureFilterMode mode);
-    void SetTextureQuality(int quality);
-    void SetMaterialQuality(int quality);
+    void SetTextureQuality(MaterialQuality quality);
+    void SetMaterialQuality(MaterialQuality quality);
     void SetDrawShadows(bool enable);
     void SetShadowMapSize(int size);
     void SetShadowQuality(ShadowQuality quality);
@@ -44,8 +44,8 @@ class Renderer
     bool GetDrawShadows() const;
     int GetTextureAnisotropy() const;
     TextureFilterMode GetTextureFilterMode() const;
-    int GetTextureQuality() const;
-    int GetMaterialQuality() const;
+    MaterialQuality GetTextureQuality() const;
+    MaterialQuality GetMaterialQuality() const;
     int GetShadowMapSize() const;
     ShadowQuality GetShadowQuality() const;
     float GetShadowSoftness() const;
@@ -86,8 +86,8 @@ class Renderer
     tolua_property__get_set bool drawShadows;
     tolua_property__get_set int textureAnisotropy;
     tolua_property__get_set TextureFilterMode textureFilterMode;
-    tolua_property__get_set int textureQuality;
-    tolua_property__get_set int materialQuality;
+    tolua_property__get_set MaterialQuality textureQuality;
+    tolua_property__get_set MaterialQuality materialQuality;
     tolua_property__get_set int shadowMapSize;
     tolua_property__get_set ShadowQuality shadowQuality;
     tolua_property__get_set float shadowSoftness;

+ 19 - 0
Source/Urho3D/LuaScript/pkgs/Graphics/Skeleton.pkg

@@ -32,3 +32,22 @@ class Skeleton
     tolua_readonly tolua_property__get_set unsigned numBones;
     tolua_readonly tolua_property__get_set Bone* rootBone;
 };
+
+${
+
+#define TOLUA_DISABLE_tolua_set_Bone_unsigned_collisionMask
+static int tolua_set_Bone_unsigned_collisionMask(lua_State* tolua_S)
+{
+  Bone* self = (Bone*)  tolua_tousertype(tolua_S,1,0);
+#ifndef TOLUA_RELEASE
+ tolua_Error tolua_err;
+ if (!self) tolua_error(tolua_S,"invalid 'self' in accessing variable 'collisionMask_'",NULL);
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);
+#endif
+  self->collisionMask_ = BoneCollisionShape((unsigned char)  tolua_tonumber(tolua_S,2,0))
+;
+ return 0;
+}
+
+$}

+ 2 - 2
Source/Urho3D/LuaScript/pkgs/Graphics/Texture.pkg

@@ -9,7 +9,7 @@ class Texture : public ResourceWithMetadata
     void SetBorderColor(const Color& color);
     void SetSRGB(bool enable);
     void SetBackupTexture(Texture* texture);
-    void SetMipsToSkip(int quality, int toSkip);
+    void SetMipsToSkip(MaterialQuality quality, int toSkip);
     
     unsigned GetFormat() const;
     bool IsCompressed() const;
@@ -26,7 +26,7 @@ class Texture : public ResourceWithMetadata
     bool IsResolveDirty() const;
     bool GetLevelsDirty() const;
     Texture* GetBackupTexture() const;
-    int GetMipsToSkip(int quality) const;
+    int GetMipsToSkip(MaterialQuality quality) const;
     int GetLevelWidth(unsigned level) const;
     int GetLevelHeight(unsigned level) const;
     TextureUsage GetUsage() const;

+ 14 - 14
Source/Urho3D/LuaScript/pkgs/Input/Input.pkg

@@ -67,20 +67,20 @@ class Input : public Object
     void SetMousePosition(const IntVector2& position);
     void CenterMousePosition();
 
-    int GetKeyFromName(const String name) const;
-    int GetKeyFromScancode(int scancode) const;
-    String GetKeyName(int key) const;
-    int GetScancodeFromKey(int key) const;
-    int GetScancodeFromName(const String name) const;
-    String GetScancodeName(int scancode) const;
-    bool GetKeyDown(int key) const;
-    bool GetKeyPress(int key) const;
-    bool GetScancodeDown(int scancode) const;
-    bool GetScancodePress(int scancode) const;
-    bool GetMouseButtonDown(int button) const;
-    bool GetMouseButtonPress(int button) const;
-    bool GetQualifierDown(int qualifier) const;
-    bool GetQualifierPress(int qualifier) const;
+    Key GetKeyFromName(const String name) const;
+    Key GetKeyFromScancode(Scancode scancode) const;
+    String GetKeyName(Key key) const;
+    Scancode GetScancodeFromKey(Key key) const;
+    Scancode GetScancodeFromName(const String name) const;
+    String GetScancodeName(Scancode scancode) const;
+    bool GetKeyDown(Key key) const;
+    bool GetKeyPress(Key key) const;
+    bool GetScancodeDown(Scancode scancode) const;
+    bool GetScancodePress(Scancode scancode) const;
+    bool GetMouseButtonDown(MouseButton button) const;
+    bool GetMouseButtonPress(MouseButton button) const;
+    bool GetQualifierDown(Qualifier qualifier) const;
+    bool GetQualifierPress(Qualifier qualifier) const;
     int GetQualifiers() const;
     IntVector2 GetMousePosition() const;
     IntVector2 GetMouseMove() const;

+ 538 - 517
Source/Urho3D/LuaScript/pkgs/Input/InputEvents.pkg

@@ -1,525 +1,546 @@
 $#include "Input/InputEvents.h"
 
-static const int MOUSEB_LEFT;
-static const int MOUSEB_MIDDLE;
-static const int MOUSEB_RIGHT;
+enum MouseButton
+{
+    MOUSEB_LEFT,
+    MOUSEB_MIDDLE,
+    MOUSEB_RIGHT
+};
 
-static const int QUAL_SHIFT;
-static const int QUAL_CTRL;
-static const int QUAL_ALT;
-static const int QUAL_ANY;
+enum Qualifier
+{
+    QUAL_SHIFT,
+    QUAL_CTRL,
+    QUAL_ALT,
+    QUAL_ANY,
+};
 
-static const int KEY_UNKNOWN;
-static const int KEY_A;
-static const int KEY_B;
-static const int KEY_C;
-static const int KEY_D;
-static const int KEY_E;
-static const int KEY_F;
-static const int KEY_G;
-static const int KEY_H;
-static const int KEY_I;
-static const int KEY_J;
-static const int KEY_K;
-static const int KEY_L;
-static const int KEY_M;
-static const int KEY_N;
-static const int KEY_O;
-static const int KEY_P;
-static const int KEY_Q;
-static const int KEY_R;
-static const int KEY_S;
-static const int KEY_T;
-static const int KEY_U;
-static const int KEY_V;
-static const int KEY_W;
-static const int KEY_X;
-static const int KEY_Y;
-static const int KEY_Z;
-static const int KEY_0;
-static const int KEY_1;
-static const int KEY_2;
-static const int KEY_3;
-static const int KEY_4;
-static const int KEY_5;
-static const int KEY_6;
-static const int KEY_7;
-static const int KEY_8;
-static const int KEY_9;
-static const int KEY_BACKSPACE;
-static const int KEY_TAB;
-static const int KEY_RETURN;
-static const int KEY_RETURN2;
-static const int KEY_KP_ENTER;
-static const int KEY_SHIFT;
-static const int KEY_CTRL;
-static const int KEY_ALT;
-static const int KEY_GUI;
-static const int KEY_PAUSE;
-static const int KEY_CAPSLOCK;
-static const int KEY_ESCAPE;
-static const int KEY_SPACE;
-static const int KEY_PAGEUP;
-static const int KEY_PAGEDOWN;
-static const int KEY_END;
-static const int KEY_HOME;
-static const int KEY_LEFT;
-static const int KEY_UP;
-static const int KEY_RIGHT;
-static const int KEY_DOWN;
-static const int KEY_SELECT;
-static const int KEY_PRINTSCREEN;
-static const int KEY_INSERT;
-static const int KEY_DELETE;
-static const int KEY_LGUI;
-static const int KEY_RGUI;
-static const int KEY_APPLICATION;
-static const int KEY_KP_0;
-static const int KEY_KP_1;
-static const int KEY_KP_2;
-static const int KEY_KP_3;
-static const int KEY_KP_4;
-static const int KEY_KP_5;
-static const int KEY_KP_6;
-static const int KEY_KP_7;
-static const int KEY_KP_8;
-static const int KEY_KP_9;
-static const int KEY_KP_MULTIPLY;
-static const int KEY_KP_PLUS;
-static const int KEY_KP_MINUS;
-static const int KEY_KP_PERIOD;
-static const int KEY_KP_DIVIDE;
-static const int KEY_F1;
-static const int KEY_F2;
-static const int KEY_F3;
-static const int KEY_F4;
-static const int KEY_F5;
-static const int KEY_F6;
-static const int KEY_F7;
-static const int KEY_F8;
-static const int KEY_F9;
-static const int KEY_F10;
-static const int KEY_F11;
-static const int KEY_F12;
-static const int KEY_F13;
-static const int KEY_F14;
-static const int KEY_F15;
-static const int KEY_F16;
-static const int KEY_F17;
-static const int KEY_F18;
-static const int KEY_F19;
-static const int KEY_F20;
-static const int KEY_F21;
-static const int KEY_F22;
-static const int KEY_F23;
-static const int KEY_F24;
-static const int KEY_NUMLOCKCLEAR;
-static const int KEY_SCROLLLOCK;
-static const int KEY_LSHIFT;
-static const int KEY_RSHIFT;
-static const int KEY_LCTRL;
-static const int KEY_RCTRL;
-static const int KEY_LALT;
-static const int KEY_RALT;
-static const int KEY_AC_BACK;
-static const int KEY_AC_BOOKMARKS;
-static const int KEY_AC_FORWARD;
-static const int KEY_AC_HOME;
-static const int KEY_AC_REFRESH;
-static const int KEY_AC_SEARCH;
-static const int KEY_AC_STOP;
-static const int KEY_AGAIN;
-static const int KEY_ALTERASE;
-static const int KEY_AMPERSAND;
-static const int KEY_ASTERISK;
-static const int KEY_AT;
-static const int KEY_AUDIOMUTE;
-static const int KEY_AUDIONEXT;
-static const int KEY_AUDIOPLAY;
-static const int KEY_AUDIOPREV;
-static const int KEY_AUDIOSTOP;
-static const int KEY_BACKQUOTE;
-static const int KEY_BACKSLASH;
-static const int KEY_BRIGHTNESSDOWN;
-static const int KEY_BRIGHTNESSUP;
-static const int KEY_CALCULATOR;
-static const int KEY_CANCEL;
-static const int KEY_CARET;
-static const int KEY_CLEAR;
-static const int KEY_CLEARAGAIN;
-static const int KEY_COLON;
-static const int KEY_COMMA;
-static const int KEY_COMPUTER;
-static const int KEY_COPY;
-static const int KEY_CRSEL;
-static const int KEY_CURRENCYSUBUNIT;
-static const int KEY_CURRENCYUNIT;
-static const int KEY_CUT;
-static const int KEY_DECIMALSEPARATOR;
-static const int KEY_DISPLAYSWITCH;
-static const int KEY_DOLLAR;
-static const int KEY_EJECT;
-static const int KEY_EQUALS;
-static const int KEY_EXCLAIM;
-static const int KEY_EXSEL;
-static const int KEY_FIND;
-static const int KEY_GREATER;
-static const int KEY_HASH;
-static const int KEY_HELP;
-static const int KEY_KBDILLUMDOWN;
-static const int KEY_KBDILLUMTOGGLE;
-static const int KEY_KBDILLUMUP;
-static const int KEY_KP_00;
-static const int KEY_KP_000;
-static const int KEY_KP_A;
-static const int KEY_KP_AMPERSAND;
-static const int KEY_KP_AT;
-static const int KEY_KP_B;
-static const int KEY_KP_BACKSPACE;
-static const int KEY_KP_BINARY;
-static const int KEY_KP_C;
-static const int KEY_KP_CLEAR;
-static const int KEY_KP_CLEARENTRY;
-static const int KEY_KP_COLON;
-static const int KEY_KP_COMMA;
-static const int KEY_KP_D;
-static const int KEY_KP_DBLAMPERSAND;
-static const int KEY_KP_DBLVERTICALBAR;
-static const int KEY_KP_DECIMAL;
-static const int KEY_KP_E;
-static const int KEY_KP_EQUALS;
-static const int KEY_KP_EQUALSAS400;
-static const int KEY_KP_EXCLAM;
-static const int KEY_KP_F;
-static const int KEY_KP_GREATER;
-static const int KEY_KP_HASH;
-static const int KEY_KP_HEXADECIMAL;
-static const int KEY_KP_LEFTBRACE;
-static const int KEY_KP_LEFTPAREN;
-static const int KEY_KP_LESS;
-static const int KEY_KP_MEMADD;
-static const int KEY_KP_MEMCLEAR;
-static const int KEY_KP_MEMDIVIDE;
-static const int KEY_KP_MEMMULTIPLY;
-static const int KEY_KP_MEMRECALL;
-static const int KEY_KP_MEMSTORE;
-static const int KEY_KP_MEMSUBTRACT;
-static const int KEY_KP_OCTAL;
-static const int KEY_KP_PERCENT;
-static const int KEY_KP_PLUSMINUS;
-static const int KEY_KP_POWER;
-static const int KEY_KP_RIGHTBRACE;
-static const int KEY_KP_RIGHTPAREN;
-static const int KEY_KP_SPACE;
-static const int KEY_KP_TAB;
-static const int KEY_KP_VERTICALBAR;
-static const int KEY_KP_XOR;
-static const int KEY_LEFTBRACKET;
-static const int KEY_LEFTPAREN;
-static const int KEY_LESS;
-static const int KEY_MAIL;
-static const int KEY_MEDIASELECT;
-static const int KEY_MENU;
-static const int KEY_MINUS;
-static const int KEY_MODE;
-static const int KEY_MUTE;
-static const int KEY_OPER;
-static const int KEY_OUT;
-static const int KEY_PASTE;
-static const int KEY_PERCENT;
-static const int KEY_PERIOD;
-static const int KEY_PLUS;
-static const int KEY_POWER;
-static const int KEY_PRIOR;
-static const int KEY_QUESTION;
-static const int KEY_QUOTE;
-static const int KEY_QUOTEDBL;
-static const int KEY_RIGHTBRACKET;
-static const int KEY_RIGHTPAREN;
-static const int KEY_SEMICOLON;
-static const int KEY_SEPARATOR;
-static const int KEY_SLASH;
-static const int KEY_SLEEP;
-static const int KEY_STOP;
-static const int KEY_SYSREQ;
-static const int KEY_THOUSANDSSEPARATOR;
-static const int KEY_UNDERSCORE;
-static const int KEY_UNDO;
-static const int KEY_VOLUMEDOWN;
-static const int KEY_VOLUMEUP;
-static const int KEY_WWW;
+enum Key
+{
+    KEY_UNKNOWN,
+    KEY_A,
+    KEY_B,
+    KEY_C,
+    KEY_D,
+    KEY_E,
+    KEY_F,
+    KEY_G,
+    KEY_H,
+    KEY_I,
+    KEY_J,
+    KEY_K,
+    KEY_L,
+    KEY_M,
+    KEY_N,
+    KEY_O,
+    KEY_P,
+    KEY_Q,
+    KEY_R,
+    KEY_S,
+    KEY_T,
+    KEY_U,
+    KEY_V,
+    KEY_W,
+    KEY_X,
+    KEY_Y,
+    KEY_Z,
+    KEY_0,
+    KEY_1,
+    KEY_2,
+    KEY_3,
+    KEY_4,
+    KEY_5,
+    KEY_6,
+    KEY_7,
+    KEY_8,
+    KEY_9,
+    KEY_BACKSPACE,
+    KEY_TAB,
+    KEY_RETURN,
+    KEY_RETURN2,
+    KEY_KP_ENTER,
+    KEY_SHIFT,
+    KEY_CTRL,
+    KEY_ALT,
+    KEY_GUI,
+    KEY_PAUSE,
+    KEY_CAPSLOCK,
+    KEY_ESCAPE,
+    KEY_SPACE,
+    KEY_PAGEUP,
+    KEY_PAGEDOWN,
+    KEY_END,
+    KEY_HOME,
+    KEY_LEFT,
+    KEY_UP,
+    KEY_RIGHT,
+    KEY_DOWN,
+    KEY_SELECT,
+    KEY_PRINTSCREEN,
+    KEY_INSERT,
+    KEY_DELETE,
+    KEY_LGUI,
+    KEY_RGUI,
+    KEY_APPLICATION,
+    KEY_KP_0,
+    KEY_KP_1,
+    KEY_KP_2,
+    KEY_KP_3,
+    KEY_KP_4,
+    KEY_KP_5,
+    KEY_KP_6,
+    KEY_KP_7,
+    KEY_KP_8,
+    KEY_KP_9,
+    KEY_KP_MULTIPLY,
+    KEY_KP_PLUS,
+    KEY_KP_MINUS,
+    KEY_KP_PERIOD,
+    KEY_KP_DIVIDE,
+    KEY_F1,
+    KEY_F2,
+    KEY_F3,
+    KEY_F4,
+    KEY_F5,
+    KEY_F6,
+    KEY_F7,
+    KEY_F8,
+    KEY_F9,
+    KEY_F10,
+    KEY_F11,
+    KEY_F12,
+    KEY_F13,
+    KEY_F14,
+    KEY_F15,
+    KEY_F16,
+    KEY_F17,
+    KEY_F18,
+    KEY_F19,
+    KEY_F20,
+    KEY_F21,
+    KEY_F22,
+    KEY_F23,
+    KEY_F24,
+    KEY_NUMLOCKCLEAR,
+    KEY_SCROLLLOCK,
+    KEY_LSHIFT,
+    KEY_RSHIFT,
+    KEY_LCTRL,
+    KEY_RCTRL,
+    KEY_LALT,
+    KEY_RALT,
+    KEY_AC_BACK,
+    KEY_AC_BOOKMARKS,
+    KEY_AC_FORWARD,
+    KEY_AC_HOME,
+    KEY_AC_REFRESH,
+    KEY_AC_SEARCH,
+    KEY_AC_STOP,
+    KEY_AGAIN,
+    KEY_ALTERASE,
+    KEY_AMPERSAND,
+    KEY_ASTERISK,
+    KEY_AT,
+    KEY_AUDIOMUTE,
+    KEY_AUDIONEXT,
+    KEY_AUDIOPLAY,
+    KEY_AUDIOPREV,
+    KEY_AUDIOSTOP,
+    KEY_BACKQUOTE,
+    KEY_BACKSLASH,
+    KEY_BRIGHTNESSDOWN,
+    KEY_BRIGHTNESSUP,
+    KEY_CALCULATOR,
+    KEY_CANCEL,
+    KEY_CARET,
+    KEY_CLEAR,
+    KEY_CLEARAGAIN,
+    KEY_COLON,
+    KEY_COMMA,
+    KEY_COMPUTER,
+    KEY_COPY,
+    KEY_CRSEL,
+    KEY_CURRENCYSUBUNIT,
+    KEY_CURRENCYUNIT,
+    KEY_CUT,
+    KEY_DECIMALSEPARATOR,
+    KEY_DISPLAYSWITCH,
+    KEY_DOLLAR,
+    KEY_EJECT,
+    KEY_EQUALS,
+    KEY_EXCLAIM,
+    KEY_EXSEL,
+    KEY_FIND,
+    KEY_GREATER,
+    KEY_HASH,
+    KEY_HELP,
+    KEY_KBDILLUMDOWN,
+    KEY_KBDILLUMTOGGLE,
+    KEY_KBDILLUMUP,
+    KEY_KP_00,
+    KEY_KP_000,
+    KEY_KP_A,
+    KEY_KP_AMPERSAND,
+    KEY_KP_AT,
+    KEY_KP_B,
+    KEY_KP_BACKSPACE,
+    KEY_KP_BINARY,
+    KEY_KP_C,
+    KEY_KP_CLEAR,
+    KEY_KP_CLEARENTRY,
+    KEY_KP_COLON,
+    KEY_KP_COMMA,
+    KEY_KP_D,
+    KEY_KP_DBLAMPERSAND,
+    KEY_KP_DBLVERTICALBAR,
+    KEY_KP_DECIMAL,
+    KEY_KP_E,
+    KEY_KP_EQUALS,
+    KEY_KP_EQUALSAS400,
+    KEY_KP_EXCLAM,
+    KEY_KP_F,
+    KEY_KP_GREATER,
+    KEY_KP_HASH,
+    KEY_KP_HEXADECIMAL,
+    KEY_KP_LEFTBRACE,
+    KEY_KP_LEFTPAREN,
+    KEY_KP_LESS,
+    KEY_KP_MEMADD,
+    KEY_KP_MEMCLEAR,
+    KEY_KP_MEMDIVIDE,
+    KEY_KP_MEMMULTIPLY,
+    KEY_KP_MEMRECALL,
+    KEY_KP_MEMSTORE,
+    KEY_KP_MEMSUBTRACT,
+    KEY_KP_OCTAL,
+    KEY_KP_PERCENT,
+    KEY_KP_PLUSMINUS,
+    KEY_KP_POWER,
+    KEY_KP_RIGHTBRACE,
+    KEY_KP_RIGHTPAREN,
+    KEY_KP_SPACE,
+    KEY_KP_TAB,
+    KEY_KP_VERTICALBAR,
+    KEY_KP_XOR,
+    KEY_LEFTBRACKET,
+    KEY_LEFTPAREN,
+    KEY_LESS,
+    KEY_MAIL,
+    KEY_MEDIASELECT,
+    KEY_MENU,
+    KEY_MINUS,
+    KEY_MODE,
+    KEY_MUTE,
+    KEY_OPER,
+    KEY_OUT,
+    KEY_PASTE,
+    KEY_PERCENT,
+    KEY_PERIOD,
+    KEY_PLUS,
+    KEY_POWER,
+    KEY_PRIOR,
+    KEY_QUESTION,
+    KEY_QUOTE,
+    KEY_QUOTEDBL,
+    KEY_RIGHTBRACKET,
+    KEY_RIGHTPAREN,
+    KEY_SEMICOLON,
+    KEY_SEPARATOR,
+    KEY_SLASH,
+    KEY_SLEEP,
+    KEY_STOP,
+    KEY_SYSREQ,
+    KEY_THOUSANDSSEPARATOR,
+    KEY_UNDERSCORE,
+    KEY_UNDO,
+    KEY_VOLUMEDOWN,
+    KEY_VOLUMEUP,
+    KEY_WWW
+};
 
-static const int SCANCODE_UNKNOWN;
-static const int SCANCODE_CTRL;
-static const int SCANCODE_SHIFT;
-static const int SCANCODE_ALT;
-static const int SCANCODE_GUI;
-static const int SCANCODE_A;
-static const int SCANCODE_B;
-static const int SCANCODE_C;
-static const int SCANCODE_D;
-static const int SCANCODE_E;
-static const int SCANCODE_F;
-static const int SCANCODE_G;
-static const int SCANCODE_H;
-static const int SCANCODE_I;
-static const int SCANCODE_J;
-static const int SCANCODE_K;
-static const int SCANCODE_L;
-static const int SCANCODE_M;
-static const int SCANCODE_N;
-static const int SCANCODE_O;
-static const int SCANCODE_P;
-static const int SCANCODE_Q;
-static const int SCANCODE_R;
-static const int SCANCODE_S;
-static const int SCANCODE_T;
-static const int SCANCODE_U;
-static const int SCANCODE_V;
-static const int SCANCODE_W;
-static const int SCANCODE_X;
-static const int SCANCODE_Y;
-static const int SCANCODE_Z;
-static const int SCANCODE_1;
-static const int SCANCODE_2;
-static const int SCANCODE_3;
-static const int SCANCODE_4;
-static const int SCANCODE_5;
-static const int SCANCODE_6;
-static const int SCANCODE_7;
-static const int SCANCODE_8;
-static const int SCANCODE_9;
-static const int SCANCODE_0;
-static const int SCANCODE_RETURN;
-static const int SCANCODE_ESCAPE;
-static const int SCANCODE_BACKSPACE;
-static const int SCANCODE_TAB;
-static const int SCANCODE_SPACE;
-static const int SCANCODE_MINUS;
-static const int SCANCODE_EQUALS;
-static const int SCANCODE_LEFTBRACKET;
-static const int SCANCODE_RIGHTBRACKET;
-static const int SCANCODE_BACKSLASH;
-static const int SCANCODE_NONUSHASH;
-static const int SCANCODE_SEMICOLON;
-static const int SCANCODE_APOSTROPHE;
-static const int SCANCODE_GRAVE;
-static const int SCANCODE_COMMA;
-static const int SCANCODE_PERIOD;
-static const int SCANCODE_SLASH;
-static const int SCANCODE_CAPSLOCK;
-static const int SCANCODE_F1;
-static const int SCANCODE_F2;
-static const int SCANCODE_F3;
-static const int SCANCODE_F4;
-static const int SCANCODE_F5;
-static const int SCANCODE_F6;
-static const int SCANCODE_F7;
-static const int SCANCODE_F8;
-static const int SCANCODE_F9;
-static const int SCANCODE_F10;
-static const int SCANCODE_F11;
-static const int SCANCODE_F12;
-static const int SCANCODE_PRINTSCREEN;
-static const int SCANCODE_SCROLLLOCK;
-static const int SCANCODE_PAUSE;
-static const int SCANCODE_INSERT;
-static const int SCANCODE_HOME;
-static const int SCANCODE_PAGEUP;
-static const int SCANCODE_DELETE;
-static const int SCANCODE_END;
-static const int SCANCODE_PAGEDOWN;
-static const int SCANCODE_RIGHT;
-static const int SCANCODE_LEFT;
-static const int SCANCODE_DOWN;
-static const int SCANCODE_UP;
-static const int SCANCODE_NUMLOCKCLEAR;
-static const int SCANCODE_KP_DIVIDE;
-static const int SCANCODE_KP_MULTIPLY;
-static const int SCANCODE_KP_MINUS;
-static const int SCANCODE_KP_PLUS;
-static const int SCANCODE_KP_ENTER;
-static const int SCANCODE_KP_1;
-static const int SCANCODE_KP_2;
-static const int SCANCODE_KP_3;
-static const int SCANCODE_KP_4;
-static const int SCANCODE_KP_5;
-static const int SCANCODE_KP_6;
-static const int SCANCODE_KP_7;
-static const int SCANCODE_KP_8;
-static const int SCANCODE_KP_9;
-static const int SCANCODE_KP_0;
-static const int SCANCODE_KP_PERIOD;
-static const int SCANCODE_NONUSBACKSLASH;
-static const int SCANCODE_APPLICATION;
-static const int SCANCODE_POWER;
-static const int SCANCODE_KP_EQUALS;
-static const int SCANCODE_F13;
-static const int SCANCODE_F14;
-static const int SCANCODE_F15;
-static const int SCANCODE_F16;
-static const int SCANCODE_F17;
-static const int SCANCODE_F18;
-static const int SCANCODE_F19;
-static const int SCANCODE_F20;
-static const int SCANCODE_F21;
-static const int SCANCODE_F22;
-static const int SCANCODE_F23;
-static const int SCANCODE_F24;
-static const int SCANCODE_EXECUTE;
-static const int SCANCODE_HELP;
-static const int SCANCODE_MENU;
-static const int SCANCODE_SELECT;
-static const int SCANCODE_STOP;
-static const int SCANCODE_AGAIN;
-static const int SCANCODE_UNDO;
-static const int SCANCODE_CUT;
-static const int SCANCODE_COPY;
-static const int SCANCODE_PASTE;
-static const int SCANCODE_FIND;
-static const int SCANCODE_MUTE;
-static const int SCANCODE_VOLUMEUP;
-static const int SCANCODE_VOLUMEDOWN;
-static const int SCANCODE_KP_COMMA;
-static const int SCANCODE_KP_EQUALSAS400;
-static const int SCANCODE_INTERNATIONAL1;
-static const int SCANCODE_INTERNATIONAL2;
-static const int SCANCODE_INTERNATIONAL3;
-static const int SCANCODE_INTERNATIONAL4;
-static const int SCANCODE_INTERNATIONAL5;
-static const int SCANCODE_INTERNATIONAL6;
-static const int SCANCODE_INTERNATIONAL7;
-static const int SCANCODE_INTERNATIONAL8;
-static const int SCANCODE_INTERNATIONAL9;
-static const int SCANCODE_LANG1;
-static const int SCANCODE_LANG2;
-static const int SCANCODE_LANG3;
-static const int SCANCODE_LANG4;
-static const int SCANCODE_LANG5;
-static const int SCANCODE_LANG6;
-static const int SCANCODE_LANG7;
-static const int SCANCODE_LANG8;
-static const int SCANCODE_LANG9;
-static const int SCANCODE_ALTERASE;
-static const int SCANCODE_SYSREQ;
-static const int SCANCODE_CANCEL;
-static const int SCANCODE_CLEAR;
-static const int SCANCODE_PRIOR;
-static const int SCANCODE_RETURN2;
-static const int SCANCODE_SEPARATOR;
-static const int SCANCODE_OUT;
-static const int SCANCODE_OPER;
-static const int SCANCODE_CLEARAGAIN;
-static const int SCANCODE_CRSEL;
-static const int SCANCODE_EXSEL;
-static const int SCANCODE_KP_00;
-static const int SCANCODE_KP_000;
-static const int SCANCODE_THOUSANDSSEPARATOR;
-static const int SCANCODE_DECIMALSEPARATOR;
-static const int SCANCODE_CURRENCYUNIT;
-static const int SCANCODE_CURRENCYSUBUNIT;
-static const int SCANCODE_KP_LEFTPAREN;
-static const int SCANCODE_KP_RIGHTPAREN;
-static const int SCANCODE_KP_LEFTBRACE;
-static const int SCANCODE_KP_RIGHTBRACE;
-static const int SCANCODE_KP_TAB;
-static const int SCANCODE_KP_BACKSPACE;
-static const int SCANCODE_KP_A;
-static const int SCANCODE_KP_B;
-static const int SCANCODE_KP_C;
-static const int SCANCODE_KP_D;
-static const int SCANCODE_KP_E;
-static const int SCANCODE_KP_F;
-static const int SCANCODE_KP_XOR;
-static const int SCANCODE_KP_POWER;
-static const int SCANCODE_KP_PERCENT;
-static const int SCANCODE_KP_LESS;
-static const int SCANCODE_KP_GREATER;
-static const int SCANCODE_KP_AMPERSAND;
-static const int SCANCODE_KP_DBLAMPERSAND;
-static const int SCANCODE_KP_VERTICALBAR;
-static const int SCANCODE_KP_DBLVERTICALBAR;
-static const int SCANCODE_KP_COLON;
-static const int SCANCODE_KP_HASH;
-static const int SCANCODE_KP_SPACE;
-static const int SCANCODE_KP_AT;
-static const int SCANCODE_KP_EXCLAM;
-static const int SCANCODE_KP_MEMSTORE;
-static const int SCANCODE_KP_MEMRECALL;
-static const int SCANCODE_KP_MEMCLEAR;
-static const int SCANCODE_KP_MEMADD;
-static const int SCANCODE_KP_MEMSUBTRACT;
-static const int SCANCODE_KP_MEMMULTIPLY;
-static const int SCANCODE_KP_MEMDIVIDE;
-static const int SCANCODE_KP_PLUSMINUS;
-static const int SCANCODE_KP_CLEAR;
-static const int SCANCODE_KP_CLEARENTRY;
-static const int SCANCODE_KP_BINARY;
-static const int SCANCODE_KP_OCTAL;
-static const int SCANCODE_KP_DECIMAL;
-static const int SCANCODE_KP_HEXADECIMAL;
-static const int SCANCODE_LCTRL;
-static const int SCANCODE_LSHIFT;
-static const int SCANCODE_LALT;
-static const int SCANCODE_LGUI;
-static const int SCANCODE_RCTRL;
-static const int SCANCODE_RSHIFT;
-static const int SCANCODE_RALT;
-static const int SCANCODE_RGUI;
-static const int SCANCODE_MODE;
-static const int SCANCODE_AUDIONEXT;
-static const int SCANCODE_AUDIOPREV;
-static const int SCANCODE_AUDIOSTOP;
-static const int SCANCODE_AUDIOPLAY;
-static const int SCANCODE_AUDIOMUTE;
-static const int SCANCODE_MEDIASELECT;
-static const int SCANCODE_WWW;
-static const int SCANCODE_MAIL;
-static const int SCANCODE_CALCULATOR;
-static const int SCANCODE_COMPUTER;
-static const int SCANCODE_AC_SEARCH;
-static const int SCANCODE_AC_HOME;
-static const int SCANCODE_AC_BACK;
-static const int SCANCODE_AC_FORWARD;
-static const int SCANCODE_AC_STOP;
-static const int SCANCODE_AC_REFRESH;
-static const int SCANCODE_AC_BOOKMARKS;
-static const int SCANCODE_BRIGHTNESSDOWN;
-static const int SCANCODE_BRIGHTNESSUP;
-static const int SCANCODE_DISPLAYSWITCH;
-static const int SCANCODE_KBDILLUMTOGGLE;
-static const int SCANCODE_KBDILLUMDOWN;
-static const int SCANCODE_KBDILLUMUP;
-static const int SCANCODE_EJECT;
-static const int SCANCODE_SLEEP;
-static const int SCANCODE_APP1;
-static const int SCANCODE_APP2;
+enum Scancode
+{
+    SCANCODE_UNKNOWN,
+    SCANCODE_CTRL,
+    SCANCODE_SHIFT,
+    SCANCODE_ALT,
+    SCANCODE_GUI,
+    SCANCODE_A,
+    SCANCODE_B,
+    SCANCODE_C,
+    SCANCODE_D,
+    SCANCODE_E,
+    SCANCODE_F,
+    SCANCODE_G,
+    SCANCODE_H,
+    SCANCODE_I,
+    SCANCODE_J,
+    SCANCODE_K,
+    SCANCODE_L,
+    SCANCODE_M,
+    SCANCODE_N,
+    SCANCODE_O,
+    SCANCODE_P,
+    SCANCODE_Q,
+    SCANCODE_R,
+    SCANCODE_S,
+    SCANCODE_T,
+    SCANCODE_U,
+    SCANCODE_V,
+    SCANCODE_W,
+    SCANCODE_X,
+    SCANCODE_Y,
+    SCANCODE_Z,
+    SCANCODE_1,
+    SCANCODE_2,
+    SCANCODE_3,
+    SCANCODE_4,
+    SCANCODE_5,
+    SCANCODE_6,
+    SCANCODE_7,
+    SCANCODE_8,
+    SCANCODE_9,
+    SCANCODE_0,
+    SCANCODE_RETURN,
+    SCANCODE_ESCAPE,
+    SCANCODE_BACKSPACE,
+    SCANCODE_TAB,
+    SCANCODE_SPACE,
+    SCANCODE_MINUS,
+    SCANCODE_EQUALS,
+    SCANCODE_LEFTBRACKET,
+    SCANCODE_RIGHTBRACKET,
+    SCANCODE_BACKSLASH,
+    SCANCODE_NONUSHASH,
+    SCANCODE_SEMICOLON,
+    SCANCODE_APOSTROPHE,
+    SCANCODE_GRAVE,
+    SCANCODE_COMMA,
+    SCANCODE_PERIOD,
+    SCANCODE_SLASH,
+    SCANCODE_CAPSLOCK,
+    SCANCODE_F1,
+    SCANCODE_F2,
+    SCANCODE_F3,
+    SCANCODE_F4,
+    SCANCODE_F5,
+    SCANCODE_F6,
+    SCANCODE_F7,
+    SCANCODE_F8,
+    SCANCODE_F9,
+    SCANCODE_F10,
+    SCANCODE_F11,
+    SCANCODE_F12,
+    SCANCODE_PRINTSCREEN,
+    SCANCODE_SCROLLLOCK,
+    SCANCODE_PAUSE,
+    SCANCODE_INSERT,
+    SCANCODE_HOME,
+    SCANCODE_PAGEUP,
+    SCANCODE_DELETE,
+    SCANCODE_END,
+    SCANCODE_PAGEDOWN,
+    SCANCODE_RIGHT,
+    SCANCODE_LEFT,
+    SCANCODE_DOWN,
+    SCANCODE_UP,
+    SCANCODE_NUMLOCKCLEAR,
+    SCANCODE_KP_DIVIDE,
+    SCANCODE_KP_MULTIPLY,
+    SCANCODE_KP_MINUS,
+    SCANCODE_KP_PLUS,
+    SCANCODE_KP_ENTER,
+    SCANCODE_KP_1,
+    SCANCODE_KP_2,
+    SCANCODE_KP_3,
+    SCANCODE_KP_4,
+    SCANCODE_KP_5,
+    SCANCODE_KP_6,
+    SCANCODE_KP_7,
+    SCANCODE_KP_8,
+    SCANCODE_KP_9,
+    SCANCODE_KP_0,
+    SCANCODE_KP_PERIOD,
+    SCANCODE_NONUSBACKSLASH,
+    SCANCODE_APPLICATION,
+    SCANCODE_POWER,
+    SCANCODE_KP_EQUALS,
+    SCANCODE_F13,
+    SCANCODE_F14,
+    SCANCODE_F15,
+    SCANCODE_F16,
+    SCANCODE_F17,
+    SCANCODE_F18,
+    SCANCODE_F19,
+    SCANCODE_F20,
+    SCANCODE_F21,
+    SCANCODE_F22,
+    SCANCODE_F23,
+    SCANCODE_F24,
+    SCANCODE_EXECUTE,
+    SCANCODE_HELP,
+    SCANCODE_MENU,
+    SCANCODE_SELECT,
+    SCANCODE_STOP,
+    SCANCODE_AGAIN,
+    SCANCODE_UNDO,
+    SCANCODE_CUT,
+    SCANCODE_COPY,
+    SCANCODE_PASTE,
+    SCANCODE_FIND,
+    SCANCODE_MUTE,
+    SCANCODE_VOLUMEUP,
+    SCANCODE_VOLUMEDOWN,
+    SCANCODE_KP_COMMA,
+    SCANCODE_KP_EQUALSAS400,
+    SCANCODE_INTERNATIONAL1,
+    SCANCODE_INTERNATIONAL2,
+    SCANCODE_INTERNATIONAL3,
+    SCANCODE_INTERNATIONAL4,
+    SCANCODE_INTERNATIONAL5,
+    SCANCODE_INTERNATIONAL6,
+    SCANCODE_INTERNATIONAL7,
+    SCANCODE_INTERNATIONAL8,
+    SCANCODE_INTERNATIONAL9,
+    SCANCODE_LANG1,
+    SCANCODE_LANG2,
+    SCANCODE_LANG3,
+    SCANCODE_LANG4,
+    SCANCODE_LANG5,
+    SCANCODE_LANG6,
+    SCANCODE_LANG7,
+    SCANCODE_LANG8,
+    SCANCODE_LANG9,
+    SCANCODE_ALTERASE,
+    SCANCODE_SYSREQ,
+    SCANCODE_CANCEL,
+    SCANCODE_CLEAR,
+    SCANCODE_PRIOR,
+    SCANCODE_RETURN2,
+    SCANCODE_SEPARATOR,
+    SCANCODE_OUT,
+    SCANCODE_OPER,
+    SCANCODE_CLEARAGAIN,
+    SCANCODE_CRSEL,
+    SCANCODE_EXSEL,
+    SCANCODE_KP_00,
+    SCANCODE_KP_000,
+    SCANCODE_THOUSANDSSEPARATOR,
+    SCANCODE_DECIMALSEPARATOR,
+    SCANCODE_CURRENCYUNIT,
+    SCANCODE_CURRENCYSUBUNIT,
+    SCANCODE_KP_LEFTPAREN,
+    SCANCODE_KP_RIGHTPAREN,
+    SCANCODE_KP_LEFTBRACE,
+    SCANCODE_KP_RIGHTBRACE,
+    SCANCODE_KP_TAB,
+    SCANCODE_KP_BACKSPACE,
+    SCANCODE_KP_A,
+    SCANCODE_KP_B,
+    SCANCODE_KP_C,
+    SCANCODE_KP_D,
+    SCANCODE_KP_E,
+    SCANCODE_KP_F,
+    SCANCODE_KP_XOR,
+    SCANCODE_KP_POWER,
+    SCANCODE_KP_PERCENT,
+    SCANCODE_KP_LESS,
+    SCANCODE_KP_GREATER,
+    SCANCODE_KP_AMPERSAND,
+    SCANCODE_KP_DBLAMPERSAND,
+    SCANCODE_KP_VERTICALBAR,
+    SCANCODE_KP_DBLVERTICALBAR,
+    SCANCODE_KP_COLON,
+    SCANCODE_KP_HASH,
+    SCANCODE_KP_SPACE,
+    SCANCODE_KP_AT,
+    SCANCODE_KP_EXCLAM,
+    SCANCODE_KP_MEMSTORE,
+    SCANCODE_KP_MEMRECALL,
+    SCANCODE_KP_MEMCLEAR,
+    SCANCODE_KP_MEMADD,
+    SCANCODE_KP_MEMSUBTRACT,
+    SCANCODE_KP_MEMMULTIPLY,
+    SCANCODE_KP_MEMDIVIDE,
+    SCANCODE_KP_PLUSMINUS,
+    SCANCODE_KP_CLEAR,
+    SCANCODE_KP_CLEARENTRY,
+    SCANCODE_KP_BINARY,
+    SCANCODE_KP_OCTAL,
+    SCANCODE_KP_DECIMAL,
+    SCANCODE_KP_HEXADECIMAL,
+    SCANCODE_LCTRL,
+    SCANCODE_LSHIFT,
+    SCANCODE_LALT,
+    SCANCODE_LGUI,
+    SCANCODE_RCTRL,
+    SCANCODE_RSHIFT,
+    SCANCODE_RALT,
+    SCANCODE_RGUI,
+    SCANCODE_MODE,
+    SCANCODE_AUDIONEXT,
+    SCANCODE_AUDIOPREV,
+    SCANCODE_AUDIOSTOP,
+    SCANCODE_AUDIOPLAY,
+    SCANCODE_AUDIOMUTE,
+    SCANCODE_MEDIASELECT,
+    SCANCODE_WWW,
+    SCANCODE_MAIL,
+    SCANCODE_CALCULATOR,
+    SCANCODE_COMPUTER,
+    SCANCODE_AC_SEARCH,
+    SCANCODE_AC_HOME,
+    SCANCODE_AC_BACK,
+    SCANCODE_AC_FORWARD,
+    SCANCODE_AC_STOP,
+    SCANCODE_AC_REFRESH,
+    SCANCODE_AC_BOOKMARKS,
+    SCANCODE_BRIGHTNESSDOWN,
+    SCANCODE_BRIGHTNESSUP,
+    SCANCODE_DISPLAYSWITCH,
+    SCANCODE_KBDILLUMTOGGLE,
+    SCANCODE_KBDILLUMDOWN,
+    SCANCODE_KBDILLUMUP,
+    SCANCODE_EJECT,
+    SCANCODE_SLEEP,
+    SCANCODE_APP1,
+    SCANCODE_APP2
+};
 
-static const int HAT_CENTER;
-static const int HAT_UP;
-static const int HAT_RIGHT;
-static const int HAT_DOWN;
-static const int HAT_LEFT;
+enum HatPosition
+{
+    HAT_CENTER,
+    HAT_UP,
+    HAT_RIGHT,
+    HAT_DOWN,
+    HAT_LEFT,
+};
 
-static const int CONTROLLER_BUTTON_A;
-static const int CONTROLLER_BUTTON_B;
-static const int CONTROLLER_BUTTON_X;
-static const int CONTROLLER_BUTTON_Y;
-static const int CONTROLLER_BUTTON_BACK;
-static const int CONTROLLER_BUTTON_GUIDE;
-static const int CONTROLLER_BUTTON_START;
-static const int CONTROLLER_BUTTON_LEFTSTICK;
-static const int CONTROLLER_BUTTON_RIGHTSTICK;
-static const int CONTROLLER_BUTTON_LEFTSHOULDER;
-static const int CONTROLLER_BUTTON_RIGHTSHOULDER;
-static const int CONTROLLER_BUTTON_DPAD_UP;
-static const int CONTROLLER_BUTTON_DPAD_DOWN;
-static const int CONTROLLER_BUTTON_DPAD_LEFT;
-static const int CONTROLLER_BUTTON_DPAD_RIGHT;
+enum ControllerButton
+{
+    CONTROLLER_BUTTON_A,
+    CONTROLLER_BUTTON_B,
+    CONTROLLER_BUTTON_X,
+    CONTROLLER_BUTTON_Y,
+    CONTROLLER_BUTTON_BACK,
+    CONTROLLER_BUTTON_GUIDE,
+    CONTROLLER_BUTTON_START,
+    CONTROLLER_BUTTON_LEFTSTICK,
+    CONTROLLER_BUTTON_RIGHTSTICK,
+    CONTROLLER_BUTTON_LEFTSHOULDER,
+    CONTROLLER_BUTTON_RIGHTSHOULDER,
+    CONTROLLER_BUTTON_DPAD_UP,
+    CONTROLLER_BUTTON_DPAD_DOWN,
+    CONTROLLER_BUTTON_DPAD_LEFT,
+    CONTROLLER_BUTTON_DPAD_RIGHT    
+};
 
-static const int CONTROLLER_AXIS_LEFTX;
-static const int CONTROLLER_AXIS_LEFTY;
-static const int CONTROLLER_AXIS_RIGHTX;
-static const int CONTROLLER_AXIS_RIGHTY;
-static const int CONTROLLER_AXIS_TRIGGERLEFT;
-static const int CONTROLLER_AXIS_TRIGGERRIGHT;
+enum ControllerAxis
+{
+    CONTROLLER_AXIS_LEFTX,
+    CONTROLLER_AXIS_LEFTY,
+    CONTROLLER_AXIS_RIGHTX,
+    CONTROLLER_AXIS_RIGHTY,
+    CONTROLLER_AXIS_TRIGGERLEFT,
+    CONTROLLER_AXIS_TRIGGERRIGHT,
+};