diff --git a/HGamer3D-SDL2-Binding.cabal b/HGamer3D-SDL2-Binding.cabal
--- a/HGamer3D-SDL2-Binding.cabal
+++ b/HGamer3D-SDL2-Binding.cabal
@@ -1,5 +1,5 @@
 Name:                HGamer3D-SDL2-Binding
-Version:             0.3.2
+Version:             0.3.3
 Synopsis:            SDL2 Binding for HGamer3D
 Description:         
    HGamer3D is a game engine for developing 3D games in the programming 
@@ -18,7 +18,7 @@
 Cabal-Version:       >=1.4
 Homepage:            http://www.hgamer3d.org
 Category:            Game Engine
-Extra-source-files:  Setup.hs, include/HeaderSDLEvents.h, include/EnumSDLRendererFlags.h, include/StructHG3DClass.h, include/EnumSDLLogPriority.h, include/EnumSDLWindowShapeMode.h, include/HG3DUtilities.h, include/StructSDLEvent.h, include/HeaderSDL.h, include/EnumSDLMessageBoxColorType.h, include/EnumSDLThreadPriority.h, include/HeaderSDLVideo.h, include/EnumSDLBlendMode.h, include/EnumSDLEventType.h, include/EnumSDLHintPriority.h, include/EnumSDLGLAttr.h, include/EnumSDLWindowEventID.h, include/EnumSDLTextureAccess.h, include/EnumSDLRendererFlip.h, include/EnumSDLMessageBoxFlags.h, include/SDL2DllDefines.h, include/EnumSDLPowerState.h, include/EnumSDLSystemCursor.h, include/EnumSDLGameControllerButton.h, include/EnumSDLTextureModulate.h, include/HeaderSDLKeyboard.h, include/EnumSDLKeymod.h, include/EnumSDLGameControllerAxis.h, include/EnumSDLScancode.h, include/EnumSDLGLProfile.h, include/EnumSDLWindowFlags.h, include/EnumSDLGlContextFlag.h, include/EnumSDLSysWMType.h, include/ClassPtr.h, include/EnumSDLMessageBoxButtonFlags.h, include/EnumSDLGameControllerBindType.h, include/HeaderSDLMouse.h
+Extra-source-files:  Setup.hs, include/HeaderSDLEvents.h, include/EnumSDLRendererFlags.h, include/StructHG3DClass.h, include/EnumSDLLogPriority.h, include/EnumSDLWindowShapeMode.h, include/HG3DUtilities.h, include/StructSDLEvent.h, include/HeaderSDL.h, include/EnumSDLMessageBoxColorType.h, include/EnumSDLThreadPriority.h, include/sdlevent_struct.h, include/HeaderSDLVideo.h, include/EnumSDLBlendMode.h, include/EnumSDLEventType.h, include/EnumSDLKeycode.h, include/EnumSDLHintPriority.h, include/EnumSDLGLAttr.h, include/EnumSDLWindowEventID.h, include/EnumSDLTextureAccess.h, include/EnumSDLRendererFlip.h, include/EnumSDLMessageBoxFlags.h, include/SDL2DllDefines.h, include/EnumSDLPowerState.h, include/EnumSDLSystemCursor.h, include/EnumSDLGameControllerButton.h, include/EnumSDLTextureModulate.h, include/HeaderSDLKeyboard.h, include/EnumSDLKeymod.h, include/EnumSDLGameControllerAxis.h, include/EnumSDLScancode.h, include/EnumSDLGLProfile.h, include/EnumSDLWindowFlags.h, include/EnumSDLGlContextFlag.h, include/EnumSDLSysWMType.h, include/ClassPtr.h, include/ClassHG3DUtilities.h, include/hg3dstruct.h, include/EnumSDLMessageBoxButtonFlags.h, include/EnumSDLGameControllerBindType.h, include/HeaderSDLMouse.h
 
 Library
   Build-Depends:     base >= 3 && < 5, utf8-string, bytestring, HGamer3D-Data >= 0.3.0
@@ -33,6 +33,6 @@
   Build-tools:       
   build-depends:     
   if os(windows)
-     extra-libraries:   hg3dsdl2032
+     extra-libraries:   hg3dsdl2033
   else
-     extra-libraries:   hg3dsdl2032,SDL2-2.0,X11
+     extra-libraries:   hg3dsdl2033,SDL2-2.0,X11
diff --git a/include/ClassHG3DUtilities.h b/include/ClassHG3DUtilities.h
new file mode 100644
--- /dev/null
+++ b/include/ClassHG3DUtilities.h
@@ -0,0 +1,33 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// ClassHG3DUtilities.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_ClassHG3DUtilities
+#define _DEFINED_HG3D_ClassHG3DUtilities
+
+#include "ClassPtr.h"
+
+
+// 
+void sdl2_hg3dutl_createWindowFromHandle(unsigned int handle_c, void * * result_c);
+
+#endif 
diff --git a/include/EnumSDLKeycode.h b/include/EnumSDLKeycode.h
new file mode 100644
--- /dev/null
+++ b/include/EnumSDLKeycode.h
@@ -0,0 +1,278 @@
+// This source file is part of HGamer3D, a project to enable 3D game development 
+// in Haskell. For the latest info, see http://www.hgamer3d.org .
+// 
+// (c) 2011-2014 Peter Althainz
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//     http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// 
+
+// EnumSDLKeycode.h
+
+// 
+
+#include "wchar.h"
+#ifndef _DEFINED_HG3D_EnumSDLKeycode
+#define _DEFINED_HG3D_EnumSDLKeycode
+
+
+enum EnumSDLKeycode
+{
+  SDLK_UNKNOWN =  0, // 
+  SDLK_RETURN =  '\r', // 
+  SDLK_ESCAPE =  '\033', // 
+  SDLK_BACKSPACE =  '\b', // 
+  SDLK_TAB =  '\t', // 
+  SDLK_SPACE =  ' ', // 
+  SDLK_EXCLAIM =  '!', // 
+  SDLK_QUOTEDBL =  '"', // 
+  SDLK_HASH =  '#', // 
+  SDLK_PERCENT =  '%', // 
+  SDLK_DOLLAR =  '$', // 
+  SDLK_AMPERSAND =  '&', // 
+  SDLK_LEFTPAREN =  '(', // 
+  SDLK_RIGHTPAREN =  ')', // 
+  SDLK_ASTERISK =  '*', // 
+  SDLK_PLUS =  '+', // 
+  SDLK_COMMA =  ',', // 
+  SDLK_MINUS =  '-', // 
+  SDLK_PERIOD =  '.', // 
+  SDLK_SLASH =  '/', // 
+  SDLK_0 =  '0', // 
+  SDLK_1 =  '1', // 
+  SDLK_2 =  '2', // 
+  SDLK_3 =  '3', // 
+  SDLK_4 =  '4', // 
+  SDLK_5 =  '5', // 
+  SDLK_6 =  '6', // 
+  SDLK_7 =  '7', // 
+  SDLK_8 =  '8', // 
+  SDLK_9 =  '9', // 
+  SDLK_COLON =  ':', // 
+  SDLK_SEMICOLON =  ';', // 
+  SDLK_LESS =  '<', // 
+  SDLK_EQUALS =  '', // 
+  SDLK_GREATER =  '>', // 
+  SDLK_QUESTION =  '?', // 
+  SDLK_AT =  '@', // 
+  SDLK_LEFTBRACKET =  '[', // 
+  SDLK_BACKSLASH =  '\\', // 
+  SDLK_RIGHTBRACKET =  ']', // 
+  SDLK_CARET =  '^', // 
+  SDLK_UNDERSCORE =  '_', // 
+  SDLK_BACKQUOTE =  '`', // 
+  SDLK_a =  'a', // 
+  SDLK_b =  'b', // 
+  SDLK_c =  'c', // 
+  SDLK_d =  'd', // 
+  SDLK_e =  'e', // 
+  SDLK_f =  'f', // 
+  SDLK_g =  'g', // 
+  SDLK_h =  'h', // 
+  SDLK_i =  'i', // 
+  SDLK_j =  'j', // 
+  SDLK_k =  'k', // 
+  SDLK_l =  'l', // 
+  SDLK_m =  'm', // 
+  SDLK_n =  'n', // 
+  SDLK_o =  'o', // 
+  SDLK_p =  'p', // 
+  SDLK_q =  'q', // 
+  SDLK_r =  'r', // 
+  SDLK_s =  's', // 
+  SDLK_t =  't', // 
+  SDLK_u =  'u', // 
+  SDLK_v =  'v', // 
+  SDLK_w =  'w', // 
+  SDLK_x =  'x', // 
+  SDLK_y =  'y', // 
+  SDLK_z =  'z', // 
+  SDLK_CAPSLOCK =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CAPSLOCK), // 
+  SDLK_F1 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F1), // 
+  SDLK_F2 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F2), // 
+  SDLK_F3 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F3), // 
+  SDLK_F4 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F4), // 
+  SDLK_F5 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F5), // 
+  SDLK_F6 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F6), // 
+  SDLK_F7 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F7), // 
+  SDLK_F8 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F8), // 
+  SDLK_F9 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F9), // 
+  SDLK_F10 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F10), // 
+  SDLK_F11 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F11), // 
+  SDLK_F12 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F12), // 
+  SDLK_PRINTSCREEN =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRINTSCREEN), // 
+  SDLK_SCROLLLOCK =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SCROLLLOCK), // 
+  SDLK_PAUSE =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAUSE), // 
+  SDLK_INSERT =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_INSERT), // 
+  SDLK_HOME =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HOME), // 
+  SDLK_PAGEUP =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEUP), // 
+  SDLK_DELETE =  '\177', // 
+  SDLK_END =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_END), // 
+  SDLK_PAGEDOWN =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEDOWN), // 
+  SDLK_RIGHT =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RIGHT), // 
+  SDLK_LEFT =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LEFT), // 
+  SDLK_DOWN =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DOWN), // 
+  SDLK_UP =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UP), // 
+  SDLK_NUMLOCKCLEAR =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_NUMLOCKCLEAR), // 
+  SDLK_KP_DIVIDE =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DIVIDE), // 
+  SDLK_KP_MULTIPLY =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MULTIPLY), // 
+  SDLK_KP_MINUS =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MINUS), // 
+  SDLK_KP_PLUS =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUS), // 
+  SDLK_KP_ENTER =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_ENTER), // 
+  SDLK_KP_1 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_1), // 
+  SDLK_KP_2 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_2), // 
+  SDLK_KP_3 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_3), // 
+  SDLK_KP_4 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_4), // 
+  SDLK_KP_5 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_5), // 
+  SDLK_KP_6 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_6), // 
+  SDLK_KP_7 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_7), // 
+  SDLK_KP_8 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_8), // 
+  SDLK_KP_9 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_9), // 
+  SDLK_KP_0 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_0), // 
+  SDLK_KP_PERIOD =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERIOD), // 
+  SDLK_APPLICATION =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APPLICATION), // 
+  SDLK_POWER =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_POWER), // 
+  SDLK_KP_EQUALS =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALS), // 
+  SDLK_F13 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F13), // 
+  SDLK_F14 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F14), // 
+  SDLK_F15 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F15), // 
+  SDLK_F16 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F16), // 
+  SDLK_F17 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F17), // 
+  SDLK_F18 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F18), // 
+  SDLK_F19 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F19), // 
+  SDLK_F20 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F20), // 
+  SDLK_F21 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F21), // 
+  SDLK_F22 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F22), // 
+  SDLK_F23 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F23), // 
+  SDLK_F24 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F24), // 
+  SDLK_EXECUTE =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXECUTE), // 
+  SDLK_HELP =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HELP), // 
+  SDLK_MENU =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MENU), // 
+  SDLK_SELECT =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SELECT), // 
+  SDLK_STOP =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_STOP), // 
+  SDLK_AGAIN =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AGAIN), // 
+  SDLK_UNDO =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UNDO), // 
+  SDLK_CUT =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CUT), // 
+  SDLK_COPY =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COPY), // 
+  SDLK_PASTE =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PASTE), // 
+  SDLK_FIND =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_FIND), // 
+  SDLK_MUTE =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MUTE), // 
+  SDLK_VOLUMEUP =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEUP), // 
+  SDLK_VOLUMEDOWN =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEDOWN), // 
+  SDLK_KP_COMMA =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COMMA), // 
+  SDLK_KP_EQUALSAS400 = 
+        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALSAS400), // 
+  SDLK_ALTERASE =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_ALTERASE), // 
+  SDLK_SYSREQ =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SYSREQ), // 
+  SDLK_CANCEL =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CANCEL), // 
+  SDLK_CLEAR =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEAR), // 
+  SDLK_PRIOR =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRIOR), // 
+  SDLK_RETURN2 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RETURN2), // 
+  SDLK_SEPARATOR =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SEPARATOR), // 
+  SDLK_OUT =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OUT), // 
+  SDLK_OPER =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OPER), // 
+  SDLK_CLEARAGAIN =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEARAGAIN), // 
+  SDLK_CRSEL =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CRSEL), // 
+  SDLK_EXSEL =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXSEL), // 
+  SDLK_KP_00 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_00), // 
+  SDLK_KP_000 =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_000), // 
+  SDLK_THOUSANDSSEPARATOR = 
+        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_THOUSANDSSEPARATOR), // 
+  SDLK_DECIMALSEPARATOR = 
+        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DECIMALSEPARATOR), // 
+  SDLK_CURRENCYUNIT =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYUNIT), // 
+  SDLK_CURRENCYSUBUNIT = 
+        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYSUBUNIT), // 
+  SDLK_KP_LEFTPAREN =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTPAREN), // 
+  SDLK_KP_RIGHTPAREN =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTPAREN), // 
+  SDLK_KP_LEFTBRACE =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTBRACE), // 
+  SDLK_KP_RIGHTBRACE =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTBRACE), // 
+  SDLK_KP_TAB =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_TAB), // 
+  SDLK_KP_BACKSPACE =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BACKSPACE), // 
+  SDLK_KP_A =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_A), // 
+  SDLK_KP_B =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_B), // 
+  SDLK_KP_C =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_C), // 
+  SDLK_KP_D =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_D), // 
+  SDLK_KP_E =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_E), // 
+  SDLK_KP_F =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_F), // 
+  SDLK_KP_XOR =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_XOR), // 
+  SDLK_KP_POWER =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_POWER), // 
+  SDLK_KP_PERCENT =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERCENT), // 
+  SDLK_KP_LESS =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LESS), // 
+  SDLK_KP_GREATER =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_GREATER), // 
+  SDLK_KP_AMPERSAND =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AMPERSAND), // 
+  SDLK_KP_DBLAMPERSAND = 
+        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLAMPERSAND), // 
+  SDLK_KP_VERTICALBAR = 
+        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_VERTICALBAR), // 
+  SDLK_KP_DBLVERTICALBAR = 
+        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLVERTICALBAR), // 
+  SDLK_KP_COLON =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COLON), // 
+  SDLK_KP_HASH =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HASH), // 
+  SDLK_KP_SPACE =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_SPACE), // 
+  SDLK_KP_AT =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AT), // 
+  SDLK_KP_EXCLAM =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EXCLAM), // 
+  SDLK_KP_MEMSTORE =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSTORE), // 
+  SDLK_KP_MEMRECALL =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMRECALL), // 
+  SDLK_KP_MEMCLEAR =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMCLEAR), // 
+  SDLK_KP_MEMADD =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMADD), // 
+  SDLK_KP_MEMSUBTRACT = 
+        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSUBTRACT), // 
+  SDLK_KP_MEMMULTIPLY = 
+        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMMULTIPLY), // 
+  SDLK_KP_MEMDIVIDE =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMDIVIDE), // 
+  SDLK_KP_PLUSMINUS =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUSMINUS), // 
+  SDLK_KP_CLEAR =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEAR), // 
+  SDLK_KP_CLEARENTRY =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEARENTRY), // 
+  SDLK_KP_BINARY =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BINARY), // 
+  SDLK_KP_OCTAL =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_OCTAL), // 
+  SDLK_KP_DECIMAL =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DECIMAL), // 
+  SDLK_KP_HEXADECIMAL = 
+        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HEXADECIMAL), // 
+  SDLK_LCTRL =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LCTRL), // 
+  SDLK_LSHIFT =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LSHIFT), // 
+  SDLK_LALT =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LALT), // 
+  SDLK_LGUI =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LGUI), // 
+  SDLK_RCTRL =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RCTRL), // 
+  SDLK_RSHIFT =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RSHIFT), // 
+  SDLK_RALT =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RALT), // 
+  SDLK_RGUI =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RGUI), // 
+  SDLK_MODE =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MODE), // 
+  SDLK_AUDIONEXT =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIONEXT), // 
+  SDLK_AUDIOPREV =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPREV), // 
+  SDLK_AUDIOSTOP =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOSTOP), // 
+  SDLK_AUDIOPLAY =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPLAY), // 
+  SDLK_AUDIOMUTE =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOMUTE), // 
+  SDLK_MEDIASELECT =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MEDIASELECT), // 
+  SDLK_WWW =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_WWW), // 
+  SDLK_MAIL =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MAIL), // 
+  SDLK_CALCULATOR =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CALCULATOR), // 
+  SDLK_COMPUTER =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COMPUTER), // 
+  SDLK_AC_SEARCH =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_SEARCH), // 
+  SDLK_AC_HOME =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_HOME), // 
+  SDLK_AC_BACK =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BACK), // 
+  SDLK_AC_FORWARD =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_FORWARD), // 
+  SDLK_AC_STOP =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_STOP), // 
+  SDLK_AC_REFRESH =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_REFRESH), // 
+  SDLK_AC_BOOKMARKS =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BOOKMARKS), // 
+  SDLK_BRIGHTNESSDOWN = 
+        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSDOWN), // 
+  SDLK_BRIGHTNESSUP =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSUP), // 
+  SDLK_DISPLAYSWITCH =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DISPLAYSWITCH), // 
+  SDLK_KBDILLUMTOGGLE = 
+        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMTOGGLE), // 
+  SDLK_KBDILLUMDOWN =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMDOWN), // 
+  SDLK_KBDILLUMUP =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMUP), // 
+  SDLK_EJECT =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EJECT), // 
+  SDLK_SLEEP =  SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SLEEP) // 
+};
+#endif 
diff --git a/include/SDL2DllDefines.h b/include/SDL2DllDefines.h
--- a/include/SDL2DllDefines.h
+++ b/include/SDL2DllDefines.h
@@ -16,10 +16,10 @@
 
 // SDL2DllDefines.h
 
-#ifndef _HGamer3DSDL2032_DLLDEFINES_H_
-#define _HGamer3DSDL2032_DLLDEFINES_H_
+#ifndef _HGamer3DSDL2033_DLLDEFINES_H_
+#define _HGamer3DSDL2033_DLLDEFINES_H_
 
-/* Cmake will define HGamer3DSDL2032_EXPORTS on Windows when it
+/* Cmake will define HGamer3DSDL2033_EXPORTS on Windows when it
 configures to build a shared library. If you are going to use
 another build system on windows or create the visual studio
 projects by hand you need to define MyLibrary_EXPORTS when
@@ -29,13 +29,13 @@
 // We are using the Visual Studio Compiler and building Shared libraries
 
 #if (defined (_WIN32)) && !(defined (__GNUC__)) 
-  #if defined(HGamer3DSDL2032_EXPORTS)
+  #if defined(HGamer3DSDL2033_EXPORTS)
     #define  SDL2_LIB_EXPORT __declspec(dllexport)
   #else
     #define  SDL2_LIB_EXPORT __declspec(dllimport)
-  #endif /* HGamer3DSDL2032_EXPORTS */
+  #endif /* HGamer3DSDL2033_EXPORTS */
 #else /* defined (_WIN32) */
  #define SDL2_LIB_EXPORT
 #endif
 
-#endif /* _HGamer3DSDL2032_DLLDEFINES_H_ */
+#endif /* _HGamer3DSDL2033_DLLDEFINES_H_ */
diff --git a/include/hg3dstruct.h b/include/hg3dstruct.h
new file mode 100644
--- /dev/null
+++ b/include/hg3dstruct.h
@@ -0,0 +1,4 @@
+typedef struct hg3dclass_struct {
+	void *ptr;
+	void *fptr;
+} hg3dclass_struct;
diff --git a/include/sdlevent_struct.h b/include/sdlevent_struct.h
new file mode 100644
--- /dev/null
+++ b/include/sdlevent_struct.h
@@ -0,0 +1,3 @@
+typedef struct sdlevent_struct {
+  unsigned int sdl_event_data[14];
+} sdlevent_struct;
