diff --git a/HGamer3D-SDL2-Binding.cabal b/HGamer3D-SDL2-Binding.cabal
--- a/HGamer3D-SDL2-Binding.cabal
+++ b/HGamer3D-SDL2-Binding.cabal
@@ -1,13 +1,13 @@
 Name:                HGamer3D-SDL2-Binding
-Version:             0.4.0
+Version:             0.5.0
 Synopsis:            SDL2 Binding for HGamer3D
 Description:         
-   HGamer3D is a game engine for developing 3D games in the programming 
-   language Haskell. This package provides the SDL2 binding. 
-   HGamer3D-SDL2-Binding is available on Windows and Linux. 
-   This binding does not claim to have full coverage of SDL2 
-   functionality, but only to support what is needed for the
-   HGamer3D-WinEvent package.
+   HGamer3D is a toolset for developing 3D games in the programming 
+   language Haskell. This package provides the SDL2 binding. 
+   HGamer3D-SDL2-Binding is available on Windows and Linux. 
+   This binding does not claim to have full coverage of SDL2 
+   functionality, but only to support what is needed for the
+   HGamer3D-WinEvent package.
 
 	
 License:             OtherLicense
@@ -18,21 +18,21 @@
 Cabal-Version:       >=1.4
 Homepage:            http://www.hgamer3d.org
 Category:            Game Engine
-Extra-source-files:  Setup.hs, include/StructHG3DClass.h, include/HeaderSDL.h, include/EnumSDLSystemCursor.h, include/hg3dstruct.h, include/EnumSDLMessageBoxFlags.h, include/HeaderSDLMouse.h, include/EnumSDLWindowShapeMode.h, include/EnumSDLWindowFlags.h, include/EnumSDLScancode.h, include/EnumSDLGLAttr.h, include/EnumSDLGameControllerAxis.h, include/EnumSDLBlendMode.h, include/EnumSDLMessageBoxColorType.h, include/EnumSDLLogPriority.h, include/EnumSDLGlContextFlag.h, include/EnumSDLPixelFormat.h, include/EnumSDLGLProfile.h, include/EnumSDLTextureAccess.h, include/EnumSDLTextureModulate.h, include/HeaderSDLEvents.h, include/EnumSDLRendererFlags.h, include/ClassHG3DUtilities.h, include/EnumSDLPowerState.h, include/EnumSDLWindowEventID.h, include/EnumSDLKeymod.h, include/ClassPtr.h, include/EnumSDLLogCategory.h, include/EnumSDLRendererFlip.h, include/SDL2DllDefines.h, include/EnumSDLThreadPriority.h, include/EnumSDLPacketLayout.h, include/EnumSDLMessageBoxButtonFlags.h, include/EnumSDLGameControllerButton.h, include/HeaderSDLKeyboard.h, include/HeaderSDLVideo.h, include/sdlevent_struct.h, include/EnumSDLEventType.h, include/EnumSDLGameControllerBindType.h, include/EnumSDLHintPriority.h, include/EnumSDLKeycode.h, include/EnumSDLSysWMType.h, include/StructSDLEvent.h, include/HG3DUtilities.h
+Extra-source-files:  Setup.hs, include/ClassHG3DUtilities.h, include/ClassPtr.h, include/EnumSDLBlendMode.h, include/EnumSDLEventType.h, include/EnumSDLGameControllerAxis.h, include/EnumSDLGameControllerBindType.h, include/EnumSDLGameControllerButton.h, include/EnumSDLGLAttr.h, include/EnumSDLGlContextFlag.h, include/EnumSDLGLProfile.h, include/EnumSDLHintPriority.h, include/EnumSDLKeycode.h, include/EnumSDLKeymod.h, include/EnumSDLLogCategory.h, include/EnumSDLLogPriority.h, include/EnumSDLMessageBoxButtonFlags.h, include/EnumSDLMessageBoxColorType.h, include/EnumSDLMessageBoxFlags.h, include/EnumSDLPacketLayout.h, include/EnumSDLPixelFormat.h, include/EnumSDLPowerState.h, include/EnumSDLRendererFlags.h, include/EnumSDLRendererFlip.h, include/EnumSDLScancode.h, include/EnumSDLSystemCursor.h, include/EnumSDLSysWMType.h, include/EnumSDLTextureAccess.h, include/EnumSDLTextureModulate.h, include/EnumSDLThreadPriority.h, include/EnumSDLWindowEventID.h, include/EnumSDLWindowFlags.h, include/EnumSDLWindowShapeMode.h, include/HeaderSDL.h, include/HeaderSDLEvents.h, include/HeaderSDLKeyboard.h, include/HeaderSDLMouse.h, include/HeaderSDLVideo.h, include/hg3dstruct.h, include/HG3DUtilities.h, include/SDL2DllDefines.h, include/sdlevent_struct.h, include/StructHG3DClass.h, include/StructSDLEvent.h
 
 Library
   Build-Depends:     base >= 3 && < 5, utf8-string, bytestring, HGamer3D-Data >= 0.4.0
 
-  Exposed-modules:   HGamer3D.Bindings.SDL2.Utils, HGamer3D.Bindings.SDL2.StructHG3DClass, HGamer3D.Bindings.SDL2.ClassPtr, HGamer3D.Bindings.SDL2.EnumSDLMessageBoxButtonFlags, HGamer3D.Bindings.SDL2.EnumSDLGLProfile, HGamer3D.Bindings.SDL2.EnumSDLRendererFlags, HGamer3D.Bindings.SDL2.EnumSDLScancode, HGamer3D.Bindings.SDL2.EnumSDLWindowEventID, HGamer3D.Bindings.SDL2.EnumSDLThreadPriority, HGamer3D.Bindings.SDL2.EnumSDLSystemCursor, HGamer3D.Bindings.SDL2.EnumSDLGameControllerAxis, HGamer3D.Bindings.SDL2.EnumSDLMessageBoxFlags, HGamer3D.Bindings.SDL2.EnumSDLWindowFlags, HGamer3D.Bindings.SDL2.EnumSDLGameControllerButton, HGamer3D.Bindings.SDL2.EnumSDLKeymod, HGamer3D.Bindings.SDL2.EnumSDLHintPriority, HGamer3D.Bindings.SDL2.EnumSDLLogCategory, HGamer3D.Bindings.SDL2.EnumSDLRendererFlip, HGamer3D.Bindings.SDL2.EnumSDLTextureModulate, HGamer3D.Bindings.SDL2.EnumSDLPacketLayout, HGamer3D.Bindings.SDL2.EnumSDLEventType, HGamer3D.Bindings.SDL2.EnumSDLTextureAccess, HGamer3D.Bindings.SDL2.EnumSDLLogPriority, HGamer3D.Bindings.SDL2.EnumSDLGameControllerBindType, HGamer3D.Bindings.SDL2.EnumSDLWindowShapeMode, HGamer3D.Bindings.SDL2.EnumSDLBlendMode, HGamer3D.Bindings.SDL2.EnumSDLPixelFormat, HGamer3D.Bindings.SDL2.EnumSDLGLAttr, HGamer3D.Bindings.SDL2.EnumSDLSysWMType, HGamer3D.Bindings.SDL2.EnumSDLGlContextFlag, HGamer3D.Bindings.SDL2.EnumSDLMessageBoxColorType, HGamer3D.Bindings.SDL2.EnumSDLPowerState, HGamer3D.Bindings.SDL2.StructSDLEvent, HGamer3D.Bindings.SDL2.ClassHG3DUtilities, HGamer3D.Bindings.SDL2.HeaderSDLMouse, HGamer3D.Bindings.SDL2.HeaderSDLEvents, HGamer3D.Bindings.SDL2.HeaderSDLVideo, HGamer3D.Bindings.SDL2.HeaderSDL, HGamer3D.Bindings.SDL2.HeaderSDLKeyboard
+  Exposed-modules:   HGamer3D.Bindings.SDL2.Utils, HGamer3D.Bindings.SDL2.ClassPtr, HGamer3D.Bindings.SDL2.StructHG3DClass, HGamer3D.Bindings.SDL2.EnumSDLBlendMode, HGamer3D.Bindings.SDL2.EnumSDLEventType, HGamer3D.Bindings.SDL2.EnumSDLGameControllerAxis, HGamer3D.Bindings.SDL2.EnumSDLGameControllerBindType, HGamer3D.Bindings.SDL2.EnumSDLGameControllerButton, HGamer3D.Bindings.SDL2.EnumSDLGLAttr, HGamer3D.Bindings.SDL2.EnumSDLGlContextFlag, HGamer3D.Bindings.SDL2.EnumSDLGLProfile, HGamer3D.Bindings.SDL2.EnumSDLHintPriority, HGamer3D.Bindings.SDL2.EnumSDLKeymod, HGamer3D.Bindings.SDL2.EnumSDLLogCategory, HGamer3D.Bindings.SDL2.EnumSDLLogPriority, HGamer3D.Bindings.SDL2.EnumSDLMessageBoxButtonFlags, HGamer3D.Bindings.SDL2.EnumSDLMessageBoxColorType, HGamer3D.Bindings.SDL2.EnumSDLMessageBoxFlags, HGamer3D.Bindings.SDL2.EnumSDLPacketLayout, HGamer3D.Bindings.SDL2.EnumSDLPowerState, HGamer3D.Bindings.SDL2.EnumSDLRendererFlags, HGamer3D.Bindings.SDL2.EnumSDLRendererFlip, HGamer3D.Bindings.SDL2.EnumSDLScancode, HGamer3D.Bindings.SDL2.EnumSDLSystemCursor, HGamer3D.Bindings.SDL2.EnumSDLSysWMType, HGamer3D.Bindings.SDL2.EnumSDLTextureAccess, HGamer3D.Bindings.SDL2.EnumSDLTextureModulate, HGamer3D.Bindings.SDL2.EnumSDLThreadPriority, HGamer3D.Bindings.SDL2.EnumSDLWindowEventID, HGamer3D.Bindings.SDL2.EnumSDLWindowFlags, HGamer3D.Bindings.SDL2.EnumSDLWindowShapeMode, HGamer3D.Bindings.SDL2.StructSDLEvent, HGamer3D.Bindings.SDL2.ClassHG3DUtilities, HGamer3D.Bindings.SDL2.HeaderSDL, HGamer3D.Bindings.SDL2.HeaderSDLEvents, HGamer3D.Bindings.SDL2.HeaderSDLKeyboard, HGamer3D.Bindings.SDL2.HeaderSDLMouse, HGamer3D.Bindings.SDL2.HeaderSDLVideo
   Other-modules:     
 
-  ghc-options:       
+  ghc-options:       -O2
   cc-options:        -Wno-attributes 
   hs-source-dirs:    .
   Include-dirs:      include
   Build-tools:       
   build-depends:     
   if os(windows)
-     extra-libraries:   hg3dsdl2040
+     extra-libraries:   hg3dsdl2050
   else
-     extra-libraries:   hg3dsdl2040,SDL2-2.0,X11
+     extra-libraries:   hg3dsdl2050,SDL2-2.0,X11
diff --git a/HGamer3D/Bindings/SDL2/ClassHG3DUtilities.chs b/HGamer3D/Bindings/SDL2/ClassHG3DUtilities.chs
--- a/HGamer3D/Bindings/SDL2/ClassHG3DUtilities.chs
+++ b/HGamer3D/Bindings/SDL2/ClassHG3DUtilities.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.ClassHG3DUtilities where
 
@@ -36,13 +36,13 @@
 import HGamer3D.Data.Colour
 import HGamer3D.Data.Angle
 
-{# import HGamer3D.Bindings.SDL2.Utils #}
-{# import HGamer3D.Bindings.SDL2.ClassPtr #}
-{# import HGamer3D.Bindings.SDL2.StructHG3DClass #}
+{# import HGamer3D.Bindings.SDL2.Utils #}
+{# import HGamer3D.Bindings.SDL2.ClassPtr #}
+{# import HGamer3D.Bindings.SDL2.StructHG3DClass #}
 
 #include "ClassHG3DUtilities.h"
-{- function createWindowFromHandle -}
-{#fun sdl2_hg3dutl_createWindowFromHandle as createWindowFromHandle 
-{ fromIntegral `Int' ,
- alloca- `Ptr SDLWindow' peekSDLWindowPtr*} -> `()'  #}
-
+{- function createWindowFromHandle -}
+{#fun hg3d_util_createWindowFromHandle as createWindowFromHandle 
+{ fromIntegral `Int' ,
+ alloca- `Ptr SDLWindow' peekSDLWindowPtr*} -> `()'  #}
+
diff --git a/HGamer3D/Bindings/SDL2/ClassPtr.chs b/HGamer3D/Bindings/SDL2/ClassPtr.chs
--- a/HGamer3D/Bindings/SDL2/ClassPtr.chs
+++ b/HGamer3D/Bindings/SDL2/ClassPtr.chs
@@ -1,10 +1,10 @@
-{-# LANGUAGE EmptyDataDecls #-}
+{-# LANGUAGE EmptyDataDecls #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
 {-# LANGUAGE TypeSynonymInstances #-}
 
 -- 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
 -- 
@@ -19,12 +19,12 @@
 -- 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.
--- 
+-- 
 
 
 -- ClassPtr.chs
 
--- Class Ptr Utilities
+-- Class Ptr Utilities
 
 module HGamer3D.Bindings.SDL2.ClassPtr where
 
@@ -37,9 +37,11 @@
 import HGamer3D.Data.Colour
 import HGamer3D.Data.Angle
 
-{# import HGamer3D.Bindings.SDL2.Utils #}
+{# import HGamer3D.Bindings.SDL2.Utils #}
 
 #include "ClassPtr.h"
-data SDLWindow
-peekSDLWindowPtr :: Ptr (Ptr () ) -> IO (Ptr SDLWindow)
-peekSDLWindowPtr inp = do { ptr <- peek inp; return $ castPtr ptr } 
+{- class ClassHG3DUtilities -}
+{#pointer *ClassHG3DUtilities as ClassHG3DUtilities#}
+data SDLWindow
+peekSDLWindowPtr :: Ptr (Ptr () ) -> IO (Ptr SDLWindow)
+peekSDLWindowPtr inp = do { ptr <- peek inp; return $ castPtr ptr } 
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLBlendMode.chs b/HGamer3D/Bindings/SDL2/EnumSDLBlendMode.chs
--- a/HGamer3D/Bindings/SDL2/EnumSDLBlendMode.chs
+++ b/HGamer3D/Bindings/SDL2/EnumSDLBlendMode.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- EnumSDLBlendMode.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.EnumSDLBlendMode where
 
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLEventType.chs b/HGamer3D/Bindings/SDL2/EnumSDLEventType.chs
--- a/HGamer3D/Bindings/SDL2/EnumSDLEventType.chs
+++ b/HGamer3D/Bindings/SDL2/EnumSDLEventType.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- EnumSDLEventType.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.EnumSDLEventType where
 
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLGLAttr.chs b/HGamer3D/Bindings/SDL2/EnumSDLGLAttr.chs
--- a/HGamer3D/Bindings/SDL2/EnumSDLGLAttr.chs
+++ b/HGamer3D/Bindings/SDL2/EnumSDLGLAttr.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- EnumSDLGLAttr.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.EnumSDLGLAttr where
 
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLGLProfile.chs b/HGamer3D/Bindings/SDL2/EnumSDLGLProfile.chs
--- a/HGamer3D/Bindings/SDL2/EnumSDLGLProfile.chs
+++ b/HGamer3D/Bindings/SDL2/EnumSDLGLProfile.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- EnumSDLGLProfile.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.EnumSDLGLProfile where
 
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLGameControllerAxis.chs b/HGamer3D/Bindings/SDL2/EnumSDLGameControllerAxis.chs
--- a/HGamer3D/Bindings/SDL2/EnumSDLGameControllerAxis.chs
+++ b/HGamer3D/Bindings/SDL2/EnumSDLGameControllerAxis.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- EnumSDLGameControllerAxis.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.EnumSDLGameControllerAxis where
 
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLGameControllerBindType.chs b/HGamer3D/Bindings/SDL2/EnumSDLGameControllerBindType.chs
--- a/HGamer3D/Bindings/SDL2/EnumSDLGameControllerBindType.chs
+++ b/HGamer3D/Bindings/SDL2/EnumSDLGameControllerBindType.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- EnumSDLGameControllerBindType.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.EnumSDLGameControllerBindType where
 
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLGameControllerButton.chs b/HGamer3D/Bindings/SDL2/EnumSDLGameControllerButton.chs
--- a/HGamer3D/Bindings/SDL2/EnumSDLGameControllerButton.chs
+++ b/HGamer3D/Bindings/SDL2/EnumSDLGameControllerButton.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- EnumSDLGameControllerButton.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.EnumSDLGameControllerButton where
 
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLGlContextFlag.chs b/HGamer3D/Bindings/SDL2/EnumSDLGlContextFlag.chs
--- a/HGamer3D/Bindings/SDL2/EnumSDLGlContextFlag.chs
+++ b/HGamer3D/Bindings/SDL2/EnumSDLGlContextFlag.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- EnumSDLGlContextFlag.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.EnumSDLGlContextFlag where
 
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLHintPriority.chs b/HGamer3D/Bindings/SDL2/EnumSDLHintPriority.chs
--- a/HGamer3D/Bindings/SDL2/EnumSDLHintPriority.chs
+++ b/HGamer3D/Bindings/SDL2/EnumSDLHintPriority.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- EnumSDLHintPriority.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.EnumSDLHintPriority where
 
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLKeymod.chs b/HGamer3D/Bindings/SDL2/EnumSDLKeymod.chs
--- a/HGamer3D/Bindings/SDL2/EnumSDLKeymod.chs
+++ b/HGamer3D/Bindings/SDL2/EnumSDLKeymod.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- EnumSDLKeymod.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.EnumSDLKeymod where
 
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLLogCategory.chs b/HGamer3D/Bindings/SDL2/EnumSDLLogCategory.chs
--- a/HGamer3D/Bindings/SDL2/EnumSDLLogCategory.chs
+++ b/HGamer3D/Bindings/SDL2/EnumSDLLogCategory.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- EnumSDLLogCategory.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.EnumSDLLogCategory where
 
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLLogPriority.chs b/HGamer3D/Bindings/SDL2/EnumSDLLogPriority.chs
--- a/HGamer3D/Bindings/SDL2/EnumSDLLogPriority.chs
+++ b/HGamer3D/Bindings/SDL2/EnumSDLLogPriority.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- EnumSDLLogPriority.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.EnumSDLLogPriority where
 
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLMessageBoxButtonFlags.chs b/HGamer3D/Bindings/SDL2/EnumSDLMessageBoxButtonFlags.chs
--- a/HGamer3D/Bindings/SDL2/EnumSDLMessageBoxButtonFlags.chs
+++ b/HGamer3D/Bindings/SDL2/EnumSDLMessageBoxButtonFlags.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- EnumSDLMessageBoxButtonFlags.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.EnumSDLMessageBoxButtonFlags where
 
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLMessageBoxColorType.chs b/HGamer3D/Bindings/SDL2/EnumSDLMessageBoxColorType.chs
--- a/HGamer3D/Bindings/SDL2/EnumSDLMessageBoxColorType.chs
+++ b/HGamer3D/Bindings/SDL2/EnumSDLMessageBoxColorType.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- EnumSDLMessageBoxColorType.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.EnumSDLMessageBoxColorType where
 
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLMessageBoxFlags.chs b/HGamer3D/Bindings/SDL2/EnumSDLMessageBoxFlags.chs
--- a/HGamer3D/Bindings/SDL2/EnumSDLMessageBoxFlags.chs
+++ b/HGamer3D/Bindings/SDL2/EnumSDLMessageBoxFlags.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- EnumSDLMessageBoxFlags.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.EnumSDLMessageBoxFlags where
 
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLPacketLayout.chs b/HGamer3D/Bindings/SDL2/EnumSDLPacketLayout.chs
--- a/HGamer3D/Bindings/SDL2/EnumSDLPacketLayout.chs
+++ b/HGamer3D/Bindings/SDL2/EnumSDLPacketLayout.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- EnumSDLPacketLayout.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.EnumSDLPacketLayout where
 
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLPixelFormat.chs b/HGamer3D/Bindings/SDL2/EnumSDLPixelFormat.chs
deleted file mode 100644
--- a/HGamer3D/Bindings/SDL2/EnumSDLPixelFormat.chs
+++ /dev/null
@@ -1,41 +0,0 @@
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# LANGUAGE TypeSynonymInstances #-}
-
--- 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.
--- 
-
-
--- EnumSDLPixelFormat.chs
-
--- 
-
-module HGamer3D.Bindings.SDL2.EnumSDLPixelFormat where
-
-import Foreign
-import Foreign.Ptr
-import Foreign.C
-
-import HGamer3D.Data.HG3DClass
-import HGamer3D.Data.Vector
-import HGamer3D.Data.Colour
-import HGamer3D.Data.Angle
-
-
-#include "EnumSDLPixelFormat.h"
-{#enum EnumSDLPixelFormat {} deriving (Eq)#}
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLPowerState.chs b/HGamer3D/Bindings/SDL2/EnumSDLPowerState.chs
--- a/HGamer3D/Bindings/SDL2/EnumSDLPowerState.chs
+++ b/HGamer3D/Bindings/SDL2/EnumSDLPowerState.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- EnumSDLPowerState.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.EnumSDLPowerState where
 
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLRendererFlags.chs b/HGamer3D/Bindings/SDL2/EnumSDLRendererFlags.chs
--- a/HGamer3D/Bindings/SDL2/EnumSDLRendererFlags.chs
+++ b/HGamer3D/Bindings/SDL2/EnumSDLRendererFlags.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- EnumSDLRendererFlags.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.EnumSDLRendererFlags where
 
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLRendererFlip.chs b/HGamer3D/Bindings/SDL2/EnumSDLRendererFlip.chs
--- a/HGamer3D/Bindings/SDL2/EnumSDLRendererFlip.chs
+++ b/HGamer3D/Bindings/SDL2/EnumSDLRendererFlip.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- EnumSDLRendererFlip.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.EnumSDLRendererFlip where
 
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLScancode.chs b/HGamer3D/Bindings/SDL2/EnumSDLScancode.chs
--- a/HGamer3D/Bindings/SDL2/EnumSDLScancode.chs
+++ b/HGamer3D/Bindings/SDL2/EnumSDLScancode.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- EnumSDLScancode.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.EnumSDLScancode where
 
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLSysWMType.chs b/HGamer3D/Bindings/SDL2/EnumSDLSysWMType.chs
--- a/HGamer3D/Bindings/SDL2/EnumSDLSysWMType.chs
+++ b/HGamer3D/Bindings/SDL2/EnumSDLSysWMType.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- EnumSDLSysWMType.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.EnumSDLSysWMType where
 
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLSystemCursor.chs b/HGamer3D/Bindings/SDL2/EnumSDLSystemCursor.chs
--- a/HGamer3D/Bindings/SDL2/EnumSDLSystemCursor.chs
+++ b/HGamer3D/Bindings/SDL2/EnumSDLSystemCursor.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- EnumSDLSystemCursor.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.EnumSDLSystemCursor where
 
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLTextureAccess.chs b/HGamer3D/Bindings/SDL2/EnumSDLTextureAccess.chs
--- a/HGamer3D/Bindings/SDL2/EnumSDLTextureAccess.chs
+++ b/HGamer3D/Bindings/SDL2/EnumSDLTextureAccess.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- EnumSDLTextureAccess.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.EnumSDLTextureAccess where
 
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLTextureModulate.chs b/HGamer3D/Bindings/SDL2/EnumSDLTextureModulate.chs
--- a/HGamer3D/Bindings/SDL2/EnumSDLTextureModulate.chs
+++ b/HGamer3D/Bindings/SDL2/EnumSDLTextureModulate.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- EnumSDLTextureModulate.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.EnumSDLTextureModulate where
 
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLThreadPriority.chs b/HGamer3D/Bindings/SDL2/EnumSDLThreadPriority.chs
--- a/HGamer3D/Bindings/SDL2/EnumSDLThreadPriority.chs
+++ b/HGamer3D/Bindings/SDL2/EnumSDLThreadPriority.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- EnumSDLThreadPriority.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.EnumSDLThreadPriority where
 
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLWindowEventID.chs b/HGamer3D/Bindings/SDL2/EnumSDLWindowEventID.chs
--- a/HGamer3D/Bindings/SDL2/EnumSDLWindowEventID.chs
+++ b/HGamer3D/Bindings/SDL2/EnumSDLWindowEventID.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- EnumSDLWindowEventID.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.EnumSDLWindowEventID where
 
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLWindowFlags.chs b/HGamer3D/Bindings/SDL2/EnumSDLWindowFlags.chs
--- a/HGamer3D/Bindings/SDL2/EnumSDLWindowFlags.chs
+++ b/HGamer3D/Bindings/SDL2/EnumSDLWindowFlags.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- EnumSDLWindowFlags.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.EnumSDLWindowFlags where
 
diff --git a/HGamer3D/Bindings/SDL2/EnumSDLWindowShapeMode.chs b/HGamer3D/Bindings/SDL2/EnumSDLWindowShapeMode.chs
--- a/HGamer3D/Bindings/SDL2/EnumSDLWindowShapeMode.chs
+++ b/HGamer3D/Bindings/SDL2/EnumSDLWindowShapeMode.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- EnumSDLWindowShapeMode.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.EnumSDLWindowShapeMode where
 
diff --git a/HGamer3D/Bindings/SDL2/HeaderSDL.chs b/HGamer3D/Bindings/SDL2/HeaderSDL.chs
--- a/HGamer3D/Bindings/SDL2/HeaderSDL.chs
+++ b/HGamer3D/Bindings/SDL2/HeaderSDL.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- HeaderSDL.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.HeaderSDL where
 
@@ -36,31 +36,31 @@
 import HGamer3D.Data.Colour
 import HGamer3D.Data.Angle
 
-{# import HGamer3D.Bindings.SDL2.Utils #}
-{# import HGamer3D.Bindings.SDL2.ClassPtr #}
-{# import HGamer3D.Bindings.SDL2.StructHG3DClass #}
+{# import HGamer3D.Bindings.SDL2.Utils #}
+{# import HGamer3D.Bindings.SDL2.ClassPtr #}
+{# import HGamer3D.Bindings.SDL2.StructHG3DClass #}
 
 #include "HeaderSDL.h"
-{- function sdl_Init -}
-{#fun fsdl_sdl_Init as sdlInit 
-{ fromIntegral `Int' ,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
-{- function sdl_InitSubSystem -}
-{#fun fsdl_sdl_InitSubSystem as sdlInitSubSystem 
-{ fromIntegral `Int' ,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
-{- function sdl_QuitSubSystem -}
-{#fun fsdl_sdl_QuitSubSystem as sdlQuitSubSystem 
-{ fromIntegral `Int' } -> `()'  #}
-
-{- function sdl_WasInit -}
-{#fun fsdl_sdl_WasInit as sdlWasInit 
-{ fromIntegral `Int' ,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
-{- function sdl_Quit -}
-{#fun fsdl_sdl_Quit as sdlQuit 
-{ } -> `()'  #}
-
+{- function sdl_Init -}
+{#fun fsdl_sdl_Init as sdlInit 
+{ fromIntegral `Int' ,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
+{- function sdl_InitSubSystem -}
+{#fun fsdl_sdl_InitSubSystem as sdlInitSubSystem 
+{ fromIntegral `Int' ,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
+{- function sdl_QuitSubSystem -}
+{#fun fsdl_sdl_QuitSubSystem as sdlQuitSubSystem 
+{ fromIntegral `Int' } -> `()'  #}
+
+{- function sdl_WasInit -}
+{#fun fsdl_sdl_WasInit as sdlWasInit 
+{ fromIntegral `Int' ,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
+{- function sdl_Quit -}
+{#fun fsdl_sdl_Quit as sdlQuit 
+{ } -> `()'  #}
+
diff --git a/HGamer3D/Bindings/SDL2/HeaderSDLEvents.chs b/HGamer3D/Bindings/SDL2/HeaderSDLEvents.chs
--- a/HGamer3D/Bindings/SDL2/HeaderSDLEvents.chs
+++ b/HGamer3D/Bindings/SDL2/HeaderSDLEvents.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- HeaderSDLEvents.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.HeaderSDLEvents where
 
@@ -36,48 +36,48 @@
 import HGamer3D.Data.Colour
 import HGamer3D.Data.Angle
 
-{# import HGamer3D.Bindings.SDL2.Utils #}
-{# import HGamer3D.Bindings.SDL2.ClassPtr #}
-{# import HGamer3D.Bindings.SDL2.StructHG3DClass #}
-{# import HGamer3D.Bindings.SDL2.StructSDLEvent #}
+{# import HGamer3D.Bindings.SDL2.Utils #}
+{# import HGamer3D.Bindings.SDL2.ClassPtr #}
+{# import HGamer3D.Bindings.SDL2.StructHG3DClass #}
+{# import HGamer3D.Bindings.SDL2.StructSDLEvent #}
 
 #include "HeaderSDLEvents.h"
-{- function sdl_PumpEvents -}
-{#fun sdlevts_sdl_PumpEvents as sdlPumpEvents 
-{ } -> `()'  #}
-
-{- function sdl_FlushEvent -}
-{#fun sdlevts_sdl_FlushEvent as sdlFlushEvent 
-{ fromIntegral `Int' } -> `()'  #}
-
-{- function sdl_FlushEvents -}
-{#fun sdlevts_sdl_FlushEvents as sdlFlushEvents 
-{ fromIntegral `Int' ,
- fromIntegral `Int' } -> `()'  #}
-
-{- function sdl_PollEvent -}
-{#fun sdlevts_sdl_PollEvent as sdlPollEvent 
-{ alloca- `SDLEvent' peekSDLEvent*,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
-{- function sdl_WaitEvent -}
-{#fun sdlevts_sdl_WaitEvent as sdlWaitEvent 
-{ alloca- `SDLEvent' peekSDLEvent*,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
-{- function sdl_WaitEventTimeout -}
-{#fun sdlevts_sdl_WaitEventTimeout as sdlWaitEventTimeout 
-{ alloca- `SDLEvent' peekSDLEvent*,
- fromIntegral `Int' ,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
-{- function sdl_PushEvent -}
-{#fun sdlevts_sdl_PushEvent as sdlPushEvent 
-{ alloca- `SDLEvent' peekSDLEvent*,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
-{- function sdl_RegisterEvents -}
-{#fun sdlevts_sdl_RegisterEvents as sdlRegisterEvents 
-{ fromIntegral `Int' ,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
+{- function sdl_PumpEvents -}
+{#fun sdlevts_sdl_PumpEvents as sdlPumpEvents 
+{ } -> `()'  #}
+
+{- function sdl_FlushEvent -}
+{#fun sdlevts_sdl_FlushEvent as sdlFlushEvent 
+{ fromIntegral `Int' } -> `()'  #}
+
+{- function sdl_FlushEvents -}
+{#fun sdlevts_sdl_FlushEvents as sdlFlushEvents 
+{ fromIntegral `Int' ,
+ fromIntegral `Int' } -> `()'  #}
+
+{- function sdl_PollEvent -}
+{#fun sdlevts_sdl_PollEvent as sdlPollEvent 
+{ alloca- `SDLEvent' peekSDLEvent*,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
+{- function sdl_WaitEvent -}
+{#fun sdlevts_sdl_WaitEvent as sdlWaitEvent 
+{ alloca- `SDLEvent' peekSDLEvent*,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
+{- function sdl_WaitEventTimeout -}
+{#fun sdlevts_sdl_WaitEventTimeout as sdlWaitEventTimeout 
+{ alloca- `SDLEvent' peekSDLEvent*,
+ fromIntegral `Int' ,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
+{- function sdl_PushEvent -}
+{#fun sdlevts_sdl_PushEvent as sdlPushEvent 
+{ alloca- `SDLEvent' peekSDLEvent*,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
+{- function sdl_RegisterEvents -}
+{#fun sdlevts_sdl_RegisterEvents as sdlRegisterEvents 
+{ fromIntegral `Int' ,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
diff --git a/HGamer3D/Bindings/SDL2/HeaderSDLKeyboard.chs b/HGamer3D/Bindings/SDL2/HeaderSDLKeyboard.chs
--- a/HGamer3D/Bindings/SDL2/HeaderSDLKeyboard.chs
+++ b/HGamer3D/Bindings/SDL2/HeaderSDLKeyboard.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- HeaderSDLKeyboard.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.HeaderSDLKeyboard where
 
@@ -36,20 +36,20 @@
 import HGamer3D.Data.Colour
 import HGamer3D.Data.Angle
 
-{# import HGamer3D.Bindings.SDL2.Utils #}
-{# import HGamer3D.Bindings.SDL2.ClassPtr #}
-{# import HGamer3D.Bindings.SDL2.StructHG3DClass #}
+{# import HGamer3D.Bindings.SDL2.Utils #}
+{# import HGamer3D.Bindings.SDL2.ClassPtr #}
+{# import HGamer3D.Bindings.SDL2.StructHG3DClass #}
 
 #include "HeaderSDLKeyboard.h"
-{- function sdl_GetKeyboardFocus -}
-{#fun skbd_sdl_GetKeyboardFocus as sdlGetKeyboardFocus 
-{ alloca- `Ptr SDLWindow' peekSDLWindowPtr*} -> `()'  #}
-
-{- function sdl_StartTextInput -}
-{#fun skbd_sdl_StartTextInput as sdlStartTextInput 
-{ } -> `()'  #}
-
-{- function sdl_StopTextInput -}
-{#fun skbd_sdl_StopTextInput as sdlStopTextInput 
-{ } -> `()'  #}
-
+{- function sdl_GetKeyboardFocus -}
+{#fun skbd_sdl_GetKeyboardFocus as sdlGetKeyboardFocus 
+{ alloca- `Ptr SDLWindow' peekSDLWindowPtr*} -> `()'  #}
+
+{- function sdl_StartTextInput -}
+{#fun skbd_sdl_StartTextInput as sdlStartTextInput 
+{ } -> `()'  #}
+
+{- function sdl_StopTextInput -}
+{#fun skbd_sdl_StopTextInput as sdlStopTextInput 
+{ } -> `()'  #}
+
diff --git a/HGamer3D/Bindings/SDL2/HeaderSDLMouse.chs b/HGamer3D/Bindings/SDL2/HeaderSDLMouse.chs
--- a/HGamer3D/Bindings/SDL2/HeaderSDLMouse.chs
+++ b/HGamer3D/Bindings/SDL2/HeaderSDLMouse.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- HeaderSDLMouse.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.HeaderSDLMouse where
 
@@ -36,35 +36,35 @@
 import HGamer3D.Data.Colour
 import HGamer3D.Data.Angle
 
-{# import HGamer3D.Bindings.SDL2.Utils #}
-{# import HGamer3D.Bindings.SDL2.ClassPtr #}
-{# import HGamer3D.Bindings.SDL2.StructHG3DClass #}
+{# import HGamer3D.Bindings.SDL2.Utils #}
+{# import HGamer3D.Bindings.SDL2.ClassPtr #}
+{# import HGamer3D.Bindings.SDL2.StructHG3DClass #}
 
 #include "HeaderSDLMouse.h"
-{- function sdl_GetMouseFocus -}
-{#fun sdlms_sdl_GetMouseFocus as sdlGetMouseFocus 
-{ alloca- `Ptr SDLWindow' peekSDLWindowPtr*} -> `()'  #}
-
-{- function sdl_GetMouseState -}
-{#fun sdlms_sdl_GetMouseState as sdlGetMouseState 
-{ alloca- `Int' peekIntConv*,
- alloca- `Int' peekIntConv*,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
-{- function sdl_GetRelativeMouseState -}
-{#fun sdlms_sdl_GetRelativeMouseState as sdlGetRelativeMouseState 
-{ alloca- `Int' peekIntConv*,
- alloca- `Int' peekIntConv*,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
-{- function sdl_WarpMouseInWindow -}
-{#fun sdlms_sdl_WarpMouseInWindow as sdlWarpMouseInWindow 
-{ castPtr `Ptr SDLWindow' ,
- fromIntegral `Int' ,
- fromIntegral `Int' } -> `()'  #}
-
-{- function sdl_ShowCursor -}
-{#fun sdlms_sdl_ShowCursor as sdlShowCursor 
-{ fromIntegral `Int' ,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
+{- function sdl_GetMouseFocus -}
+{#fun sdlms_sdl_GetMouseFocus as sdlGetMouseFocus 
+{ alloca- `Ptr SDLWindow' peekSDLWindowPtr*} -> `()'  #}
+
+{- function sdl_GetMouseState -}
+{#fun sdlms_sdl_GetMouseState as sdlGetMouseState 
+{ alloca- `Int' peekIntConv*,
+ alloca- `Int' peekIntConv*,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
+{- function sdl_GetRelativeMouseState -}
+{#fun sdlms_sdl_GetRelativeMouseState as sdlGetRelativeMouseState 
+{ alloca- `Int' peekIntConv*,
+ alloca- `Int' peekIntConv*,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
+{- function sdl_WarpMouseInWindow -}
+{#fun sdlms_sdl_WarpMouseInWindow as sdlWarpMouseInWindow 
+{ castPtr `Ptr SDLWindow' ,
+ fromIntegral `Int' ,
+ fromIntegral `Int' } -> `()'  #}
+
+{- function sdl_ShowCursor -}
+{#fun sdlms_sdl_ShowCursor as sdlShowCursor 
+{ fromIntegral `Int' ,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
diff --git a/HGamer3D/Bindings/SDL2/HeaderSDLVideo.chs b/HGamer3D/Bindings/SDL2/HeaderSDLVideo.chs
--- a/HGamer3D/Bindings/SDL2/HeaderSDLVideo.chs
+++ b/HGamer3D/Bindings/SDL2/HeaderSDLVideo.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- HeaderSDLVideo.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.HeaderSDLVideo where
 
@@ -36,195 +36,195 @@
 import HGamer3D.Data.Colour
 import HGamer3D.Data.Angle
 
-{# import HGamer3D.Bindings.SDL2.Utils #}
-{# import HGamer3D.Bindings.SDL2.ClassPtr #}
-{# import HGamer3D.Bindings.SDL2.StructHG3DClass #}
+{# import HGamer3D.Bindings.SDL2.Utils #}
+{# import HGamer3D.Bindings.SDL2.ClassPtr #}
+{# import HGamer3D.Bindings.SDL2.StructHG3DClass #}
 
 #include "HeaderSDLVideo.h"
-{- function sdl_GetNumVideoDrivers -}
-{#fun fsdlvid_sdl_GetNumVideoDrivers as sdlGetNumVideoDrivers 
-{ alloca- `Int' peekIntConv*} -> `()'  #}
-
-{- function sdl_GetVideoDriver -}
-{#fun fsdlvid_sdl_GetVideoDriver as sdlGetVideoDriver 
-{ fromIntegral `Int' ,
- alloc64k- `String' peekCString*} -> `()'  #}
-
-{- function sdl_VideoInit -}
-{#fun fsdlvid_sdl_VideoInit as sdlVideoInit 
-{ withCString* `String' ,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
-{- function sdl_VideoQuit -}
-{#fun fsdlvid_sdl_VideoQuit as sdlVideoQuit 
-{ } -> `()'  #}
-
-{- function sdl_GetCurrentVideoDriver -}
-{#fun fsdlvid_sdl_GetCurrentVideoDriver as sdlGetCurrentVideoDriver 
-{ alloc64k- `String' peekCString*} -> `()'  #}
-
-{- function sdl_GetNumVideoDisplays -}
-{#fun fsdlvid_sdl_GetNumVideoDisplays as sdlGetNumVideoDisplays 
-{ alloca- `Int' peekIntConv*} -> `()'  #}
-
-{- function sdl_GetDisplayName -}
-{#fun fsdlvid_sdl_GetDisplayName as sdlGetDisplayName 
-{ fromIntegral `Int' ,
- alloc64k- `String' peekCString*} -> `()'  #}
-
-{- function sdl_GetNumDisplayModes -}
-{#fun fsdlvid_sdl_GetNumDisplayModes as sdlGetNumDisplayModes 
-{ fromIntegral `Int' ,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
-{- function sdl_GetWindowDisplayIndex -}
-{#fun fsdlvid_sdl_GetWindowDisplayIndex as sdlGetWindowDisplayIndex 
-{ castPtr `Ptr SDLWindow' ,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
-{- function sdl_GetWindowPixelFormat -}
-{#fun fsdlvid_sdl_GetWindowPixelFormat as sdlGetWindowPixelFormat 
-{ castPtr `Ptr SDLWindow' ,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
-{- function sdl_CreateWindow -}
-{#fun fsdlvid_sdl_CreateWindow as sdlCreateWindow 
-{ withCString* `String' ,
- fromIntegral `Int' ,
- fromIntegral `Int' ,
- fromIntegral `Int' ,
- fromIntegral `Int' ,
- fromIntegral `Int' ,
- alloca- `Ptr SDLWindow' peekSDLWindowPtr*} -> `()'  #}
-
-{- function sdl_GetWindowID -}
-{#fun fsdlvid_sdl_GetWindowID as sdlGetWindowID 
-{ castPtr `Ptr SDLWindow' ,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
-{- function sdl_GetWindowFromID -}
-{#fun fsdlvid_sdl_GetWindowFromID as sdlGetWindowFromID 
-{ fromIntegral `Int' ,
- alloca- `Ptr SDLWindow' peekSDLWindowPtr*} -> `()'  #}
-
-{- function sdl_GetWindowFlags -}
-{#fun fsdlvid_sdl_GetWindowFlags as sdlGetWindowFlags 
-{ castPtr `Ptr SDLWindow' ,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
-{- function sdl_SetWindowTitle -}
-{#fun fsdlvid_sdl_SetWindowTitle as sdlSetWindowTitle 
-{ castPtr `Ptr SDLWindow' ,
- withCString* `String' } -> `()'  #}
-
-{- function sdl_GetWindowTitle -}
-{#fun fsdlvid_sdl_GetWindowTitle as sdlGetWindowTitle 
-{ castPtr `Ptr SDLWindow' ,
- alloc64k- `String' peekCString*} -> `()'  #}
-
-{- function sdl_SetWindowPosition -}
-{#fun fsdlvid_sdl_SetWindowPosition as sdlSetWindowPosition 
-{ castPtr `Ptr SDLWindow' ,
- fromIntegral `Int' ,
- fromIntegral `Int' } -> `()'  #}
-
-{- function sdl_GetWindowPosition -}
-{#fun fsdlvid_sdl_GetWindowPosition as sdlGetWindowPosition 
-{ castPtr `Ptr SDLWindow' ,
- alloca- `Int' peekIntConv*,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
-{- function sdl_SetWindowSize -}
-{#fun fsdlvid_sdl_SetWindowSize as sdlSetWindowSize 
-{ castPtr `Ptr SDLWindow' ,
- fromIntegral `Int' ,
- fromIntegral `Int' } -> `()'  #}
-
-{- function sdl_GetWindowSize -}
-{#fun fsdlvid_sdl_GetWindowSize as sdlGetWindowSize 
-{ castPtr `Ptr SDLWindow' ,
- alloca- `Int' peekIntConv*,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
-{- function sdl_SetWindowMinimumSize -}
-{#fun fsdlvid_sdl_SetWindowMinimumSize as sdlSetWindowMinimumSize 
-{ castPtr `Ptr SDLWindow' ,
- fromIntegral `Int' ,
- fromIntegral `Int' } -> `()'  #}
-
-{- function sdl_GetWindowMinimumSize -}
-{#fun fsdlvid_sdl_GetWindowMinimumSize as sdlGetWindowMinimumSize 
-{ castPtr `Ptr SDLWindow' ,
- alloca- `Int' peekIntConv*,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
-{- function sdl_SetWindowMaximumSize -}
-{#fun fsdlvid_sdl_SetWindowMaximumSize as sdlSetWindowMaximumSize 
-{ castPtr `Ptr SDLWindow' ,
- fromIntegral `Int' ,
- fromIntegral `Int' } -> `()'  #}
-
-{- function sdl_GetWindowMaximumSize -}
-{#fun fsdlvid_sdl_GetWindowMaximumSize as sdlGetWindowMaximumSize 
-{ castPtr `Ptr SDLWindow' ,
- alloca- `Int' peekIntConv*,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
-{- function sdl_ShowWindow -}
-{#fun fsdlvid_sdl_ShowWindow as sdlShowWindow 
-{ castPtr `Ptr SDLWindow' } -> `()'  #}
-
-{- function sdl_HideWindow -}
-{#fun fsdlvid_sdl_HideWindow as sdlHideWindow 
-{ castPtr `Ptr SDLWindow' } -> `()'  #}
-
-{- function sdl_RaiseWindow -}
-{#fun fsdlvid_sdl_RaiseWindow as sdlRaiseWindow 
-{ castPtr `Ptr SDLWindow' } -> `()'  #}
-
-{- function sdl_MaximizeWindow -}
-{#fun fsdlvid_sdl_MaximizeWindow as sdlMaximizeWindow 
-{ castPtr `Ptr SDLWindow' } -> `()'  #}
-
-{- function sdl_MinimizeWindow -}
-{#fun fsdlvid_sdl_MinimizeWindow as sdlMinimizeWindow 
-{ castPtr `Ptr SDLWindow' } -> `()'  #}
-
-{- function sdl_RestoreWindow -}
-{#fun fsdlvid_sdl_RestoreWindow as sdlRestoreWindow 
-{ castPtr `Ptr SDLWindow' } -> `()'  #}
-
-{- function sdl_SetWindowFullscreen -}
-{#fun fsdlvid_sdl_SetWindowFullscreen as sdlSetWindowFullscreen 
-{ castPtr `Ptr SDLWindow' ,
- fromIntegral `Int' ,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
-{- function sdl_UpdateWindowSurface -}
-{#fun fsdlvid_sdl_UpdateWindowSurface as sdlUpdateWindowSurface 
-{ castPtr `Ptr SDLWindow' ,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
-{- function sdl_SetWindowBrightness -}
-{#fun fsdlvid_sdl_SetWindowBrightness as sdlSetWindowBrightness 
-{ castPtr `Ptr SDLWindow' ,
- realToFrac `Float' ,
- alloca- `Int' peekIntConv*} -> `()'  #}
-
-{- function sdl_GetWindowBrightness -}
-{#fun fsdlvid_sdl_GetWindowBrightness as sdlGetWindowBrightness 
-{ castPtr `Ptr SDLWindow' ,
- alloca- `Float' peekFloatConv*} -> `()'  #}
-
-{- function sdl_DestroyWindow -}
-{#fun fsdlvid_sdl_DestroyWindow as sdlDestroyWindow 
-{ castPtr `Ptr SDLWindow' } -> `()'  #}
-
-{- function sdl_EnableScreenSaver -}
-{#fun fsdlvid_sdl_EnableScreenSaver as sdlEnableScreenSaver 
-{ } -> `()'  #}
-
-{- function sdl_DisableScreenSaver -}
-{#fun fsdlvid_sdl_DisableScreenSaver as sdlDisableScreenSaver 
-{ } -> `()'  #}
-
+{- function sdl_GetNumVideoDrivers -}
+{#fun fsdlvid_sdl_GetNumVideoDrivers as sdlGetNumVideoDrivers 
+{ alloca- `Int' peekIntConv*} -> `()'  #}
+
+{- function sdl_GetVideoDriver -}
+{#fun fsdlvid_sdl_GetVideoDriver as sdlGetVideoDriver 
+{ fromIntegral `Int' ,
+ alloc64k- `String' peekCString*} -> `()'  #}
+
+{- function sdl_VideoInit -}
+{#fun fsdlvid_sdl_VideoInit as sdlVideoInit 
+{ withCString* `String' ,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
+{- function sdl_VideoQuit -}
+{#fun fsdlvid_sdl_VideoQuit as sdlVideoQuit 
+{ } -> `()'  #}
+
+{- function sdl_GetCurrentVideoDriver -}
+{#fun fsdlvid_sdl_GetCurrentVideoDriver as sdlGetCurrentVideoDriver 
+{ alloc64k- `String' peekCString*} -> `()'  #}
+
+{- function sdl_GetNumVideoDisplays -}
+{#fun fsdlvid_sdl_GetNumVideoDisplays as sdlGetNumVideoDisplays 
+{ alloca- `Int' peekIntConv*} -> `()'  #}
+
+{- function sdl_GetDisplayName -}
+{#fun fsdlvid_sdl_GetDisplayName as sdlGetDisplayName 
+{ fromIntegral `Int' ,
+ alloc64k- `String' peekCString*} -> `()'  #}
+
+{- function sdl_GetNumDisplayModes -}
+{#fun fsdlvid_sdl_GetNumDisplayModes as sdlGetNumDisplayModes 
+{ fromIntegral `Int' ,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
+{- function sdl_GetWindowDisplayIndex -}
+{#fun fsdlvid_sdl_GetWindowDisplayIndex as sdlGetWindowDisplayIndex 
+{ castPtr `Ptr SDLWindow' ,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
+{- function sdl_GetWindowPixelFormat -}
+{#fun fsdlvid_sdl_GetWindowPixelFormat as sdlGetWindowPixelFormat 
+{ castPtr `Ptr SDLWindow' ,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
+{- function sdl_CreateWindow -}
+{#fun fsdlvid_sdl_CreateWindow as sdlCreateWindow 
+{ withCString* `String' ,
+ fromIntegral `Int' ,
+ fromIntegral `Int' ,
+ fromIntegral `Int' ,
+ fromIntegral `Int' ,
+ fromIntegral `Int' ,
+ alloca- `Ptr SDLWindow' peekSDLWindowPtr*} -> `()'  #}
+
+{- function sdl_GetWindowID -}
+{#fun fsdlvid_sdl_GetWindowID as sdlGetWindowID 
+{ castPtr `Ptr SDLWindow' ,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
+{- function sdl_GetWindowFromID -}
+{#fun fsdlvid_sdl_GetWindowFromID as sdlGetWindowFromID 
+{ fromIntegral `Int' ,
+ alloca- `Ptr SDLWindow' peekSDLWindowPtr*} -> `()'  #}
+
+{- function sdl_GetWindowFlags -}
+{#fun fsdlvid_sdl_GetWindowFlags as sdlGetWindowFlags 
+{ castPtr `Ptr SDLWindow' ,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
+{- function sdl_SetWindowTitle -}
+{#fun fsdlvid_sdl_SetWindowTitle as sdlSetWindowTitle 
+{ castPtr `Ptr SDLWindow' ,
+ withCString* `String' } -> `()'  #}
+
+{- function sdl_GetWindowTitle -}
+{#fun fsdlvid_sdl_GetWindowTitle as sdlGetWindowTitle 
+{ castPtr `Ptr SDLWindow' ,
+ alloc64k- `String' peekCString*} -> `()'  #}
+
+{- function sdl_SetWindowPosition -}
+{#fun fsdlvid_sdl_SetWindowPosition as sdlSetWindowPosition 
+{ castPtr `Ptr SDLWindow' ,
+ fromIntegral `Int' ,
+ fromIntegral `Int' } -> `()'  #}
+
+{- function sdl_GetWindowPosition -}
+{#fun fsdlvid_sdl_GetWindowPosition as sdlGetWindowPosition 
+{ castPtr `Ptr SDLWindow' ,
+ alloca- `Int' peekIntConv*,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
+{- function sdl_SetWindowSize -}
+{#fun fsdlvid_sdl_SetWindowSize as sdlSetWindowSize 
+{ castPtr `Ptr SDLWindow' ,
+ fromIntegral `Int' ,
+ fromIntegral `Int' } -> `()'  #}
+
+{- function sdl_GetWindowSize -}
+{#fun fsdlvid_sdl_GetWindowSize as sdlGetWindowSize 
+{ castPtr `Ptr SDLWindow' ,
+ alloca- `Int' peekIntConv*,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
+{- function sdl_SetWindowMinimumSize -}
+{#fun fsdlvid_sdl_SetWindowMinimumSize as sdlSetWindowMinimumSize 
+{ castPtr `Ptr SDLWindow' ,
+ fromIntegral `Int' ,
+ fromIntegral `Int' } -> `()'  #}
+
+{- function sdl_GetWindowMinimumSize -}
+{#fun fsdlvid_sdl_GetWindowMinimumSize as sdlGetWindowMinimumSize 
+{ castPtr `Ptr SDLWindow' ,
+ alloca- `Int' peekIntConv*,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
+{- function sdl_SetWindowMaximumSize -}
+{#fun fsdlvid_sdl_SetWindowMaximumSize as sdlSetWindowMaximumSize 
+{ castPtr `Ptr SDLWindow' ,
+ fromIntegral `Int' ,
+ fromIntegral `Int' } -> `()'  #}
+
+{- function sdl_GetWindowMaximumSize -}
+{#fun fsdlvid_sdl_GetWindowMaximumSize as sdlGetWindowMaximumSize 
+{ castPtr `Ptr SDLWindow' ,
+ alloca- `Int' peekIntConv*,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
+{- function sdl_ShowWindow -}
+{#fun fsdlvid_sdl_ShowWindow as sdlShowWindow 
+{ castPtr `Ptr SDLWindow' } -> `()'  #}
+
+{- function sdl_HideWindow -}
+{#fun fsdlvid_sdl_HideWindow as sdlHideWindow 
+{ castPtr `Ptr SDLWindow' } -> `()'  #}
+
+{- function sdl_RaiseWindow -}
+{#fun fsdlvid_sdl_RaiseWindow as sdlRaiseWindow 
+{ castPtr `Ptr SDLWindow' } -> `()'  #}
+
+{- function sdl_MaximizeWindow -}
+{#fun fsdlvid_sdl_MaximizeWindow as sdlMaximizeWindow 
+{ castPtr `Ptr SDLWindow' } -> `()'  #}
+
+{- function sdl_MinimizeWindow -}
+{#fun fsdlvid_sdl_MinimizeWindow as sdlMinimizeWindow 
+{ castPtr `Ptr SDLWindow' } -> `()'  #}
+
+{- function sdl_RestoreWindow -}
+{#fun fsdlvid_sdl_RestoreWindow as sdlRestoreWindow 
+{ castPtr `Ptr SDLWindow' } -> `()'  #}
+
+{- function sdl_SetWindowFullscreen -}
+{#fun fsdlvid_sdl_SetWindowFullscreen as sdlSetWindowFullscreen 
+{ castPtr `Ptr SDLWindow' ,
+ fromIntegral `Int' ,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
+{- function sdl_UpdateWindowSurface -}
+{#fun fsdlvid_sdl_UpdateWindowSurface as sdlUpdateWindowSurface 
+{ castPtr `Ptr SDLWindow' ,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
+{- function sdl_SetWindowBrightness -}
+{#fun fsdlvid_sdl_SetWindowBrightness as sdlSetWindowBrightness 
+{ castPtr `Ptr SDLWindow' ,
+ realToFrac `Float' ,
+ alloca- `Int' peekIntConv*} -> `()'  #}
+
+{- function sdl_GetWindowBrightness -}
+{#fun fsdlvid_sdl_GetWindowBrightness as sdlGetWindowBrightness 
+{ castPtr `Ptr SDLWindow' ,
+ alloca- `Float' peekFloatConv*} -> `()'  #}
+
+{- function sdl_DestroyWindow -}
+{#fun fsdlvid_sdl_DestroyWindow as sdlDestroyWindow 
+{ castPtr `Ptr SDLWindow' } -> `()'  #}
+
+{- function sdl_EnableScreenSaver -}
+{#fun fsdlvid_sdl_EnableScreenSaver as sdlEnableScreenSaver 
+{ } -> `()'  #}
+
+{- function sdl_DisableScreenSaver -}
+{#fun fsdlvid_sdl_DisableScreenSaver as sdlDisableScreenSaver 
+{ } -> `()'  #}
+
diff --git a/HGamer3D/Bindings/SDL2/StructHG3DClass.chs b/HGamer3D/Bindings/SDL2/StructHG3DClass.chs
--- a/HGamer3D/Bindings/SDL2/StructHG3DClass.chs
+++ b/HGamer3D/Bindings/SDL2/StructHG3DClass.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- StructHG3DClass.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.StructHG3DClass where
 
@@ -38,15 +38,15 @@
 
 
 #include "StructHG3DClass.h"
-
-import Data.Bits
-import HGamer3D.Data.HG3DClass
-
-{#pointer *hg3dclass_struct as HG3DClassPtr -> HG3DClass #}
-
-withHG3DClass :: HG3DClass -> (HG3DClassPtr -> IO b) -> IO b
-withHG3DClass = with
-
-peekHG3DClass :: HG3DClassPtr -> IO HG3DClass
-peekHG3DClass = peek
-
+
+import Data.Bits
+import HGamer3D.Data.HG3DClass
+
+{#pointer *hg3dclass_struct as HG3DClassPtr -> HG3DClass #}
+
+withHG3DClass :: HG3DClass -> (HG3DClassPtr -> IO b) -> IO b
+withHG3DClass = with
+
+peekHG3DClass :: HG3DClassPtr -> IO HG3DClass
+peekHG3DClass = peek
+
diff --git a/HGamer3D/Bindings/SDL2/StructSDLEvent.chs b/HGamer3D/Bindings/SDL2/StructSDLEvent.chs
--- a/HGamer3D/Bindings/SDL2/StructSDLEvent.chs
+++ b/HGamer3D/Bindings/SDL2/StructSDLEvent.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- StructSDLEvent.chs
 
--- 
+-- 
 
 module HGamer3D.Bindings.SDL2.StructSDLEvent where
 
@@ -38,116 +38,116 @@
 
 
 #include "StructSDLEvent.h"
-
-import HGamer3D.Data
-import HGamer3D.Data.Window
-
-import HGamer3D.Bindings.SDL2.EnumSDLEventType
-import HGamer3D.Bindings.SDL2.EnumSDLKeymod
-import HGamer3D.Bindings.SDL2.EnumSDLScancode
-import HGamer3D.Bindings.SDL2.EnumSDLWindowEventID
-
-import Control.Monad
-import Control.Applicative
-import Control.Exception
-
-import qualified Data.ByteString.Char8 as BSC8
-import qualified Data.String.UTF8 as UTF8
-
-import Foreign.Storable
-import Foreign.C.Types
-import Foreign.Ptr
-
-type Keycode = Word32
-type Keymod = Word16
-
-type MouseID = Int
-
-data SDLButton = SDLButtonLeft | SDLButtonRight | SDLButtonMiddle | SDLButtonX1 | SDLButtonX2 | SDLButtonNumber Int deriving (Eq, Show)
-
-_getButton :: Word8 -> SDLButton
-_getButton w = case w of
-   1 -> SDLButtonLeft
-   2 -> SDLButtonMiddle
-   3 -> SDLButtonRight
-   4 -> SDLButtonX1
-   5 -> SDLButtonX2
-   _ -> SDLButtonNumber ((fromIntegral . toInteger) w)
-
-data SDLEvent = EvtKeyUp GameTime Window EnumSDLScancode Keycode Keymod |
-             EvtKeyDown GameTime Window EnumSDLScancode Keycode Keymod |
-             EvtText GameTime Window String | 
-             EvtQuit GameTime |
-             EvtWindow GameTime Window EnumSDLWindowEventID Int Int |
-             EvtMouseButtonDown GameTime Window MouseID SDLButton Int Int |
-             EvtMouseButtonUp GameTime Window MouseID SDLButton Int Int |
-             EvtMouseMotion GameTime Window MouseID Int Int Int Int | 
-             EvtCommon GameTime EnumSDLEventType |
-             EvtNotValid
-
-instance Storable SDLEvent where
-  sizeOf _ = 56
-  alignment _ = 4
-  
-  peek p = do
-   typ  <- (peekByteOff p 0 :: IO CUInt)
-   time <- (peekByteOff p 4 :: IO CUInt)
-   Control.Exception.catch (do
-      let evttyp = (toEnum . fromIntegral . toInteger) typ  -- this first throws exception if enum not ok !
-      let t = ((fromIntegral . (* 1000000) . toInteger) time) :: GameTime
-
-      case (evttyp) of
-         SDL_QUIT -> return $ EvtQuit t
-         SDL_KEYDOWN -> EvtKeyDown <$> return t
-                            <*> fmap (Window . fromIntegral . toInteger) (peekByteOff p 8 :: IO CUInt)
-                            <*> fmap (toEnum . fromIntegral . toInteger) (peekByteOff p 16 :: IO CUInt)
-                            <*> fmap (toEnum . fromIntegral . toInteger) (peekByteOff p 20 :: IO Keycode)
-                            <*> fmap (toEnum . fromIntegral . toInteger) (peekByteOff p 24 :: IO Keymod)
-         SDL_KEYUP -> EvtKeyUp <$> return t
-                            <*> fmap (Window . fromIntegral . toInteger) (peekByteOff p 8 :: IO CUInt)
-                            <*> fmap (toEnum . fromIntegral . toInteger) (peekByteOff p 16 :: IO CUInt)
-                            <*> fmap (toEnum . fromIntegral . toInteger) (peekByteOff p 20 :: IO Keycode)
-                            <*> fmap (toEnum . fromIntegral . toInteger) (peekByteOff p 24 :: IO Keymod)
-         SDL_WINDOWEVENT -> EvtWindow <$> return t
-                            <*> fmap (Window . fromIntegral . toInteger) (peekByteOff p 8 :: IO CUInt)
-                            <*> fmap (toEnum . fromIntegral . toInteger) (peekByteOff p 12 :: IO Word8)
-                            <*> fmap (fromIntegral . toInteger) (peekByteOff p 16 :: IO CInt)
-                            <*> fmap (fromIntegral . toInteger) (peekByteOff p 20 :: IO CInt)
-         SDL_TEXTINPUT -> EvtText <$> return t
-                            <*> fmap (Window . fromIntegral . toInteger) (peekByteOff p 8 :: IO CUInt)
-			    -- this text conversion is neccessary, the C-String of the event contains a UTF8-encoding
-			    -- with BSC8.pack the string is converted to ByteString without additional UTF8-encoding
-			    -- the remaining decoding, creates a normal (Unicode) Haskell string from that
-                            <*> fmap (UTF8.toString . UTF8.fromRep . BSC8.pack) (peekCAString (castPtr (plusPtr p 12)) )
-         SDL_MOUSEBUTTONDOWN -> EvtMouseButtonDown <$> return t
-                            <*> fmap (Window . fromIntegral . toInteger) (peekByteOff p 8 :: IO CUInt)
-                            <*> fmap (fromIntegral . toInteger) (peekByteOff p 12 :: IO CUInt )
-                            <*> fmap _getButton (peekByteOff p 16 :: IO Word8)
-                            <*> fmap (fromIntegral . toInteger) (peekByteOff p 20 :: IO CInt)
-                            <*> fmap (fromIntegral . toInteger) (peekByteOff p 24 :: IO CInt)
-         SDL_MOUSEBUTTONUP -> EvtMouseButtonUp <$> return t
-                            <*> fmap (Window . fromIntegral . toInteger) (peekByteOff p 8 :: IO CUInt)
-                            <*> fmap (fromIntegral . toInteger) (peekByteOff p 12 :: IO CUInt )
-                            <*> fmap _getButton (peekByteOff p 16 :: IO Word8)
-                            <*> fmap (fromIntegral . toInteger) (peekByteOff p 20 :: IO CInt)
-                            <*> fmap (fromIntegral . toInteger) (peekByteOff p 24 :: IO CInt)
-         SDL_MOUSEMOTION -> EvtMouseMotion <$> return t
-                            <*> fmap (Window . fromIntegral . toInteger) (peekByteOff p 8 :: IO CUInt)
-                            <*> fmap (fromIntegral . toInteger) (peekByteOff p 12 :: IO CUInt )
-                            <*> fmap (fromIntegral . toInteger) (peekByteOff p 20 :: IO CInt)
-                            <*> fmap (fromIntegral . toInteger) (peekByteOff p 24 :: IO CInt)
-                            <*> fmap (fromIntegral . toInteger) (peekByteOff p 28 :: IO CInt)
-                            <*> fmap (fromIntegral . toInteger) (peekByteOff p 32 :: IO CInt)
-         _ -> return $ EvtCommon t evttyp
-               ) ((\e -> return EvtNotValid) ::(SomeException -> IO SDLEvent))
-
-  poke p evt = error "poke of SDLEvent not implemented"
-    
-{#pointer *sdlevent_struct as SDLEventPtr -> SDLEvent #}
-
-withSDLEvent :: SDLEvent -> (SDLEventPtr -> IO b) -> IO b
-withSDLEvent = with
-
-peekSDLEvent :: SDLEventPtr -> IO SDLEvent
-peekSDLEvent = peek
-
+
+import HGamer3D.Data
+import HGamer3D.Data.Window
+
+import HGamer3D.Bindings.SDL2.EnumSDLEventType
+import HGamer3D.Bindings.SDL2.EnumSDLKeymod
+import HGamer3D.Bindings.SDL2.EnumSDLScancode
+import HGamer3D.Bindings.SDL2.EnumSDLWindowEventID
+
+import Control.Monad
+import Control.Applicative
+import Control.Exception
+
+import qualified Data.ByteString.Char8 as BSC8
+import qualified Data.String.UTF8 as UTF8
+
+import Foreign.Storable
+import Foreign.C.Types
+import Foreign.Ptr
+
+type Keycode = Word32
+type Keymod = Word16
+
+type MouseID = Int
+
+data SDLButton = SDLButtonLeft | SDLButtonRight | SDLButtonMiddle | SDLButtonX1 | SDLButtonX2 | SDLButtonNumber Int deriving (Eq, Show)
+
+_getButton :: Word8 -> SDLButton
+_getButton w = case w of
+   1 -> SDLButtonLeft
+   2 -> SDLButtonMiddle
+   3 -> SDLButtonRight
+   4 -> SDLButtonX1
+   5 -> SDLButtonX2
+   _ -> SDLButtonNumber ((fromIntegral . toInteger) w)
+
+data SDLEvent = EvtKeyUp GameTime Window EnumSDLScancode Keycode Keymod |
+             EvtKeyDown GameTime Window EnumSDLScancode Keycode Keymod |
+             EvtText GameTime Window String | 
+             EvtQuit GameTime |
+             EvtWindow GameTime Window EnumSDLWindowEventID Int Int |
+             EvtMouseButtonDown GameTime Window MouseID SDLButton Int Int |
+             EvtMouseButtonUp GameTime Window MouseID SDLButton Int Int |
+             EvtMouseMotion GameTime Window MouseID Int Int Int Int | 
+             EvtCommon GameTime EnumSDLEventType |
+             EvtNotValid
+
+instance Storable SDLEvent where
+  sizeOf _ = 56
+  alignment _ = 4
+  
+  peek p = do
+   typ  <- (peekByteOff p 0 :: IO CUInt)
+   time <- (peekByteOff p 4 :: IO CUInt)
+   Control.Exception.catch (do
+      let evttyp = (toEnum . fromIntegral . toInteger) typ  -- this first throws exception if enum not ok !
+      let t = ((fromIntegral . (* 1000000) . toInteger) time) :: GameTime
+
+      case (evttyp) of
+         SDL_QUIT -> return $ EvtQuit t
+         SDL_KEYDOWN -> EvtKeyDown <$> return t
+                            <*> fmap (Window . fromIntegral . toInteger) (peekByteOff p 8 :: IO CUInt)
+                            <*> fmap (toEnum . fromIntegral . toInteger) (peekByteOff p 16 :: IO CUInt)
+                            <*> fmap (toEnum . fromIntegral . toInteger) (peekByteOff p 20 :: IO Keycode)
+                            <*> fmap (toEnum . fromIntegral . toInteger) (peekByteOff p 24 :: IO Keymod)
+         SDL_KEYUP -> EvtKeyUp <$> return t
+                            <*> fmap (Window . fromIntegral . toInteger) (peekByteOff p 8 :: IO CUInt)
+                            <*> fmap (toEnum . fromIntegral . toInteger) (peekByteOff p 16 :: IO CUInt)
+                            <*> fmap (toEnum . fromIntegral . toInteger) (peekByteOff p 20 :: IO Keycode)
+                            <*> fmap (toEnum . fromIntegral . toInteger) (peekByteOff p 24 :: IO Keymod)
+         SDL_WINDOWEVENT -> EvtWindow <$> return t
+                            <*> fmap (Window . fromIntegral . toInteger) (peekByteOff p 8 :: IO CUInt)
+                            <*> fmap (toEnum . fromIntegral . toInteger) (peekByteOff p 12 :: IO Word8)
+                            <*> fmap (fromIntegral . toInteger) (peekByteOff p 16 :: IO CInt)
+                            <*> fmap (fromIntegral . toInteger) (peekByteOff p 20 :: IO CInt)
+         SDL_TEXTINPUT -> EvtText <$> return t
+                            <*> fmap (Window . fromIntegral . toInteger) (peekByteOff p 8 :: IO CUInt)
+			    -- this text conversion is neccessary, the C-String of the event contains a UTF8-encoding
+			    -- with BSC8.pack the string is converted to ByteString without additional UTF8-encoding
+			    -- the remaining decoding, creates a normal (Unicode) Haskell string from that
+                            <*> fmap (UTF8.toString . UTF8.fromRep . BSC8.pack) (peekCAString (castPtr (plusPtr p 12)) )
+         SDL_MOUSEBUTTONDOWN -> EvtMouseButtonDown <$> return t
+                            <*> fmap (Window . fromIntegral . toInteger) (peekByteOff p 8 :: IO CUInt)
+                            <*> fmap (fromIntegral . toInteger) (peekByteOff p 12 :: IO CUInt )
+                            <*> fmap _getButton (peekByteOff p 16 :: IO Word8)
+                            <*> fmap (fromIntegral . toInteger) (peekByteOff p 20 :: IO CInt)
+                            <*> fmap (fromIntegral . toInteger) (peekByteOff p 24 :: IO CInt)
+         SDL_MOUSEBUTTONUP -> EvtMouseButtonUp <$> return t
+                            <*> fmap (Window . fromIntegral . toInteger) (peekByteOff p 8 :: IO CUInt)
+                            <*> fmap (fromIntegral . toInteger) (peekByteOff p 12 :: IO CUInt )
+                            <*> fmap _getButton (peekByteOff p 16 :: IO Word8)
+                            <*> fmap (fromIntegral . toInteger) (peekByteOff p 20 :: IO CInt)
+                            <*> fmap (fromIntegral . toInteger) (peekByteOff p 24 :: IO CInt)
+         SDL_MOUSEMOTION -> EvtMouseMotion <$> return t
+                            <*> fmap (Window . fromIntegral . toInteger) (peekByteOff p 8 :: IO CUInt)
+                            <*> fmap (fromIntegral . toInteger) (peekByteOff p 12 :: IO CUInt )
+                            <*> fmap (fromIntegral . toInteger) (peekByteOff p 20 :: IO CInt)
+                            <*> fmap (fromIntegral . toInteger) (peekByteOff p 24 :: IO CInt)
+                            <*> fmap (fromIntegral . toInteger) (peekByteOff p 28 :: IO CInt)
+                            <*> fmap (fromIntegral . toInteger) (peekByteOff p 32 :: IO CInt)
+         _ -> return $ EvtCommon t evttyp
+               ) ((\e -> return EvtNotValid) ::(SomeException -> IO SDLEvent))
+
+  poke p evt = error "poke of SDLEvent not implemented"
+    
+{#pointer *sdlevent_struct as SDLEventPtr -> SDLEvent #}
+
+withSDLEvent :: SDLEvent -> (SDLEventPtr -> IO b) -> IO b
+withSDLEvent = with
+
+peekSDLEvent :: SDLEventPtr -> IO SDLEvent
+peekSDLEvent = peek
+
diff --git a/HGamer3D/Bindings/SDL2/Utils.chs b/HGamer3D/Bindings/SDL2/Utils.chs
--- a/HGamer3D/Bindings/SDL2/Utils.chs
+++ b/HGamer3D/Bindings/SDL2/Utils.chs
@@ -3,7 +3,7 @@
 
 -- 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
 -- 
@@ -18,12 +18,12 @@
 -- 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.
--- 
+-- 
 
 
 -- Utils.hs
 
--- Marshalling Utilities
+-- Marshalling Utilities
 
 module HGamer3D.Bindings.SDL2.Utils where
 
@@ -38,95 +38,95 @@
 
 
 #include "StructHG3DClass.h"
-
-import Control.Monad (liftM)
-
--- Strings with explicit length
---
-withCStringLenIntConv :: Num n => String -> ((CString, n) -> IO a) -> IO a
-withCStringLenIntConv s f    = withCStringLen s $ \(p, n) -> f (p, fromIntegral n)
-
-peekCStringLenIntConv :: Integral n => (CString, n) -> IO String
-peekCStringLenIntConv (s, n) = peekCStringLen (s, fromIntegral n)
-
--- Marshalling of numerals
---
-
-withIntConv   :: (Storable b, Integral a, Integral b) 
-              => a -> (Ptr b -> IO c) -> IO c
-withIntConv    = with . fromIntegral
-
-withFloatConv :: (Storable b, RealFloat a, RealFloat b) 
-              => a -> (Ptr b -> IO c) -> IO c
-withFloatConv  = with . realToFrac
-
-peekIntConv   :: (Storable a, Integral a, Integral b) 
-              => Ptr a -> IO b
-peekIntConv    = liftM fromIntegral . peek
-
-peekFloatConv :: (Storable a, RealFloat a, RealFloat b) 
-              => Ptr a -> IO b
-peekFloatConv  = liftM realToFrac . peek
-
-
--- String Conversion functions
---
-
-withCUString b f = withCWString b (f . castPtr)
-peekCUString = peekCWString . castPtr
-alloc64k = allocaBytes (1024 * 64)
-
--- c2hs replacements of utility functions, to get rid of annoying c2hs
--- deprecated messages
-
--- Passing Enums
-
-cIntFromEnum :: Enum a => a -> CInt
-cIntFromEnum = cIntConv . fromEnum
-
-cIntToEnum :: Enum a => CInt -> a
-cIntToEnum = toEnum . cIntConv
-
-
--- Passing Booleans by reference
---
-
-withBoolUtil :: (Integral a, Storable a) => Bool -> (Ptr a -> IO b) -> IO b
-withBoolUtil  = with . fromBool
-
-peekBoolUtil :: (Integral a, Storable a) => Ptr a -> IO Bool
-peekBoolUtil  = liftM toBool . peek
-
-
--- Passing enums by reference
---
-
-withEnumUtil :: (Enum a, Integral b, Storable b) => a -> (Ptr b -> IO c) -> IO c
-withEnumUtil  = with . cFromEnum
-
-peekEnumUtil :: (Enum a, Integral b, Storable b) => Ptr b -> IO a
-peekEnumUtil  = liftM cToEnum . peek
-
--- Conversion routines
--- -------------------
-
--- |Integral conversion
---
-cIntConv :: (Integral a, Integral b) => a -> b
-cIntConv  = fromIntegral
-
--- |Floating conversion
---
-cFloatConv :: (RealFloat a, RealFloat b) => a -> b
-cFloatConv  = realToFrac
-
--- |Convert a C enumeration to Haskell.
---
-cToEnum :: (Integral i, Enum e) => i -> e
-cToEnum  = toEnum . fromIntegral
-
--- |Convert a Haskell enumeration to C.
---
-cFromEnum :: (Enum e, Integral i) => e -> i
-cFromEnum  = fromIntegral . fromEnum
-
+
+import Control.Monad (liftM)
+
+-- Strings with explicit length
+--
+withCStringLenIntConv :: Num n => String -> ((CString, n) -> IO a) -> IO a
+withCStringLenIntConv s f    = withCStringLen s $ \(p, n) -> f (p, fromIntegral n)
+
+peekCStringLenIntConv :: Integral n => (CString, n) -> IO String
+peekCStringLenIntConv (s, n) = peekCStringLen (s, fromIntegral n)
+
+-- Marshalling of numerals
+--
+
+withIntConv   :: (Storable b, Integral a, Integral b) 
+              => a -> (Ptr b -> IO c) -> IO c
+withIntConv    = with . fromIntegral
+
+withFloatConv :: (Storable b, RealFloat a, RealFloat b) 
+              => a -> (Ptr b -> IO c) -> IO c
+withFloatConv  = with . realToFrac
+
+peekIntConv   :: (Storable a, Integral a, Integral b) 
+              => Ptr a -> IO b
+peekIntConv    = liftM fromIntegral . peek
+
+peekFloatConv :: (Storable a, RealFloat a, RealFloat b) 
+              => Ptr a -> IO b
+peekFloatConv  = liftM realToFrac . peek
+
+
+-- String Conversion functions
+--
+
+withCUString b f = withCWString b (f . castPtr)
+peekCUString = peekCWString . castPtr
+alloc64k = allocaBytes (1024 * 64)
+
+-- c2hs replacements of utility functions, to get rid of annoying c2hs
+-- deprecated messages
+
+-- Passing Enums
+
+cIntFromEnum :: Enum a => a -> CInt
+cIntFromEnum = cIntConv . fromEnum
+
+cIntToEnum :: Enum a => CInt -> a
+cIntToEnum = toEnum . cIntConv
+
+
+-- Passing Booleans by reference
+--
+
+withBoolUtil :: (Integral a, Storable a) => Bool -> (Ptr a -> IO b) -> IO b
+withBoolUtil  = with . fromBool
+
+peekBoolUtil :: (Integral a, Storable a) => Ptr a -> IO Bool
+peekBoolUtil  = liftM toBool . peek
+
+
+-- Passing enums by reference
+--
+
+withEnumUtil :: (Enum a, Integral b, Storable b) => a -> (Ptr b -> IO c) -> IO c
+withEnumUtil  = with . cFromEnum
+
+peekEnumUtil :: (Enum a, Integral b, Storable b) => Ptr b -> IO a
+peekEnumUtil  = liftM cToEnum . peek
+
+-- Conversion routines
+-- -------------------
+
+-- |Integral conversion
+--
+cIntConv :: (Integral a, Integral b) => a -> b
+cIntConv  = fromIntegral
+
+-- |Floating conversion
+--
+cFloatConv :: (RealFloat a, RealFloat b) => a -> b
+cFloatConv  = realToFrac
+
+-- |Convert a C enumeration to Haskell.
+--
+cToEnum :: (Integral i, Enum e) => i -> e
+cToEnum  = toEnum . fromIntegral
+
+-- |Convert a Haskell enumeration to C.
+--
+cFromEnum :: (Enum e, Integral i) => e -> i
+cFromEnum  = fromIntegral . fromEnum
+
diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -1,6 +1,6 @@
 -- 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");
@@ -14,7 +14,7 @@
 -- 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.
--- 
+-- 
 -- Setup.hs
 
 import Distribution.Simple
diff --git a/include/ClassHG3DUtilities.h b/include/ClassHG3DUtilities.h
--- a/include/ClassHG3DUtilities.h
+++ b/include/ClassHG3DUtilities.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,20 +14,20 @@
 // 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"
+#ifndef _DEFINED_HG3D_ClassHG3DUtilities
+#define _DEFINED_HG3D_ClassHG3DUtilities
 
+#include "ClassPtr.h"
 
-// 
-void sdl2_hg3dutl_createWindowFromHandle(unsigned int handle_c, void * * result_c);
-
-#endif 
+
+// 
+void hg3d_util_createWindowFromHandle(unsigned int handle_c, void * * result_c);
+
+#endif 
diff --git a/include/ClassPtr.h b/include/ClassPtr.h
--- a/include/ClassPtr.h
+++ b/include/ClassPtr.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,25 +14,28 @@
 // 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.
-// 
+// 
 
 // ClassPtr.h
 
-// Here are the methods defined, which do the class pointer
-// marshalling and the casting of subclasses to higher classes
+// Here are the methods defined, which do the class pointer
+// marshalling and the casting of subclasses to higher classes
 
 #include "wchar.h"
 
 
-#ifndef CLASSPTR_INCLUDE_H
-#define CLASSPTR_INCLUDE_H
-
-typedef struct hg3dclass_struct {
-	void *ptr;
-	void *fptr;
-} hg3dclass_struct;
-
-void *getHG3DClassPtr(hg3dclass_struct inSt, const char* className);
-
-
-#endif
+#ifndef CLASSPTR_INCLUDE_H
+#define CLASSPTR_INCLUDE_H
+
+typedef struct hg3dclass_struct {
+	void *ptr;
+	void *fptr;
+} hg3dclass_struct;
+
+void *getHG3DClassPtr(hg3dclass_struct inSt, const char* className);
+
+
+typedef void ClassHG3DUtilities; 
+hg3dclass_struct getHG3DClass_HG3DUtilities(void *ptrIn);
+
+#endif
diff --git a/include/EnumSDLBlendMode.h b/include/EnumSDLBlendMode.h
--- a/include/EnumSDLBlendMode.h
+++ b/include/EnumSDLBlendMode.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,22 +14,22 @@
 // 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.
-// 
+// 
 
 // EnumSDLBlendMode.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLBlendMode
-#define _DEFINED_HG3D_EnumSDLBlendMode
+#ifndef _DEFINED_HG3D_EnumSDLBlendMode
+#define _DEFINED_HG3D_EnumSDLBlendMode
 
 
-enum EnumSDLBlendMode
-{
-  SDL_BLENDMODE_NONE =  0x00000000, // 
-  SDL_BLENDMODE_BLEND =  0x00000001, // 
-  SDL_BLENDMODE_ADD =  0x00000002, // 
-  SDL_BLENDMODE_MOD =  0x00000004 // 
-};
-#endif 
+enum EnumSDLBlendMode
+{
+  SDL_BLENDMODE_NONE =  0x00000000, // 
+  SDL_BLENDMODE_BLEND =  0x00000001, // 
+  SDL_BLENDMODE_ADD =  0x00000002, // 
+  SDL_BLENDMODE_MOD =  0x00000004 // 
+};
+#endif 
diff --git a/include/EnumSDLEventType.h b/include/EnumSDLEventType.h
--- a/include/EnumSDLEventType.h
+++ b/include/EnumSDLEventType.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,59 +14,59 @@
 // 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.
-// 
+// 
 
 // EnumSDLEventType.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLEventType
-#define _DEFINED_HG3D_EnumSDLEventType
+#ifndef _DEFINED_HG3D_EnumSDLEventType
+#define _DEFINED_HG3D_EnumSDLEventType
 
 
-enum EnumSDLEventType
-{
-  SDL_FIRSTEVENT =  0, // 
-  SDL_QUIT =  0x100, // 
-  SDL_APP_TERMINATING, // 
-  SDL_APP_LOWMEMORY, // 
-  SDL_APP_WILLENTERBACKGROUND, // 
-  SDL_APP_DIDENTERBACKGROUND, // 
-  SDL_APP_WILLENTERFOREGROUND, // 
-  SDL_APP_DIDENTERFOREGROUND, // 
-  SDL_WINDOWEVENT =  0x200, // 
-  SDL_SYSWMEVENT, // 
-  SDL_KEYDOWN =  0x300, // 
-  SDL_KEYUP, // 
-  SDL_TEXTEDITING, // 
-  SDL_TEXTINPUT, // 
-  SDL_MOUSEMOTION =  0x400, // 
-  SDL_MOUSEBUTTONDOWN, // 
-  SDL_MOUSEBUTTONUP, // 
-  SDL_MOUSEWHEEL, // 
-  SDL_JOYAXISMOTION =  0x600, // 
-  SDL_JOYBALLMOTION, // 
-  SDL_JOYHATMOTION, // 
-  SDL_JOYBUTTONDOWN, // 
-  SDL_JOYBUTTONUP, // 
-  SDL_JOYDEVICEADDED, // 
-  SDL_JOYDEVICEREMOVED, // 
-  SDL_CONTROLLERAXISMOTION =  0x650, // 
-  SDL_CONTROLLERBUTTONDOWN, // 
-  SDL_CONTROLLERBUTTONUP, // 
-  SDL_CONTROLLERDEVICEADDED, // 
-  SDL_CONTROLLERDEVICEREMOVED, // 
-  SDL_CONTROLLERDEVICEREMAPPED, // 
-  SDL_FINGERDOWN =  0x700, // 
-  SDL_FINGERUP, // 
-  SDL_FINGERMOTION, // 
-  SDL_DOLLARGESTURE =  0x800, // 
-  SDL_DOLLARRECORD, // 
-  SDL_MULTIGESTURE, // 
-  SDL_CLIPBOARDUPDATE =  0x900, // 
-  SDL_DROPFILE =  0x1000, // 
-  SDL_USEREVENT =  0x8000, // 
-  SDL_LASTEVENT =  0xFFFF // 
-};
-#endif 
+enum EnumSDLEventType
+{
+  SDL_FIRSTEVENT =  0, // 
+  SDL_QUIT =  0x100, // 
+  SDL_APP_TERMINATING, // 
+  SDL_APP_LOWMEMORY, // 
+  SDL_APP_WILLENTERBACKGROUND, // 
+  SDL_APP_DIDENTERBACKGROUND, // 
+  SDL_APP_WILLENTERFOREGROUND, // 
+  SDL_APP_DIDENTERFOREGROUND, // 
+  SDL_WINDOWEVENT =  0x200, // 
+  SDL_SYSWMEVENT, // 
+  SDL_KEYDOWN =  0x300, // 
+  SDL_KEYUP, // 
+  SDL_TEXTEDITING, // 
+  SDL_TEXTINPUT, // 
+  SDL_MOUSEMOTION =  0x400, // 
+  SDL_MOUSEBUTTONDOWN, // 
+  SDL_MOUSEBUTTONUP, // 
+  SDL_MOUSEWHEEL, // 
+  SDL_JOYAXISMOTION =  0x600, // 
+  SDL_JOYBALLMOTION, // 
+  SDL_JOYHATMOTION, // 
+  SDL_JOYBUTTONDOWN, // 
+  SDL_JOYBUTTONUP, // 
+  SDL_JOYDEVICEADDED, // 
+  SDL_JOYDEVICEREMOVED, // 
+  SDL_CONTROLLERAXISMOTION =  0x650, // 
+  SDL_CONTROLLERBUTTONDOWN, // 
+  SDL_CONTROLLERBUTTONUP, // 
+  SDL_CONTROLLERDEVICEADDED, // 
+  SDL_CONTROLLERDEVICEREMOVED, // 
+  SDL_CONTROLLERDEVICEREMAPPED, // 
+  SDL_FINGERDOWN =  0x700, // 
+  SDL_FINGERUP, // 
+  SDL_FINGERMOTION, // 
+  SDL_DOLLARGESTURE =  0x800, // 
+  SDL_DOLLARRECORD, // 
+  SDL_MULTIGESTURE, // 
+  SDL_CLIPBOARDUPDATE =  0x900, // 
+  SDL_DROPFILE =  0x1000, // 
+  SDL_USEREVENT =  0x8000, // 
+  SDL_LASTEVENT =  0xFFFF // 
+};
+#endif 
diff --git a/include/EnumSDLGLAttr.h b/include/EnumSDLGLAttr.h
--- a/include/EnumSDLGLAttr.h
+++ b/include/EnumSDLGLAttr.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,42 +14,42 @@
 // 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.
-// 
+// 
 
 // EnumSDLGLAttr.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLGLAttr
-#define _DEFINED_HG3D_EnumSDLGLAttr
+#ifndef _DEFINED_HG3D_EnumSDLGLAttr
+#define _DEFINED_HG3D_EnumSDLGLAttr
 
 
-enum EnumSDLGLAttr
-{
-  SDL_GL_RED_SIZE, // 
-  SDL_GL_GREEN_SIZE, // 
-  SDL_GL_BLUE_SIZE, // 
-  SDL_GL_ALPHA_SIZE, // 
-  SDL_GL_BUFFER_SIZE, // 
-  SDL_GL_DOUBLEBUFFER, // 
-  SDL_GL_DEPTH_SIZE, // 
-  SDL_GL_STENCIL_SIZE, // 
-  SDL_GL_ACCUM_RED_SIZE, // 
-  SDL_GL_ACCUM_GREEN_SIZE, // 
-  SDL_GL_ACCUM_BLUE_SIZE, // 
-  SDL_GL_ACCUM_ALPHA_SIZE, // 
-  SDL_GL_STEREO, // 
-  SDL_GL_MULTISAMPLEBUFFERS, // 
-  SDL_GL_MULTISAMPLESAMPLES, // 
-  SDL_GL_ACCELERATED_VISUAL, // 
-  SDL_GL_RETAINED_BACKING, // 
-  SDL_GL_CONTEXT_MAJOR_VERSION, // 
-  SDL_GL_CONTEXT_MINOR_VERSION, // 
-  SDL_GL_CONTEXT_EGL, // 
-  SDL_GL_CONTEXT_FLAGS, // 
-  SDL_GL_CONTEXT_PROFILE_MASK, // 
-  SDL_GL_SHARE_WITH_CURRENT_CONTEXT, // 
-  SDL_GL_FRAMEBUFFER_SRGB_CAPABLE // 
-};
-#endif 
+enum EnumSDLGLAttr
+{
+  SDL_GL_RED_SIZE, // 
+  SDL_GL_GREEN_SIZE, // 
+  SDL_GL_BLUE_SIZE, // 
+  SDL_GL_ALPHA_SIZE, // 
+  SDL_GL_BUFFER_SIZE, // 
+  SDL_GL_DOUBLEBUFFER, // 
+  SDL_GL_DEPTH_SIZE, // 
+  SDL_GL_STENCIL_SIZE, // 
+  SDL_GL_ACCUM_RED_SIZE, // 
+  SDL_GL_ACCUM_GREEN_SIZE, // 
+  SDL_GL_ACCUM_BLUE_SIZE, // 
+  SDL_GL_ACCUM_ALPHA_SIZE, // 
+  SDL_GL_STEREO, // 
+  SDL_GL_MULTISAMPLEBUFFERS, // 
+  SDL_GL_MULTISAMPLESAMPLES, // 
+  SDL_GL_ACCELERATED_VISUAL, // 
+  SDL_GL_RETAINED_BACKING, // 
+  SDL_GL_CONTEXT_MAJOR_VERSION, // 
+  SDL_GL_CONTEXT_MINOR_VERSION, // 
+  SDL_GL_CONTEXT_EGL, // 
+  SDL_GL_CONTEXT_FLAGS, // 
+  SDL_GL_CONTEXT_PROFILE_MASK, // 
+  SDL_GL_SHARE_WITH_CURRENT_CONTEXT, // 
+  SDL_GL_FRAMEBUFFER_SRGB_CAPABLE // 
+};
+#endif 
diff --git a/include/EnumSDLGLProfile.h b/include/EnumSDLGLProfile.h
--- a/include/EnumSDLGLProfile.h
+++ b/include/EnumSDLGLProfile.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,21 +14,21 @@
 // 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.
-// 
+// 
 
 // EnumSDLGLProfile.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLGLProfile
-#define _DEFINED_HG3D_EnumSDLGLProfile
+#ifndef _DEFINED_HG3D_EnumSDLGLProfile
+#define _DEFINED_HG3D_EnumSDLGLProfile
 
 
-enum EnumSDLGLProfile
-{
-  SDL_GL_CONTEXT_PROFILE_CORE =  0x0001, // 
-  SDL_GL_CONTEXT_PROFILE_COMPATIBILITY =  0x0002, // 
-  SDL_GL_CONTEXT_PROFILE_ES =  0x0004 // 
-};
-#endif 
+enum EnumSDLGLProfile
+{
+  SDL_GL_CONTEXT_PROFILE_CORE =  0x0001, // 
+  SDL_GL_CONTEXT_PROFILE_COMPATIBILITY =  0x0002, // 
+  SDL_GL_CONTEXT_PROFILE_ES =  0x0004 // 
+};
+#endif 
diff --git a/include/EnumSDLGameControllerAxis.h b/include/EnumSDLGameControllerAxis.h
--- a/include/EnumSDLGameControllerAxis.h
+++ b/include/EnumSDLGameControllerAxis.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,26 +14,26 @@
 // 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.
-// 
+// 
 
 // EnumSDLGameControllerAxis.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLGameControllerAxis
-#define _DEFINED_HG3D_EnumSDLGameControllerAxis
+#ifndef _DEFINED_HG3D_EnumSDLGameControllerAxis
+#define _DEFINED_HG3D_EnumSDLGameControllerAxis
 
 
-enum EnumSDLGameControllerAxis
-{
-  SDL_CONTROLLER_AXIS_INVALID =  -1, // 
-  SDL_CONTROLLER_AXIS_LEFTX, // 
-  SDL_CONTROLLER_AXIS_LEFTY, // 
-  SDL_CONTROLLER_AXIS_RIGHTX, // 
-  SDL_CONTROLLER_AXIS_RIGHTY, // 
-  SDL_CONTROLLER_AXIS_TRIGGERLEFT, // 
-  SDL_CONTROLLER_AXIS_TRIGGERRIGHT, // 
-  SDL_CONTROLLER_AXIS_MAX // 
-};
-#endif 
+enum EnumSDLGameControllerAxis
+{
+  SDL_CONTROLLER_AXIS_INVALID =  -1, // 
+  SDL_CONTROLLER_AXIS_LEFTX, // 
+  SDL_CONTROLLER_AXIS_LEFTY, // 
+  SDL_CONTROLLER_AXIS_RIGHTX, // 
+  SDL_CONTROLLER_AXIS_RIGHTY, // 
+  SDL_CONTROLLER_AXIS_TRIGGERLEFT, // 
+  SDL_CONTROLLER_AXIS_TRIGGERRIGHT, // 
+  SDL_CONTROLLER_AXIS_MAX // 
+};
+#endif 
diff --git a/include/EnumSDLGameControllerBindType.h b/include/EnumSDLGameControllerBindType.h
--- a/include/EnumSDLGameControllerBindType.h
+++ b/include/EnumSDLGameControllerBindType.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,22 +14,22 @@
 // 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.
-// 
+// 
 
 // EnumSDLGameControllerBindType.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLGameControllerBindType
-#define _DEFINED_HG3D_EnumSDLGameControllerBindType
+#ifndef _DEFINED_HG3D_EnumSDLGameControllerBindType
+#define _DEFINED_HG3D_EnumSDLGameControllerBindType
 
 
-enum EnumSDLGameControllerBindType
-{
-  SDL_CONTROLLER_BINDTYPE_NONE =  0, // 
-  SDL_CONTROLLER_BINDTYPE_BUTTON, // 
-  SDL_CONTROLLER_BINDTYPE_AXIS, // 
-  SDL_CONTROLLER_BINDTYPE_HAT // 
-};
-#endif 
+enum EnumSDLGameControllerBindType
+{
+  SDL_CONTROLLER_BINDTYPE_NONE =  0, // 
+  SDL_CONTROLLER_BINDTYPE_BUTTON, // 
+  SDL_CONTROLLER_BINDTYPE_AXIS, // 
+  SDL_CONTROLLER_BINDTYPE_HAT // 
+};
+#endif 
diff --git a/include/EnumSDLGameControllerButton.h b/include/EnumSDLGameControllerButton.h
--- a/include/EnumSDLGameControllerButton.h
+++ b/include/EnumSDLGameControllerButton.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,35 +14,35 @@
 // 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.
-// 
+// 
 
 // EnumSDLGameControllerButton.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLGameControllerButton
-#define _DEFINED_HG3D_EnumSDLGameControllerButton
+#ifndef _DEFINED_HG3D_EnumSDLGameControllerButton
+#define _DEFINED_HG3D_EnumSDLGameControllerButton
 
 
-enum EnumSDLGameControllerButton
-{
-  SDL_CONTROLLER_BUTTON_INVALID =  -1, // 
-  SDL_CONTROLLER_BUTTON_A, // 
-  SDL_CONTROLLER_BUTTON_B, // 
-  SDL_CONTROLLER_BUTTON_X, // 
-  SDL_CONTROLLER_BUTTON_Y, // 
-  SDL_CONTROLLER_BUTTON_BACK, // 
-  SDL_CONTROLLER_BUTTON_GUIDE, // 
-  SDL_CONTROLLER_BUTTON_START, // 
-  SDL_CONTROLLER_BUTTON_LEFTSTICK, // 
-  SDL_CONTROLLER_BUTTON_RIGHTSTICK, // 
-  SDL_CONTROLLER_BUTTON_LEFTSHOULDER, // 
-  SDL_CONTROLLER_BUTTON_RIGHTSHOULDER, // 
-  SDL_CONTROLLER_BUTTON_DPAD_UP, // 
-  SDL_CONTROLLER_BUTTON_DPAD_DOWN, // 
-  SDL_CONTROLLER_BUTTON_DPAD_LEFT, // 
-  SDL_CONTROLLER_BUTTON_DPAD_RIGHT, // 
-  SDL_CONTROLLER_BUTTON_MAX // 
-};
-#endif 
+enum EnumSDLGameControllerButton
+{
+  SDL_CONTROLLER_BUTTON_INVALID =  -1, // 
+  SDL_CONTROLLER_BUTTON_A, // 
+  SDL_CONTROLLER_BUTTON_B, // 
+  SDL_CONTROLLER_BUTTON_X, // 
+  SDL_CONTROLLER_BUTTON_Y, // 
+  SDL_CONTROLLER_BUTTON_BACK, // 
+  SDL_CONTROLLER_BUTTON_GUIDE, // 
+  SDL_CONTROLLER_BUTTON_START, // 
+  SDL_CONTROLLER_BUTTON_LEFTSTICK, // 
+  SDL_CONTROLLER_BUTTON_RIGHTSTICK, // 
+  SDL_CONTROLLER_BUTTON_LEFTSHOULDER, // 
+  SDL_CONTROLLER_BUTTON_RIGHTSHOULDER, // 
+  SDL_CONTROLLER_BUTTON_DPAD_UP, // 
+  SDL_CONTROLLER_BUTTON_DPAD_DOWN, // 
+  SDL_CONTROLLER_BUTTON_DPAD_LEFT, // 
+  SDL_CONTROLLER_BUTTON_DPAD_RIGHT, // 
+  SDL_CONTROLLER_BUTTON_MAX // 
+};
+#endif 
diff --git a/include/EnumSDLGlContextFlag.h b/include/EnumSDLGlContextFlag.h
--- a/include/EnumSDLGlContextFlag.h
+++ b/include/EnumSDLGlContextFlag.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,22 +14,22 @@
 // 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.
-// 
+// 
 
 // EnumSDLGlContextFlag.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLGlContextFlag
-#define _DEFINED_HG3D_EnumSDLGlContextFlag
+#ifndef _DEFINED_HG3D_EnumSDLGlContextFlag
+#define _DEFINED_HG3D_EnumSDLGlContextFlag
 
 
-enum EnumSDLGlContextFlag
-{
-  SDL_GL_CONTEXT_DEBUG_FLAG =  0x0001, // 
-  SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG =  0x0002, // 
-  SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG =  0x0004, // 
-  SDL_GL_CONTEXT_RESET_ISOLATION_FLAG =  0x0008 // 
-};
-#endif 
+enum EnumSDLGlContextFlag
+{
+  SDL_GL_CONTEXT_DEBUG_FLAG =  0x0001, // 
+  SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG =  0x0002, // 
+  SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG =  0x0004, // 
+  SDL_GL_CONTEXT_RESET_ISOLATION_FLAG =  0x0008 // 
+};
+#endif 
diff --git a/include/EnumSDLHintPriority.h b/include/EnumSDLHintPriority.h
--- a/include/EnumSDLHintPriority.h
+++ b/include/EnumSDLHintPriority.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,21 +14,21 @@
 // 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.
-// 
+// 
 
 // EnumSDLHintPriority.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLHintPriority
-#define _DEFINED_HG3D_EnumSDLHintPriority
+#ifndef _DEFINED_HG3D_EnumSDLHintPriority
+#define _DEFINED_HG3D_EnumSDLHintPriority
 
 
-enum EnumSDLHintPriority
-{
-  SDL_HINT_DEFAULT, // 
-  SDL_HINT_NORMAL, // 
-  SDL_HINT_OVERRIDE // 
-};
-#endif 
+enum EnumSDLHintPriority
+{
+  SDL_HINT_DEFAULT, // 
+  SDL_HINT_NORMAL, // 
+  SDL_HINT_OVERRIDE // 
+};
+#endif 
diff --git a/include/EnumSDLKeycode.h b/include/EnumSDLKeycode.h
--- a/include/EnumSDLKeycode.h
+++ b/include/EnumSDLKeycode.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,265 +14,266 @@
 // 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
+#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 
+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_QUOTE =  '\'', // 
+  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/EnumSDLKeymod.h b/include/EnumSDLKeymod.h
--- a/include/EnumSDLKeymod.h
+++ b/include/EnumSDLKeymod.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,31 +14,31 @@
 // 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.
-// 
+// 
 
 // EnumSDLKeymod.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLKeymod
-#define _DEFINED_HG3D_EnumSDLKeymod
+#ifndef _DEFINED_HG3D_EnumSDLKeymod
+#define _DEFINED_HG3D_EnumSDLKeymod
 
 
-enum EnumSDLKeymod
-{
-  KMOD_NONE =  0x0000, // 
-  KMOD_LSHIFT =  0x0001, // 
-  KMOD_RSHIFT =  0x0002, // 
-  KMOD_LCTRL =  0x0040, // 
-  KMOD_RCTRL =  0x0080, // 
-  KMOD_LALT =  0x0100, // 
-  KMOD_RALT =  0x0200, // 
-  KMOD_LGUI =  0x0400, // 
-  KMOD_RGUI =  0x0800, // 
-  KMOD_NUM =  0x1000, // 
-  KMOD_CAPS =  0x2000, // 
-  KMOD_MODE =  0x4000, // 
-  KMOD_RESERVED =  0x8000 // 
-};
-#endif 
+enum EnumSDLKeymod
+{
+  KMOD_NONE =  0x0000, // 
+  KMOD_LSHIFT =  0x0001, // 
+  KMOD_RSHIFT =  0x0002, // 
+  KMOD_LCTRL =  0x0040, // 
+  KMOD_RCTRL =  0x0080, // 
+  KMOD_LALT =  0x0100, // 
+  KMOD_RALT =  0x0200, // 
+  KMOD_LGUI =  0x0400, // 
+  KMOD_RGUI =  0x0800, // 
+  KMOD_NUM =  0x1000, // 
+  KMOD_CAPS =  0x2000, // 
+  KMOD_MODE =  0x4000, // 
+  KMOD_RESERVED =  0x8000 // 
+};
+#endif 
diff --git a/include/EnumSDLLogCategory.h b/include/EnumSDLLogCategory.h
--- a/include/EnumSDLLogCategory.h
+++ b/include/EnumSDLLogCategory.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,38 +14,38 @@
 // 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.
-// 
+// 
 
 // EnumSDLLogCategory.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLLogCategory
-#define _DEFINED_HG3D_EnumSDLLogCategory
+#ifndef _DEFINED_HG3D_EnumSDLLogCategory
+#define _DEFINED_HG3D_EnumSDLLogCategory
 
 
-enum EnumSDLLogCategory
-{
-  SDL_LOG_CATEGORY_APPLICATION, // 
-  SDL_LOG_CATEGORY_ERROR, // 
-  SDL_LOG_CATEGORY_ASSERT, // 
-  SDL_LOG_CATEGORY_SYSTEM, // 
-  SDL_LOG_CATEGORY_AUDIO, // 
-  SDL_LOG_CATEGORY_VIDEO, // 
-  SDL_LOG_CATEGORY_RENDER, // 
-  SDL_LOG_CATEGORY_INPUT, // 
-  SDL_LOG_CATEGORY_TEST, // 
-  SDL_LOG_CATEGORY_RESERVED1, // 
-  SDL_LOG_CATEGORY_RESERVED2, // 
-  SDL_LOG_CATEGORY_RESERVED3, // 
-  SDL_LOG_CATEGORY_RESERVED4, // 
-  SDL_LOG_CATEGORY_RESERVED5, // 
-  SDL_LOG_CATEGORY_RESERVED6, // 
-  SDL_LOG_CATEGORY_RESERVED7, // 
-  SDL_LOG_CATEGORY_RESERVED8, // 
-  SDL_LOG_CATEGORY_RESERVED9, // 
-  SDL_LOG_CATEGORY_RESERVED10, // 
-  SDL_LOG_CATEGORY_CUSTOM // 
-};
-#endif 
+enum EnumSDLLogCategory
+{
+  SDL_LOG_CATEGORY_APPLICATION, // 
+  SDL_LOG_CATEGORY_ERROR, // 
+  SDL_LOG_CATEGORY_ASSERT, // 
+  SDL_LOG_CATEGORY_SYSTEM, // 
+  SDL_LOG_CATEGORY_AUDIO, // 
+  SDL_LOG_CATEGORY_VIDEO, // 
+  SDL_LOG_CATEGORY_RENDER, // 
+  SDL_LOG_CATEGORY_INPUT, // 
+  SDL_LOG_CATEGORY_TEST, // 
+  SDL_LOG_CATEGORY_RESERVED1, // 
+  SDL_LOG_CATEGORY_RESERVED2, // 
+  SDL_LOG_CATEGORY_RESERVED3, // 
+  SDL_LOG_CATEGORY_RESERVED4, // 
+  SDL_LOG_CATEGORY_RESERVED5, // 
+  SDL_LOG_CATEGORY_RESERVED6, // 
+  SDL_LOG_CATEGORY_RESERVED7, // 
+  SDL_LOG_CATEGORY_RESERVED8, // 
+  SDL_LOG_CATEGORY_RESERVED9, // 
+  SDL_LOG_CATEGORY_RESERVED10, // 
+  SDL_LOG_CATEGORY_CUSTOM // 
+};
+#endif 
diff --git a/include/EnumSDLLogPriority.h b/include/EnumSDLLogPriority.h
--- a/include/EnumSDLLogPriority.h
+++ b/include/EnumSDLLogPriority.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,25 +14,25 @@
 // 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.
-// 
+// 
 
 // EnumSDLLogPriority.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLLogPriority
-#define _DEFINED_HG3D_EnumSDLLogPriority
+#ifndef _DEFINED_HG3D_EnumSDLLogPriority
+#define _DEFINED_HG3D_EnumSDLLogPriority
 
 
-enum EnumSDLLogPriority
-{
-  SDL_LOG_PRIORITY_VERBOSE =  1, // 
-  SDL_LOG_PRIORITY_DEBUG, // 
-  SDL_LOG_PRIORITY_INFO, // 
-  SDL_LOG_PRIORITY_WARN, // 
-  SDL_LOG_PRIORITY_ERROR, // 
-  SDL_LOG_PRIORITY_CRITICAL, // 
-  SDL_NUM_LOG_PRIORITIES // 
-};
-#endif 
+enum EnumSDLLogPriority
+{
+  SDL_LOG_PRIORITY_VERBOSE =  1, // 
+  SDL_LOG_PRIORITY_DEBUG, // 
+  SDL_LOG_PRIORITY_INFO, // 
+  SDL_LOG_PRIORITY_WARN, // 
+  SDL_LOG_PRIORITY_ERROR, // 
+  SDL_LOG_PRIORITY_CRITICAL, // 
+  SDL_NUM_LOG_PRIORITIES // 
+};
+#endif 
diff --git a/include/EnumSDLMessageBoxButtonFlags.h b/include/EnumSDLMessageBoxButtonFlags.h
--- a/include/EnumSDLMessageBoxButtonFlags.h
+++ b/include/EnumSDLMessageBoxButtonFlags.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,20 +14,20 @@
 // 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.
-// 
+// 
 
 // EnumSDLMessageBoxButtonFlags.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLMessageBoxButtonFlags
-#define _DEFINED_HG3D_EnumSDLMessageBoxButtonFlags
+#ifndef _DEFINED_HG3D_EnumSDLMessageBoxButtonFlags
+#define _DEFINED_HG3D_EnumSDLMessageBoxButtonFlags
 
 
-enum EnumSDLMessageBoxButtonFlags
-{
-  SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT =  0x00000001, // 
-  SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT =  0x00000002 // 
-};
-#endif 
+enum EnumSDLMessageBoxButtonFlags
+{
+  SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT =  0x00000001, // 
+  SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT =  0x00000002 // 
+};
+#endif 
diff --git a/include/EnumSDLMessageBoxColorType.h b/include/EnumSDLMessageBoxColorType.h
--- a/include/EnumSDLMessageBoxColorType.h
+++ b/include/EnumSDLMessageBoxColorType.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,24 +14,24 @@
 // 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.
-// 
+// 
 
 // EnumSDLMessageBoxColorType.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLMessageBoxColorType
-#define _DEFINED_HG3D_EnumSDLMessageBoxColorType
+#ifndef _DEFINED_HG3D_EnumSDLMessageBoxColorType
+#define _DEFINED_HG3D_EnumSDLMessageBoxColorType
 
 
-enum EnumSDLMessageBoxColorType
-{
-  SDL_MESSAGEBOX_COLOR_BACKGROUND, // 
-  SDL_MESSAGEBOX_COLOR_TEXT, // 
-  SDL_MESSAGEBOX_COLOR_BUTTON_BORDER, // 
-  SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND, // 
-  SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED, // 
-  SDL_MESSAGEBOX_COLOR_MAX // 
-};
-#endif 
+enum EnumSDLMessageBoxColorType
+{
+  SDL_MESSAGEBOX_COLOR_BACKGROUND, // 
+  SDL_MESSAGEBOX_COLOR_TEXT, // 
+  SDL_MESSAGEBOX_COLOR_BUTTON_BORDER, // 
+  SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND, // 
+  SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED, // 
+  SDL_MESSAGEBOX_COLOR_MAX // 
+};
+#endif 
diff --git a/include/EnumSDLMessageBoxFlags.h b/include/EnumSDLMessageBoxFlags.h
--- a/include/EnumSDLMessageBoxFlags.h
+++ b/include/EnumSDLMessageBoxFlags.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,21 +14,21 @@
 // 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.
-// 
+// 
 
 // EnumSDLMessageBoxFlags.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLMessageBoxFlags
-#define _DEFINED_HG3D_EnumSDLMessageBoxFlags
+#ifndef _DEFINED_HG3D_EnumSDLMessageBoxFlags
+#define _DEFINED_HG3D_EnumSDLMessageBoxFlags
 
 
-enum EnumSDLMessageBoxFlags
-{
-  SDL_MESSAGEBOX_ERROR =  0x00000010, // 
-  SDL_MESSAGEBOX_WARNING =  0x00000020, // 
-  SDL_MESSAGEBOX_INFORMATION =  0x00000040 // 
-};
-#endif 
+enum EnumSDLMessageBoxFlags
+{
+  SDL_MESSAGEBOX_ERROR =  0x00000010, // 
+  SDL_MESSAGEBOX_WARNING =  0x00000020, // 
+  SDL_MESSAGEBOX_INFORMATION =  0x00000040 // 
+};
+#endif 
diff --git a/include/EnumSDLPacketLayout.h b/include/EnumSDLPacketLayout.h
--- a/include/EnumSDLPacketLayout.h
+++ b/include/EnumSDLPacketLayout.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,25 +14,27 @@
 // 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.
-// 
+// 
 
 // EnumSDLPacketLayout.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLPacketLayout
-#define _DEFINED_HG3D_EnumSDLPacketLayout
+#ifndef _DEFINED_HG3D_EnumSDLPacketLayout
+#define _DEFINED_HG3D_EnumSDLPacketLayout
 
 
-enum EnumSDLPacketLayout
-{
-  SDL_ARRAYORDER_NONE, // 
-  SDL_ARRAYORDER_RGB, // 
-  SDL_ARRAYORDER_RGBA, // 
-  SDL_ARRAYORDER_ARGB, // 
-  SDL_ARRAYORDER_BGR, // 
-  SDL_ARRAYORDER_BGRA, // 
-  SDL_ARRAYORDER_ABGR // 
-};
-#endif 
+enum EnumSDLPacketLayout
+{
+  SDL_PACKEDLAYOUT_NONE, // 
+  SDL_PACKEDLAYOUT_332, // 
+  SDL_PACKEDLAYOUT_4444, // 
+  SDL_PACKEDLAYOUT_1555, // 
+  SDL_PACKEDLAYOUT_5551, // 
+  SDL_PACKEDLAYOUT_565, // 
+  SDL_PACKEDLAYOUT_8888, // 
+  SDL_PACKEDLAYOUT_2101010, // 
+  SDL_PACKEDLAYOUT_1010102 // 
+};
+#endif 
diff --git a/include/EnumSDLPixelFormat.h b/include/EnumSDLPixelFormat.h
--- a/include/EnumSDLPixelFormat.h
+++ b/include/EnumSDLPixelFormat.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,27 +14,117 @@
 // 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.
-// 
+// 
 
 // EnumSDLPixelFormat.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLPixelFormat
-#define _DEFINED_HG3D_EnumSDLPixelFormat
+#ifndef _DEFINED_HG3D_EnumSDLPixelFormat
+#define _DEFINED_HG3D_EnumSDLPixelFormat
 
 
-enum EnumSDLPixelFormat
-{
-  SDL_PACKEDLAYOUT_NONE, // 
-  SDL_PACKEDLAYOUT_332, // 
-  SDL_PACKEDLAYOUT_4444, // 
-  SDL_PACKEDLAYOUT_1555, // 
-  SDL_PACKEDLAYOUT_5551, // 
-  SDL_PACKEDLAYOUT_565, // 
-  SDL_PACKEDLAYOUT_8888, // 
-  SDL_PACKEDLAYOUT_2101010, // 
-  SDL_PACKEDLAYOUT_1010102 // 
-};
-#endif 
+enum EnumSDLPixelFormat
+{
+  SDL_PIXELFORMAT_UNKNOWN, // 
+  SDL_PIXELFORMAT_INDEX1LSB = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_4321, 0,
+                               1, 0), // 
+  SDL_PIXELFORMAT_INDEX1MSB = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_1234, 0,
+                               1, 0), // 
+  SDL_PIXELFORMAT_INDEX4LSB = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_4321, 0,
+                               4, 0), // 
+  SDL_PIXELFORMAT_INDEX4MSB = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_1234, 0,
+                               4, 0), // 
+  SDL_PIXELFORMAT_INDEX8 = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX8, 0, 0, 8, 1), // 
+  SDL_PIXELFORMAT_RGB332 = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED8, SDL_PACKEDORDER_XRGB,
+                               SDL_PACKEDLAYOUT_332, 8, 1), // 
+  SDL_PIXELFORMAT_RGB444 = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
+                               SDL_PACKEDLAYOUT_4444, 12, 2), // 
+  SDL_PIXELFORMAT_RGB555 = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
+                               SDL_PACKEDLAYOUT_1555, 15, 2), // 
+  SDL_PIXELFORMAT_BGR555 = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
+                               SDL_PACKEDLAYOUT_1555, 15, 2), // 
+  SDL_PIXELFORMAT_ARGB4444 = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
+                               SDL_PACKEDLAYOUT_4444, 16, 2), // 
+  SDL_PIXELFORMAT_RGBA4444 = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA,
+                               SDL_PACKEDLAYOUT_4444, 16, 2), // 
+  SDL_PIXELFORMAT_ABGR4444 = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
+                               SDL_PACKEDLAYOUT_4444, 16, 2), // 
+  SDL_PIXELFORMAT_BGRA4444 = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA,
+                               SDL_PACKEDLAYOUT_4444, 16, 2), // 
+  SDL_PIXELFORMAT_ARGB1555 = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
+                               SDL_PACKEDLAYOUT_1555, 16, 2), // 
+  SDL_PIXELFORMAT_RGBA5551 = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA,
+                               SDL_PACKEDLAYOUT_5551, 16, 2), // 
+  SDL_PIXELFORMAT_ABGR1555 = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
+                               SDL_PACKEDLAYOUT_1555, 16, 2), // 
+  SDL_PIXELFORMAT_BGRA5551 = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA,
+                               SDL_PACKEDLAYOUT_5551, 16, 2), // 
+  SDL_PIXELFORMAT_RGB565 = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
+                               SDL_PACKEDLAYOUT_565, 16, 2), // 
+  SDL_PIXELFORMAT_BGR565 = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
+                               SDL_PACKEDLAYOUT_565, 16, 2), // 
+  SDL_PIXELFORMAT_RGB24 = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_RGB, 0,
+                               24, 3), // 
+  SDL_PIXELFORMAT_BGR24 = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_BGR, 0,
+                               24, 3), // 
+  SDL_PIXELFORMAT_RGB888 = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XRGB,
+                               SDL_PACKEDLAYOUT_8888, 24, 4), // 
+  SDL_PIXELFORMAT_RGBX8888 = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBX,
+                               SDL_PACKEDLAYOUT_8888, 24, 4), // 
+  SDL_PIXELFORMAT_BGR888 = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XBGR,
+                               SDL_PACKEDLAYOUT_8888, 24, 4), // 
+  SDL_PIXELFORMAT_BGRX8888 = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRX,
+                               SDL_PACKEDLAYOUT_8888, 24, 4), // 
+  SDL_PIXELFORMAT_ARGB8888 = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB,
+                               SDL_PACKEDLAYOUT_8888, 32, 4), // 
+  SDL_PIXELFORMAT_RGBA8888 = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBA,
+                               SDL_PACKEDLAYOUT_8888, 32, 4), // 
+  SDL_PIXELFORMAT_ABGR8888 = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ABGR,
+                               SDL_PACKEDLAYOUT_8888, 32, 4), // 
+  SDL_PIXELFORMAT_BGRA8888 = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRA,
+                               SDL_PACKEDLAYOUT_8888, 32, 4), // 
+  SDL_PIXELFORMAT_ARGB2101010 = 
+        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB,
+                               SDL_PACKEDLAYOUT_2101010, 32, 4), // 
+  SDL_PIXELFORMAT_YV12 = 
+        SDL_DEFINE_PIXELFOURCC('Y', 'V', '1', '2'), // 
+  SDL_PIXELFORMAT_IYUV = 
+        SDL_DEFINE_PIXELFOURCC('I', 'Y', 'U', 'V'), // 
+  SDL_PIXELFORMAT_YUY2 = 
+        SDL_DEFINE_PIXELFOURCC('Y', 'U', 'Y', '2'), // 
+  SDL_PIXELFORMAT_UYVY = 
+        SDL_DEFINE_PIXELFOURCC('U', 'Y', 'V', 'Y'), // 
+  SDL_PIXELFORMAT_YVYU =  // 
+};
+#endif 
diff --git a/include/EnumSDLPowerState.h b/include/EnumSDLPowerState.h
--- a/include/EnumSDLPowerState.h
+++ b/include/EnumSDLPowerState.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,23 +14,23 @@
 // 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.
-// 
+// 
 
 // EnumSDLPowerState.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLPowerState
-#define _DEFINED_HG3D_EnumSDLPowerState
+#ifndef _DEFINED_HG3D_EnumSDLPowerState
+#define _DEFINED_HG3D_EnumSDLPowerState
 
 
-enum EnumSDLPowerState
-{
-  SDL_POWERSTATE_UNKNOWN, // 
-  SDL_POWERSTATE_ON_BATTERY, // 
-  SDL_POWERSTATE_NO_BATTERY, // 
-  SDL_POWERSTATE_CHARGING, // 
-  SDL_POWERSTATE_CHARGED // 
-};
-#endif 
+enum EnumSDLPowerState
+{
+  SDL_POWERSTATE_UNKNOWN, // 
+  SDL_POWERSTATE_ON_BATTERY, // 
+  SDL_POWERSTATE_NO_BATTERY, // 
+  SDL_POWERSTATE_CHARGING, // 
+  SDL_POWERSTATE_CHARGED // 
+};
+#endif 
diff --git a/include/EnumSDLRendererFlags.h b/include/EnumSDLRendererFlags.h
--- a/include/EnumSDLRendererFlags.h
+++ b/include/EnumSDLRendererFlags.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,22 +14,22 @@
 // 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.
-// 
+// 
 
 // EnumSDLRendererFlags.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLRendererFlags
-#define _DEFINED_HG3D_EnumSDLRendererFlags
+#ifndef _DEFINED_HG3D_EnumSDLRendererFlags
+#define _DEFINED_HG3D_EnumSDLRendererFlags
 
 
-enum EnumSDLRendererFlags
-{
-  SDL_RENDERER_SOFTWARE =  0x00000001, // 
-  SDL_RENDERER_ACCELERATED =  0x00000002, // 
-  SDL_RENDERER_PRESENTVSYNC =  0x00000004, // 
-  SDL_RENDERER_TARGETTEXTURE =  0x00000008 // 
-};
-#endif 
+enum EnumSDLRendererFlags
+{
+  SDL_RENDERER_SOFTWARE =  0x00000001, // 
+  SDL_RENDERER_ACCELERATED =  0x00000002, // 
+  SDL_RENDERER_PRESENTVSYNC =  0x00000004, // 
+  SDL_RENDERER_TARGETTEXTURE =  0x00000008 // 
+};
+#endif 
diff --git a/include/EnumSDLRendererFlip.h b/include/EnumSDLRendererFlip.h
--- a/include/EnumSDLRendererFlip.h
+++ b/include/EnumSDLRendererFlip.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,21 +14,21 @@
 // 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.
-// 
+// 
 
 // EnumSDLRendererFlip.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLRendererFlip
-#define _DEFINED_HG3D_EnumSDLRendererFlip
+#ifndef _DEFINED_HG3D_EnumSDLRendererFlip
+#define _DEFINED_HG3D_EnumSDLRendererFlip
 
 
-enum EnumSDLRendererFlip
-{
-  SDL_FLIP_NONE =  0x00000000, // 
-  SDL_FLIP_HORIZONTAL =  0x00000001, // 
-  SDL_FLIP_VERTICAL =  0x00000002 // 
-};
-#endif 
+enum EnumSDLRendererFlip
+{
+  SDL_FLIP_NONE =  0x00000000, // 
+  SDL_FLIP_HORIZONTAL =  0x00000001, // 
+  SDL_FLIP_VERTICAL =  0x00000002 // 
+};
+#endif 
diff --git a/include/EnumSDLScancode.h b/include/EnumSDLScancode.h
--- a/include/EnumSDLScancode.h
+++ b/include/EnumSDLScancode.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,260 +14,260 @@
 // 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.
-// 
+// 
 
 // EnumSDLScancode.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLScancode
-#define _DEFINED_HG3D_EnumSDLScancode
+#ifndef _DEFINED_HG3D_EnumSDLScancode
+#define _DEFINED_HG3D_EnumSDLScancode
 
 
-enum EnumSDLScancode
-{
-  SDL_SCANCODE_UNKNOWN =  0, // 
-  SDL_SCANCODE_A =  4, // 
-  SDL_SCANCODE_B =  5, // 
-  SDL_SCANCODE_C =  6, // 
-  SDL_SCANCODE_D =  7, // 
-  SDL_SCANCODE_E =  8, // 
-  SDL_SCANCODE_F =  9, // 
-  SDL_SCANCODE_G =  10, // 
-  SDL_SCANCODE_H =  11, // 
-  SDL_SCANCODE_I =  12, // 
-  SDL_SCANCODE_J =  13, // 
-  SDL_SCANCODE_K =  14, // 
-  SDL_SCANCODE_L =  15, // 
-  SDL_SCANCODE_M =  16, // 
-  SDL_SCANCODE_N =  17, // 
-  SDL_SCANCODE_O =  18, // 
-  SDL_SCANCODE_P =  19, // 
-  SDL_SCANCODE_Q =  20, // 
-  SDL_SCANCODE_R =  21, // 
-  SDL_SCANCODE_S =  22, // 
-  SDL_SCANCODE_T =  23, // 
-  SDL_SCANCODE_U =  24, // 
-  SDL_SCANCODE_V =  25, // 
-  SDL_SCANCODE_W =  26, // 
-  SDL_SCANCODE_X =  27, // 
-  SDL_SCANCODE_Y =  28, // 
-  SDL_SCANCODE_Z =  29, // 
-  SDL_SCANCODE_1 =  30, // 
-  SDL_SCANCODE_2 =  31, // 
-  SDL_SCANCODE_3 =  32, // 
-  SDL_SCANCODE_4 =  33, // 
-  SDL_SCANCODE_5 =  34, // 
-  SDL_SCANCODE_6 =  35, // 
-  SDL_SCANCODE_7 =  36, // 
-  SDL_SCANCODE_8 =  37, // 
-  SDL_SCANCODE_9 =  38, // 
-  SDL_SCANCODE_0 =  39, // 
-  SDL_SCANCODE_RETURN =  40, // 
-  SDL_SCANCODE_ESCAPE =  41, // 
-  SDL_SCANCODE_BACKSPACE =  42, // 
-  SDL_SCANCODE_TAB =  43, // 
-  SDL_SCANCODE_SPACE =  44, // 
-  SDL_SCANCODE_MINUS =  45, // 
-  SDL_SCANCODE_EQUALS =  46, // 
-  SDL_SCANCODE_LEFTBRACKET =  47, // 
-  SDL_SCANCODE_RIGHTBRACKET =  48, // 
-  SDL_SCANCODE_BACKSLASH =  49, // 
-  SDL_SCANCODE_NONUSHASH =  50, // 
-  SDL_SCANCODE_SEMICOLON =  51, // 
-  SDL_SCANCODE_APOSTROPHE =  52, // 
-  SDL_SCANCODE_GRAVE =  53, // 
-  SDL_SCANCODE_COMMA =  54, // 
-  SDL_SCANCODE_PERIOD =  55, // 
-  SDL_SCANCODE_SLASH =  56, // 
-  SDL_SCANCODE_CAPSLOCK =  57, // 
-  SDL_SCANCODE_F1 =  58, // 
-  SDL_SCANCODE_F2 =  59, // 
-  SDL_SCANCODE_F3 =  60, // 
-  SDL_SCANCODE_F4 =  61, // 
-  SDL_SCANCODE_F5 =  62, // 
-  SDL_SCANCODE_F6 =  63, // 
-  SDL_SCANCODE_F7 =  64, // 
-  SDL_SCANCODE_F8 =  65, // 
-  SDL_SCANCODE_F9 =  66, // 
-  SDL_SCANCODE_F10 =  67, // 
-  SDL_SCANCODE_F11 =  68, // 
-  SDL_SCANCODE_F12 =  69, // 
-  SDL_SCANCODE_PRINTSCREEN =  70, // 
-  SDL_SCANCODE_SCROLLLOCK =  71, // 
-  SDL_SCANCODE_PAUSE =  72, // 
-  SDL_SCANCODE_INSERT =  73, // 
-  SDL_SCANCODE_HOME =  74, // 
-  SDL_SCANCODE_PAGEUP =  75, // 
-  SDL_SCANCODE_DELETE =  76, // 
-  SDL_SCANCODE_END =  77, // 
-  SDL_SCANCODE_PAGEDOWN =  78, // 
-  SDL_SCANCODE_RIGHT =  79, // 
-  SDL_SCANCODE_LEFT =  80, // 
-  SDL_SCANCODE_DOWN =  81, // 
-  SDL_SCANCODE_UP =  82, // 
-  SDL_SCANCODE_NUMLOCKCLEAR =  83, // 
-  SDL_SCANCODE_KP_DIVIDE =  84, // 
-  SDL_SCANCODE_KP_MULTIPLY =  85, // 
-  SDL_SCANCODE_KP_MINUS =  86, // 
-  SDL_SCANCODE_KP_PLUS =  87, // 
-  SDL_SCANCODE_KP_ENTER =  88, // 
-  SDL_SCANCODE_KP_1 =  89, // 
-  SDL_SCANCODE_KP_2 =  90, // 
-  SDL_SCANCODE_KP_3 =  91, // 
-  SDL_SCANCODE_KP_4 =  92, // 
-  SDL_SCANCODE_KP_5 =  93, // 
-  SDL_SCANCODE_KP_6 =  94, // 
-  SDL_SCANCODE_KP_7 =  95, // 
-  SDL_SCANCODE_KP_8 =  96, // 
-  SDL_SCANCODE_KP_9 =  97, // 
-  SDL_SCANCODE_KP_0 =  98, // 
-  SDL_SCANCODE_KP_PERIOD =  99, // 
-  SDL_SCANCODE_NONUSBACKSLASH =  100, // 
-  SDL_SCANCODE_APPLICATION =  101, // 
-  SDL_SCANCODE_POWER =  102, // 
-  SDL_SCANCODE_KP_EQUALS =  103, // 
-  SDL_SCANCODE_F13 =  104, // 
-  SDL_SCANCODE_F14 =  105, // 
-  SDL_SCANCODE_F15 =  106, // 
-  SDL_SCANCODE_F16 =  107, // 
-  SDL_SCANCODE_F17 =  108, // 
-  SDL_SCANCODE_F18 =  109, // 
-  SDL_SCANCODE_F19 =  110, // 
-  SDL_SCANCODE_F20 =  111, // 
-  SDL_SCANCODE_F21 =  112, // 
-  SDL_SCANCODE_F22 =  113, // 
-  SDL_SCANCODE_F23 =  114, // 
-  SDL_SCANCODE_F24 =  115, // 
-  SDL_SCANCODE_EXECUTE =  116, // 
-  SDL_SCANCODE_HELP =  117, // 
-  SDL_SCANCODE_MENU =  118, // 
-  SDL_SCANCODE_SELECT =  119, // 
-  SDL_SCANCODE_STOP =  120, // 
-  SDL_SCANCODE_AGAIN =  121, // 
-  SDL_SCANCODE_UNDO =  122, // 
-  SDL_SCANCODE_CUT =  123, // 
-  SDL_SCANCODE_COPY =  124, // 
-  SDL_SCANCODE_PASTE =  125, // 
-  SDL_SCANCODE_FIND =  126, // 
-  SDL_SCANCODE_MUTE =  127, // 
-  SDL_SCANCODE_VOLUMEUP =  128, // 
-  SDL_SCANCODE_VOLUMEDOWN =  129, // 
-  SDL_SCANCODE_KP_COMMA =  133, // 
-  SDL_SCANCODE_KP_EQUALSAS400 =  134, // 
-  SDL_SCANCODE_INTERNATIONAL1 =  135, // 
-  SDL_SCANCODE_INTERNATIONAL2 =  136, // 
-  SDL_SCANCODE_INTERNATIONAL3 =  137, // 
-  SDL_SCANCODE_INTERNATIONAL4 =  138, // 
-  SDL_SCANCODE_INTERNATIONAL5 =  139, // 
-  SDL_SCANCODE_INTERNATIONAL6 =  140, // 
-  SDL_SCANCODE_INTERNATIONAL7 =  141, // 
-  SDL_SCANCODE_INTERNATIONAL8 =  142, // 
-  SDL_SCANCODE_INTERNATIONAL9 =  143, // 
-  SDL_SCANCODE_LANG1 =  144, // 
-  SDL_SCANCODE_LANG2 =  145, // 
-  SDL_SCANCODE_LANG3 =  146, // 
-  SDL_SCANCODE_LANG4 =  147, // 
-  SDL_SCANCODE_LANG5 =  148, // 
-  SDL_SCANCODE_LANG6 =  149, // 
-  SDL_SCANCODE_LANG7 =  150, // 
-  SDL_SCANCODE_LANG8 =  151, // 
-  SDL_SCANCODE_LANG9 =  152, // 
-  SDL_SCANCODE_ALTERASE =  153, // 
-  SDL_SCANCODE_SYSREQ =  154, // 
-  SDL_SCANCODE_CANCEL =  155, // 
-  SDL_SCANCODE_CLEAR =  156, // 
-  SDL_SCANCODE_PRIOR =  157, // 
-  SDL_SCANCODE_RETURN2 =  158, // 
-  SDL_SCANCODE_SEPARATOR =  159, // 
-  SDL_SCANCODE_OUT =  160, // 
-  SDL_SCANCODE_OPER =  161, // 
-  SDL_SCANCODE_CLEARAGAIN =  162, // 
-  SDL_SCANCODE_CRSEL =  163, // 
-  SDL_SCANCODE_EXSEL =  164, // 
-  SDL_SCANCODE_KP_00 =  176, // 
-  SDL_SCANCODE_KP_000 =  177, // 
-  SDL_SCANCODE_THOUSANDSSEPARATOR =  178, // 
-  SDL_SCANCODE_DECIMALSEPARATOR =  179, // 
-  SDL_SCANCODE_CURRENCYUNIT =  180, // 
-  SDL_SCANCODE_CURRENCYSUBUNIT =  181, // 
-  SDL_SCANCODE_KP_LEFTPAREN =  182, // 
-  SDL_SCANCODE_KP_RIGHTPAREN =  183, // 
-  SDL_SCANCODE_KP_LEFTBRACE =  184, // 
-  SDL_SCANCODE_KP_RIGHTBRACE =  185, // 
-  SDL_SCANCODE_KP_TAB =  186, // 
-  SDL_SCANCODE_KP_BACKSPACE =  187, // 
-  SDL_SCANCODE_KP_A =  188, // 
-  SDL_SCANCODE_KP_B =  189, // 
-  SDL_SCANCODE_KP_C =  190, // 
-  SDL_SCANCODE_KP_D =  191, // 
-  SDL_SCANCODE_KP_E =  192, // 
-  SDL_SCANCODE_KP_F =  193, // 
-  SDL_SCANCODE_KP_XOR =  194, // 
-  SDL_SCANCODE_KP_POWER =  195, // 
-  SDL_SCANCODE_KP_PERCENT =  196, // 
-  SDL_SCANCODE_KP_LESS =  197, // 
-  SDL_SCANCODE_KP_GREATER =  198, // 
-  SDL_SCANCODE_KP_AMPERSAND =  199, // 
-  SDL_SCANCODE_KP_DBLAMPERSAND =  200, // 
-  SDL_SCANCODE_KP_VERTICALBAR =  201, // 
-  SDL_SCANCODE_KP_DBLVERTICALBAR =  202, // 
-  SDL_SCANCODE_KP_COLON =  203, // 
-  SDL_SCANCODE_KP_HASH =  204, // 
-  SDL_SCANCODE_KP_SPACE =  205, // 
-  SDL_SCANCODE_KP_AT =  206, // 
-  SDL_SCANCODE_KP_EXCLAM =  207, // 
-  SDL_SCANCODE_KP_MEMSTORE =  208, // 
-  SDL_SCANCODE_KP_MEMRECALL =  209, // 
-  SDL_SCANCODE_KP_MEMCLEAR =  210, // 
-  SDL_SCANCODE_KP_MEMADD =  211, // 
-  SDL_SCANCODE_KP_MEMSUBTRACT =  212, // 
-  SDL_SCANCODE_KP_MEMMULTIPLY =  213, // 
-  SDL_SCANCODE_KP_MEMDIVIDE =  214, // 
-  SDL_SCANCODE_KP_PLUSMINUS =  215, // 
-  SDL_SCANCODE_KP_CLEAR =  216, // 
-  SDL_SCANCODE_KP_CLEARENTRY =  217, // 
-  SDL_SCANCODE_KP_BINARY =  218, // 
-  SDL_SCANCODE_KP_OCTAL =  219, // 
-  SDL_SCANCODE_KP_DECIMAL =  220, // 
-  SDL_SCANCODE_KP_HEXADECIMAL =  221, // 
-  SDL_SCANCODE_LCTRL =  224, // 
-  SDL_SCANCODE_LSHIFT =  225, // 
-  SDL_SCANCODE_LALT =  226, // 
-  SDL_SCANCODE_LGUI =  227, // 
-  SDL_SCANCODE_RCTRL =  228, // 
-  SDL_SCANCODE_RSHIFT =  229, // 
-  SDL_SCANCODE_RALT =  230, // 
-  SDL_SCANCODE_RGUI =  231, // 
-  SDL_SCANCODE_MODE =  257, // 
-  SDL_SCANCODE_AUDIONEXT =  258, // 
-  SDL_SCANCODE_AUDIOPREV =  259, // 
-  SDL_SCANCODE_AUDIOSTOP =  260, // 
-  SDL_SCANCODE_AUDIOPLAY =  261, // 
-  SDL_SCANCODE_AUDIOMUTE =  262, // 
-  SDL_SCANCODE_MEDIASELECT =  263, // 
-  SDL_SCANCODE_WWW =  264, // 
-  SDL_SCANCODE_MAIL =  265, // 
-  SDL_SCANCODE_CALCULATOR =  266, // 
-  SDL_SCANCODE_COMPUTER =  267, // 
-  SDL_SCANCODE_AC_SEARCH =  268, // 
-  SDL_SCANCODE_AC_HOME =  269, // 
-  SDL_SCANCODE_AC_BACK =  270, // 
-  SDL_SCANCODE_AC_FORWARD =  271, // 
-  SDL_SCANCODE_AC_STOP =  272, // 
-  SDL_SCANCODE_AC_REFRESH =  273, // 
-  SDL_SCANCODE_AC_BOOKMARKS =  274, // 
-  SDL_SCANCODE_BRIGHTNESSDOWN =  275, // 
-  SDL_SCANCODE_BRIGHTNESSUP =  276, // 
-  SDL_SCANCODE_DISPLAYSWITCH =  277, // 
-  SDL_SCANCODE_KBDILLUMTOGGLE =  278, // 
-  SDL_SCANCODE_KBDILLUMDOWN =  279, // 
-  SDL_SCANCODE_KBDILLUMUP =  280, // 
-  SDL_SCANCODE_EJECT =  281, // 
-  SDL_SCANCODE_SLEEP =  282, // 
-  SDL_SCANCODE_APP1 =  283, // 
-  SDL_SCANCODE_APP2 =  284, // 
-  SDL_NUM_SCANCODES =  512 // 
-};
-#endif 
+enum EnumSDLScancode
+{
+  SDL_SCANCODE_UNKNOWN =  0, // 
+  SDL_SCANCODE_A =  4, // 
+  SDL_SCANCODE_B =  5, // 
+  SDL_SCANCODE_C =  6, // 
+  SDL_SCANCODE_D =  7, // 
+  SDL_SCANCODE_E =  8, // 
+  SDL_SCANCODE_F =  9, // 
+  SDL_SCANCODE_G =  10, // 
+  SDL_SCANCODE_H =  11, // 
+  SDL_SCANCODE_I =  12, // 
+  SDL_SCANCODE_J =  13, // 
+  SDL_SCANCODE_K =  14, // 
+  SDL_SCANCODE_L =  15, // 
+  SDL_SCANCODE_M =  16, // 
+  SDL_SCANCODE_N =  17, // 
+  SDL_SCANCODE_O =  18, // 
+  SDL_SCANCODE_P =  19, // 
+  SDL_SCANCODE_Q =  20, // 
+  SDL_SCANCODE_R =  21, // 
+  SDL_SCANCODE_S =  22, // 
+  SDL_SCANCODE_T =  23, // 
+  SDL_SCANCODE_U =  24, // 
+  SDL_SCANCODE_V =  25, // 
+  SDL_SCANCODE_W =  26, // 
+  SDL_SCANCODE_X =  27, // 
+  SDL_SCANCODE_Y =  28, // 
+  SDL_SCANCODE_Z =  29, // 
+  SDL_SCANCODE_1 =  30, // 
+  SDL_SCANCODE_2 =  31, // 
+  SDL_SCANCODE_3 =  32, // 
+  SDL_SCANCODE_4 =  33, // 
+  SDL_SCANCODE_5 =  34, // 
+  SDL_SCANCODE_6 =  35, // 
+  SDL_SCANCODE_7 =  36, // 
+  SDL_SCANCODE_8 =  37, // 
+  SDL_SCANCODE_9 =  38, // 
+  SDL_SCANCODE_0 =  39, // 
+  SDL_SCANCODE_RETURN =  40, // 
+  SDL_SCANCODE_ESCAPE =  41, // 
+  SDL_SCANCODE_BACKSPACE =  42, // 
+  SDL_SCANCODE_TAB =  43, // 
+  SDL_SCANCODE_SPACE =  44, // 
+  SDL_SCANCODE_MINUS =  45, // 
+  SDL_SCANCODE_EQUALS =  46, // 
+  SDL_SCANCODE_LEFTBRACKET =  47, // 
+  SDL_SCANCODE_RIGHTBRACKET =  48, // 
+  SDL_SCANCODE_BACKSLASH =  49, // 
+  SDL_SCANCODE_NONUSHASH =  50, // 
+  SDL_SCANCODE_SEMICOLON =  51, // 
+  SDL_SCANCODE_APOSTROPHE =  52, // 
+  SDL_SCANCODE_GRAVE =  53, // 
+  SDL_SCANCODE_COMMA =  54, // 
+  SDL_SCANCODE_PERIOD =  55, // 
+  SDL_SCANCODE_SLASH =  56, // 
+  SDL_SCANCODE_CAPSLOCK =  57, // 
+  SDL_SCANCODE_F1 =  58, // 
+  SDL_SCANCODE_F2 =  59, // 
+  SDL_SCANCODE_F3 =  60, // 
+  SDL_SCANCODE_F4 =  61, // 
+  SDL_SCANCODE_F5 =  62, // 
+  SDL_SCANCODE_F6 =  63, // 
+  SDL_SCANCODE_F7 =  64, // 
+  SDL_SCANCODE_F8 =  65, // 
+  SDL_SCANCODE_F9 =  66, // 
+  SDL_SCANCODE_F10 =  67, // 
+  SDL_SCANCODE_F11 =  68, // 
+  SDL_SCANCODE_F12 =  69, // 
+  SDL_SCANCODE_PRINTSCREEN =  70, // 
+  SDL_SCANCODE_SCROLLLOCK =  71, // 
+  SDL_SCANCODE_PAUSE =  72, // 
+  SDL_SCANCODE_INSERT =  73, // 
+  SDL_SCANCODE_HOME =  74, // 
+  SDL_SCANCODE_PAGEUP =  75, // 
+  SDL_SCANCODE_DELETE =  76, // 
+  SDL_SCANCODE_END =  77, // 
+  SDL_SCANCODE_PAGEDOWN =  78, // 
+  SDL_SCANCODE_RIGHT =  79, // 
+  SDL_SCANCODE_LEFT =  80, // 
+  SDL_SCANCODE_DOWN =  81, // 
+  SDL_SCANCODE_UP =  82, // 
+  SDL_SCANCODE_NUMLOCKCLEAR =  83, // 
+  SDL_SCANCODE_KP_DIVIDE =  84, // 
+  SDL_SCANCODE_KP_MULTIPLY =  85, // 
+  SDL_SCANCODE_KP_MINUS =  86, // 
+  SDL_SCANCODE_KP_PLUS =  87, // 
+  SDL_SCANCODE_KP_ENTER =  88, // 
+  SDL_SCANCODE_KP_1 =  89, // 
+  SDL_SCANCODE_KP_2 =  90, // 
+  SDL_SCANCODE_KP_3 =  91, // 
+  SDL_SCANCODE_KP_4 =  92, // 
+  SDL_SCANCODE_KP_5 =  93, // 
+  SDL_SCANCODE_KP_6 =  94, // 
+  SDL_SCANCODE_KP_7 =  95, // 
+  SDL_SCANCODE_KP_8 =  96, // 
+  SDL_SCANCODE_KP_9 =  97, // 
+  SDL_SCANCODE_KP_0 =  98, // 
+  SDL_SCANCODE_KP_PERIOD =  99, // 
+  SDL_SCANCODE_NONUSBACKSLASH =  100, // 
+  SDL_SCANCODE_APPLICATION =  101, // 
+  SDL_SCANCODE_POWER =  102, // 
+  SDL_SCANCODE_KP_EQUALS =  103, // 
+  SDL_SCANCODE_F13 =  104, // 
+  SDL_SCANCODE_F14 =  105, // 
+  SDL_SCANCODE_F15 =  106, // 
+  SDL_SCANCODE_F16 =  107, // 
+  SDL_SCANCODE_F17 =  108, // 
+  SDL_SCANCODE_F18 =  109, // 
+  SDL_SCANCODE_F19 =  110, // 
+  SDL_SCANCODE_F20 =  111, // 
+  SDL_SCANCODE_F21 =  112, // 
+  SDL_SCANCODE_F22 =  113, // 
+  SDL_SCANCODE_F23 =  114, // 
+  SDL_SCANCODE_F24 =  115, // 
+  SDL_SCANCODE_EXECUTE =  116, // 
+  SDL_SCANCODE_HELP =  117, // 
+  SDL_SCANCODE_MENU =  118, // 
+  SDL_SCANCODE_SELECT =  119, // 
+  SDL_SCANCODE_STOP =  120, // 
+  SDL_SCANCODE_AGAIN =  121, // 
+  SDL_SCANCODE_UNDO =  122, // 
+  SDL_SCANCODE_CUT =  123, // 
+  SDL_SCANCODE_COPY =  124, // 
+  SDL_SCANCODE_PASTE =  125, // 
+  SDL_SCANCODE_FIND =  126, // 
+  SDL_SCANCODE_MUTE =  127, // 
+  SDL_SCANCODE_VOLUMEUP =  128, // 
+  SDL_SCANCODE_VOLUMEDOWN =  129, // 
+  SDL_SCANCODE_KP_COMMA =  133, // 
+  SDL_SCANCODE_KP_EQUALSAS400 =  134, // 
+  SDL_SCANCODE_INTERNATIONAL1 =  135, // 
+  SDL_SCANCODE_INTERNATIONAL2 =  136, // 
+  SDL_SCANCODE_INTERNATIONAL3 =  137, // 
+  SDL_SCANCODE_INTERNATIONAL4 =  138, // 
+  SDL_SCANCODE_INTERNATIONAL5 =  139, // 
+  SDL_SCANCODE_INTERNATIONAL6 =  140, // 
+  SDL_SCANCODE_INTERNATIONAL7 =  141, // 
+  SDL_SCANCODE_INTERNATIONAL8 =  142, // 
+  SDL_SCANCODE_INTERNATIONAL9 =  143, // 
+  SDL_SCANCODE_LANG1 =  144, // 
+  SDL_SCANCODE_LANG2 =  145, // 
+  SDL_SCANCODE_LANG3 =  146, // 
+  SDL_SCANCODE_LANG4 =  147, // 
+  SDL_SCANCODE_LANG5 =  148, // 
+  SDL_SCANCODE_LANG6 =  149, // 
+  SDL_SCANCODE_LANG7 =  150, // 
+  SDL_SCANCODE_LANG8 =  151, // 
+  SDL_SCANCODE_LANG9 =  152, // 
+  SDL_SCANCODE_ALTERASE =  153, // 
+  SDL_SCANCODE_SYSREQ =  154, // 
+  SDL_SCANCODE_CANCEL =  155, // 
+  SDL_SCANCODE_CLEAR =  156, // 
+  SDL_SCANCODE_PRIOR =  157, // 
+  SDL_SCANCODE_RETURN2 =  158, // 
+  SDL_SCANCODE_SEPARATOR =  159, // 
+  SDL_SCANCODE_OUT =  160, // 
+  SDL_SCANCODE_OPER =  161, // 
+  SDL_SCANCODE_CLEARAGAIN =  162, // 
+  SDL_SCANCODE_CRSEL =  163, // 
+  SDL_SCANCODE_EXSEL =  164, // 
+  SDL_SCANCODE_KP_00 =  176, // 
+  SDL_SCANCODE_KP_000 =  177, // 
+  SDL_SCANCODE_THOUSANDSSEPARATOR =  178, // 
+  SDL_SCANCODE_DECIMALSEPARATOR =  179, // 
+  SDL_SCANCODE_CURRENCYUNIT =  180, // 
+  SDL_SCANCODE_CURRENCYSUBUNIT =  181, // 
+  SDL_SCANCODE_KP_LEFTPAREN =  182, // 
+  SDL_SCANCODE_KP_RIGHTPAREN =  183, // 
+  SDL_SCANCODE_KP_LEFTBRACE =  184, // 
+  SDL_SCANCODE_KP_RIGHTBRACE =  185, // 
+  SDL_SCANCODE_KP_TAB =  186, // 
+  SDL_SCANCODE_KP_BACKSPACE =  187, // 
+  SDL_SCANCODE_KP_A =  188, // 
+  SDL_SCANCODE_KP_B =  189, // 
+  SDL_SCANCODE_KP_C =  190, // 
+  SDL_SCANCODE_KP_D =  191, // 
+  SDL_SCANCODE_KP_E =  192, // 
+  SDL_SCANCODE_KP_F =  193, // 
+  SDL_SCANCODE_KP_XOR =  194, // 
+  SDL_SCANCODE_KP_POWER =  195, // 
+  SDL_SCANCODE_KP_PERCENT =  196, // 
+  SDL_SCANCODE_KP_LESS =  197, // 
+  SDL_SCANCODE_KP_GREATER =  198, // 
+  SDL_SCANCODE_KP_AMPERSAND =  199, // 
+  SDL_SCANCODE_KP_DBLAMPERSAND =  200, // 
+  SDL_SCANCODE_KP_VERTICALBAR =  201, // 
+  SDL_SCANCODE_KP_DBLVERTICALBAR =  202, // 
+  SDL_SCANCODE_KP_COLON =  203, // 
+  SDL_SCANCODE_KP_HASH =  204, // 
+  SDL_SCANCODE_KP_SPACE =  205, // 
+  SDL_SCANCODE_KP_AT =  206, // 
+  SDL_SCANCODE_KP_EXCLAM =  207, // 
+  SDL_SCANCODE_KP_MEMSTORE =  208, // 
+  SDL_SCANCODE_KP_MEMRECALL =  209, // 
+  SDL_SCANCODE_KP_MEMCLEAR =  210, // 
+  SDL_SCANCODE_KP_MEMADD =  211, // 
+  SDL_SCANCODE_KP_MEMSUBTRACT =  212, // 
+  SDL_SCANCODE_KP_MEMMULTIPLY =  213, // 
+  SDL_SCANCODE_KP_MEMDIVIDE =  214, // 
+  SDL_SCANCODE_KP_PLUSMINUS =  215, // 
+  SDL_SCANCODE_KP_CLEAR =  216, // 
+  SDL_SCANCODE_KP_CLEARENTRY =  217, // 
+  SDL_SCANCODE_KP_BINARY =  218, // 
+  SDL_SCANCODE_KP_OCTAL =  219, // 
+  SDL_SCANCODE_KP_DECIMAL =  220, // 
+  SDL_SCANCODE_KP_HEXADECIMAL =  221, // 
+  SDL_SCANCODE_LCTRL =  224, // 
+  SDL_SCANCODE_LSHIFT =  225, // 
+  SDL_SCANCODE_LALT =  226, // 
+  SDL_SCANCODE_LGUI =  227, // 
+  SDL_SCANCODE_RCTRL =  228, // 
+  SDL_SCANCODE_RSHIFT =  229, // 
+  SDL_SCANCODE_RALT =  230, // 
+  SDL_SCANCODE_RGUI =  231, // 
+  SDL_SCANCODE_MODE =  257, // 
+  SDL_SCANCODE_AUDIONEXT =  258, // 
+  SDL_SCANCODE_AUDIOPREV =  259, // 
+  SDL_SCANCODE_AUDIOSTOP =  260, // 
+  SDL_SCANCODE_AUDIOPLAY =  261, // 
+  SDL_SCANCODE_AUDIOMUTE =  262, // 
+  SDL_SCANCODE_MEDIASELECT =  263, // 
+  SDL_SCANCODE_WWW =  264, // 
+  SDL_SCANCODE_MAIL =  265, // 
+  SDL_SCANCODE_CALCULATOR =  266, // 
+  SDL_SCANCODE_COMPUTER =  267, // 
+  SDL_SCANCODE_AC_SEARCH =  268, // 
+  SDL_SCANCODE_AC_HOME =  269, // 
+  SDL_SCANCODE_AC_BACK =  270, // 
+  SDL_SCANCODE_AC_FORWARD =  271, // 
+  SDL_SCANCODE_AC_STOP =  272, // 
+  SDL_SCANCODE_AC_REFRESH =  273, // 
+  SDL_SCANCODE_AC_BOOKMARKS =  274, // 
+  SDL_SCANCODE_BRIGHTNESSDOWN =  275, // 
+  SDL_SCANCODE_BRIGHTNESSUP =  276, // 
+  SDL_SCANCODE_DISPLAYSWITCH =  277, // 
+  SDL_SCANCODE_KBDILLUMTOGGLE =  278, // 
+  SDL_SCANCODE_KBDILLUMDOWN =  279, // 
+  SDL_SCANCODE_KBDILLUMUP =  280, // 
+  SDL_SCANCODE_EJECT =  281, // 
+  SDL_SCANCODE_SLEEP =  282, // 
+  SDL_SCANCODE_APP1 =  283, // 
+  SDL_SCANCODE_APP2 =  284, // 
+  SDL_NUM_SCANCODES =  512 // 
+};
+#endif 
diff --git a/include/EnumSDLSysWMType.h b/include/EnumSDLSysWMType.h
--- a/include/EnumSDLSysWMType.h
+++ b/include/EnumSDLSysWMType.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,24 +14,24 @@
 // 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.
-// 
+// 
 
 // EnumSDLSysWMType.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLSysWMType
-#define _DEFINED_HG3D_EnumSDLSysWMType
+#ifndef _DEFINED_HG3D_EnumSDLSysWMType
+#define _DEFINED_HG3D_EnumSDLSysWMType
 
 
-enum EnumSDLSysWMType
-{
-  SDL_SYSWM_UNKNOWN, // 
-  SDL_SYSWM_WINDOWS, // 
-  SDL_SYSWM_X11, // 
-  SDL_SYSWM_DIRECTFB, // 
-  SDL_SYSWM_COCOA, // 
-  SDL_SYSWM_UIKIT // 
-};
-#endif 
+enum EnumSDLSysWMType
+{
+  SDL_SYSWM_UNKNOWN, // 
+  SDL_SYSWM_WINDOWS, // 
+  SDL_SYSWM_X11, // 
+  SDL_SYSWM_DIRECTFB, // 
+  SDL_SYSWM_COCOA, // 
+  SDL_SYSWM_UIKIT // 
+};
+#endif 
diff --git a/include/EnumSDLSystemCursor.h b/include/EnumSDLSystemCursor.h
--- a/include/EnumSDLSystemCursor.h
+++ b/include/EnumSDLSystemCursor.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,31 +14,31 @@
 // 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.
-// 
+// 
 
 // EnumSDLSystemCursor.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLSystemCursor
-#define _DEFINED_HG3D_EnumSDLSystemCursor
+#ifndef _DEFINED_HG3D_EnumSDLSystemCursor
+#define _DEFINED_HG3D_EnumSDLSystemCursor
 
 
-enum EnumSDLSystemCursor
-{
-  SDL_SYSTEM_CURSOR_ARROW, // 
-  SDL_SYSTEM_CURSOR_IBEAM, // 
-  SDL_SYSTEM_CURSOR_WAIT, // 
-  SDL_SYSTEM_CURSOR_CROSSHAIR, // 
-  SDL_SYSTEM_CURSOR_WAITARROW, // 
-  SDL_SYSTEM_CURSOR_SIZENWSE, // 
-  SDL_SYSTEM_CURSOR_SIZENESW, // 
-  SDL_SYSTEM_CURSOR_SIZEWE, // 
-  SDL_SYSTEM_CURSOR_SIZENS, // 
-  SDL_SYSTEM_CURSOR_SIZEALL, // 
-  SDL_SYSTEM_CURSOR_NO, // 
-  SDL_SYSTEM_CURSOR_HAND, // 
-  SDL_NUM_SYSTEM_CURSORS // 
-};
-#endif 
+enum EnumSDLSystemCursor
+{
+  SDL_SYSTEM_CURSOR_ARROW, // 
+  SDL_SYSTEM_CURSOR_IBEAM, // 
+  SDL_SYSTEM_CURSOR_WAIT, // 
+  SDL_SYSTEM_CURSOR_CROSSHAIR, // 
+  SDL_SYSTEM_CURSOR_WAITARROW, // 
+  SDL_SYSTEM_CURSOR_SIZENWSE, // 
+  SDL_SYSTEM_CURSOR_SIZENESW, // 
+  SDL_SYSTEM_CURSOR_SIZEWE, // 
+  SDL_SYSTEM_CURSOR_SIZENS, // 
+  SDL_SYSTEM_CURSOR_SIZEALL, // 
+  SDL_SYSTEM_CURSOR_NO, // 
+  SDL_SYSTEM_CURSOR_HAND, // 
+  SDL_NUM_SYSTEM_CURSORS // 
+};
+#endif 
diff --git a/include/EnumSDLTextureAccess.h b/include/EnumSDLTextureAccess.h
--- a/include/EnumSDLTextureAccess.h
+++ b/include/EnumSDLTextureAccess.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,21 +14,21 @@
 // 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.
-// 
+// 
 
 // EnumSDLTextureAccess.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLTextureAccess
-#define _DEFINED_HG3D_EnumSDLTextureAccess
+#ifndef _DEFINED_HG3D_EnumSDLTextureAccess
+#define _DEFINED_HG3D_EnumSDLTextureAccess
 
 
-enum EnumSDLTextureAccess
-{
-  SDL_TEXTUREACCESS_STATIC, // 
-  SDL_TEXTUREACCESS_STREAMING, // 
-  SDL_TEXTUREACCESS_TARGET // 
-};
-#endif 
+enum EnumSDLTextureAccess
+{
+  SDL_TEXTUREACCESS_STATIC, // 
+  SDL_TEXTUREACCESS_STREAMING, // 
+  SDL_TEXTUREACCESS_TARGET // 
+};
+#endif 
diff --git a/include/EnumSDLTextureModulate.h b/include/EnumSDLTextureModulate.h
--- a/include/EnumSDLTextureModulate.h
+++ b/include/EnumSDLTextureModulate.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,21 +14,21 @@
 // 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.
-// 
+// 
 
 // EnumSDLTextureModulate.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLTextureModulate
-#define _DEFINED_HG3D_EnumSDLTextureModulate
+#ifndef _DEFINED_HG3D_EnumSDLTextureModulate
+#define _DEFINED_HG3D_EnumSDLTextureModulate
 
 
-enum EnumSDLTextureModulate
-{
-  SDL_TEXTUREMODULATE_NONE =  0x00000000, // 
-  SDL_TEXTUREMODULATE_COLOR =  0x00000001, // 
-  SDL_TEXTUREMODULATE_ALPHA =  0x00000002 // 
-};
-#endif 
+enum EnumSDLTextureModulate
+{
+  SDL_TEXTUREMODULATE_NONE =  0x00000000, // 
+  SDL_TEXTUREMODULATE_COLOR =  0x00000001, // 
+  SDL_TEXTUREMODULATE_ALPHA =  0x00000002 // 
+};
+#endif 
diff --git a/include/EnumSDLThreadPriority.h b/include/EnumSDLThreadPriority.h
--- a/include/EnumSDLThreadPriority.h
+++ b/include/EnumSDLThreadPriority.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,21 +14,21 @@
 // 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.
-// 
+// 
 
 // EnumSDLThreadPriority.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLThreadPriority
-#define _DEFINED_HG3D_EnumSDLThreadPriority
+#ifndef _DEFINED_HG3D_EnumSDLThreadPriority
+#define _DEFINED_HG3D_EnumSDLThreadPriority
 
 
-enum EnumSDLThreadPriority
-{
-  SDL_THREAD_PRIORITY_LOW, // 
-  SDL_THREAD_PRIORITY_NORMAL, // 
-  SDL_THREAD_PRIORITY_HIGH // 
-};
-#endif 
+enum EnumSDLThreadPriority
+{
+  SDL_THREAD_PRIORITY_LOW, // 
+  SDL_THREAD_PRIORITY_NORMAL, // 
+  SDL_THREAD_PRIORITY_HIGH // 
+};
+#endif 
diff --git a/include/EnumSDLWindowEventID.h b/include/EnumSDLWindowEventID.h
--- a/include/EnumSDLWindowEventID.h
+++ b/include/EnumSDLWindowEventID.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,33 +14,33 @@
 // 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.
-// 
+// 
 
 // EnumSDLWindowEventID.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLWindowEventID
-#define _DEFINED_HG3D_EnumSDLWindowEventID
+#ifndef _DEFINED_HG3D_EnumSDLWindowEventID
+#define _DEFINED_HG3D_EnumSDLWindowEventID
 
 
-enum EnumSDLWindowEventID
-{
-  SDL_WINDOWEVENT_NONE, // 
-  SDL_WINDOWEVENT_SHOWN, // 
-  SDL_WINDOWEVENT_HIDDEN, // 
-  SDL_WINDOWEVENT_EXPOSED, // 
-  SDL_WINDOWEVENT_MOVED, // 
-  SDL_WINDOWEVENT_RESIZED, // 
-  SDL_WINDOWEVENT_SIZE_CHANGED, // 
-  SDL_WINDOWEVENT_MINIMIZED, // 
-  SDL_WINDOWEVENT_MAXIMIZED, // 
-  SDL_WINDOWEVENT_RESTORED, // 
-  SDL_WINDOWEVENT_ENTER, // 
-  SDL_WINDOWEVENT_LEAVE, // 
-  SDL_WINDOWEVENT_FOCUS_GAINED, // 
-  SDL_WINDOWEVENT_FOCUS_LOST, // 
-  SDL_WINDOWEVENT_CLOSE // 
-};
-#endif 
+enum EnumSDLWindowEventID
+{
+  SDL_WINDOWEVENT_NONE, // 
+  SDL_WINDOWEVENT_SHOWN, // 
+  SDL_WINDOWEVENT_HIDDEN, // 
+  SDL_WINDOWEVENT_EXPOSED, // 
+  SDL_WINDOWEVENT_MOVED, // 
+  SDL_WINDOWEVENT_RESIZED, // 
+  SDL_WINDOWEVENT_SIZE_CHANGED, // 
+  SDL_WINDOWEVENT_MINIMIZED, // 
+  SDL_WINDOWEVENT_MAXIMIZED, // 
+  SDL_WINDOWEVENT_RESTORED, // 
+  SDL_WINDOWEVENT_ENTER, // 
+  SDL_WINDOWEVENT_LEAVE, // 
+  SDL_WINDOWEVENT_FOCUS_GAINED, // 
+  SDL_WINDOWEVENT_FOCUS_LOST, // 
+  SDL_WINDOWEVENT_CLOSE // 
+};
+#endif 
diff --git a/include/EnumSDLWindowFlags.h b/include/EnumSDLWindowFlags.h
--- a/include/EnumSDLWindowFlags.h
+++ b/include/EnumSDLWindowFlags.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,32 +14,32 @@
 // 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.
-// 
+// 
 
 // EnumSDLWindowFlags.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLWindowFlags
-#define _DEFINED_HG3D_EnumSDLWindowFlags
+#ifndef _DEFINED_HG3D_EnumSDLWindowFlags
+#define _DEFINED_HG3D_EnumSDLWindowFlags
 
 
-enum EnumSDLWindowFlags
-{
-  SDL_WINDOW_FULLSCREEN =  0x00000001, // 
-  SDL_WINDOW_OPENGL =  0x00000002, // 
-  SDL_WINDOW_SHOWN =  0x00000004, // 
-  SDL_WINDOW_HIDDEN =  0x00000008, // 
-  SDL_WINDOW_BORDERLESS =  0x00000010, // 
-  SDL_WINDOW_RESIZABLE =  0x00000020, // 
-  SDL_WINDOW_MINIMIZED =  0x00000040, // 
-  SDL_WINDOW_MAXIMIZED =  0x00000080, // 
-  SDL_WINDOW_INPUT_GRABBED =  0x00000100, // 
-  SDL_WINDOW_INPUT_FOCUS =  0x00000200, // 
-  SDL_WINDOW_MOUSE_FOCUS =  0x00000400, // 
-  SDL_WINDOW_FULLSCREEN_DESKTOP =  ( SDL_WINDOW_FULLSCREEN | 0x00001000 ), // 
-  SDL_WINDOW_FOREIGN =  0x00000800, // 
-  SDL_WINDOW_ALLOW_HIGHDPI =  0x00002000 // 
-};
-#endif 
+enum EnumSDLWindowFlags
+{
+  SDL_WINDOW_FULLSCREEN =  0x00000001, // 
+  SDL_WINDOW_OPENGL =  0x00000002, // 
+  SDL_WINDOW_SHOWN =  0x00000004, // 
+  SDL_WINDOW_HIDDEN =  0x00000008, // 
+  SDL_WINDOW_BORDERLESS =  0x00000010, // 
+  SDL_WINDOW_RESIZABLE =  0x00000020, // 
+  SDL_WINDOW_MINIMIZED =  0x00000040, // 
+  SDL_WINDOW_MAXIMIZED =  0x00000080, // 
+  SDL_WINDOW_INPUT_GRABBED =  0x00000100, // 
+  SDL_WINDOW_INPUT_FOCUS =  0x00000200, // 
+  SDL_WINDOW_MOUSE_FOCUS =  0x00000400, // 
+  SDL_WINDOW_FULLSCREEN_DESKTOP =  ( SDL_WINDOW_FULLSCREEN | 0x00001000 ), // 
+  SDL_WINDOW_FOREIGN =  0x00000800, // 
+  SDL_WINDOW_ALLOW_HIGHDPI =  0x00002000 // 
+};
+#endif 
diff --git a/include/EnumSDLWindowShapeMode.h b/include/EnumSDLWindowShapeMode.h
--- a/include/EnumSDLWindowShapeMode.h
+++ b/include/EnumSDLWindowShapeMode.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,22 +14,22 @@
 // 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.
-// 
+// 
 
 // EnumSDLWindowShapeMode.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_EnumSDLWindowShapeMode
-#define _DEFINED_HG3D_EnumSDLWindowShapeMode
+#ifndef _DEFINED_HG3D_EnumSDLWindowShapeMode
+#define _DEFINED_HG3D_EnumSDLWindowShapeMode
 
 
-enum EnumSDLWindowShapeMode
-{
-  ShapeModeDefault, // The default mode, a binarized alpha cutoff of 1. 
-  ShapeModeBinarizeAlpha, // A binarized alpha cutoff with a given integer value. 
-  ShapeModeReverseBinarizeAlpha, // A binarized alpha cutoff with a given integer value, but with the opposite comparison. 
-  ShapeModeColorKey // A color key is applied. 
-};
-#endif 
+enum EnumSDLWindowShapeMode
+{
+  ShapeModeDefault, // The default mode, a binarized alpha cutoff of 1. 
+  ShapeModeBinarizeAlpha, // A binarized alpha cutoff with a given integer value. 
+  ShapeModeReverseBinarizeAlpha, // A binarized alpha cutoff with a given integer value, but with the opposite comparison. 
+  ShapeModeColorKey // A color key is applied. 
+};
+#endif 
diff --git a/include/HeaderSDL.h b/include/HeaderSDL.h
--- a/include/HeaderSDL.h
+++ b/include/HeaderSDL.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,32 +14,32 @@
 // 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.
-// 
+// 
 
 // HeaderSDL.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_HeaderSDL
-#define _DEFINED_HG3D_HeaderSDL
-
-#include "ClassPtr.h"
+#ifndef _DEFINED_HG3D_HeaderSDL
+#define _DEFINED_HG3D_HeaderSDL
 
+#include "ClassPtr.h"
 
-// 
-void fsdl_sdl_Init(unsigned int flags_c, int * result_c);
-
-// 
-void fsdl_sdl_InitSubSystem(unsigned int flags_c, int * result_c);
-
-// 
-void fsdl_sdl_QuitSubSystem(unsigned int flags_c);
-
-// 
-void fsdl_sdl_WasInit(unsigned int flags_c, unsigned int * result_c);
-
-// 
-void fsdl_sdl_Quit();
-
-#endif 
+
+// 
+void fsdl_sdl_Init(unsigned int flags_c, int * result_c);
+
+// 
+void fsdl_sdl_InitSubSystem(unsigned int flags_c, int * result_c);
+
+// 
+void fsdl_sdl_QuitSubSystem(unsigned int flags_c);
+
+// 
+void fsdl_sdl_WasInit(unsigned int flags_c, unsigned int * result_c);
+
+// 
+void fsdl_sdl_Quit();
+
+#endif 
diff --git a/include/HeaderSDLEvents.h b/include/HeaderSDLEvents.h
--- a/include/HeaderSDLEvents.h
+++ b/include/HeaderSDLEvents.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,42 +14,42 @@
 // 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.
-// 
+// 
 
 // HeaderSDLEvents.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_HeaderSDLEvents
-#define _DEFINED_HG3D_HeaderSDLEvents
-
-#include "ClassPtr.h"
-#include "StructSDLEvent.h"
+#ifndef _DEFINED_HG3D_HeaderSDLEvents
+#define _DEFINED_HG3D_HeaderSDLEvents
 
+#include "ClassPtr.h"
+#include "StructSDLEvent.h"
 
-// 
-void sdlevts_sdl_PumpEvents();
-
-// 
-void sdlevts_sdl_FlushEvent(unsigned int type_c);
-
-// 
-void sdlevts_sdl_FlushEvents(unsigned int minType_c, unsigned int maxType_c);
-
-// Polls for currently pending events. 
-void sdlevts_sdl_PollEvent(struct sdlevent_struct * event_c, int * result_c);
-
-// Waits indefinitely for the next available event. 
-void sdlevts_sdl_WaitEvent(struct sdlevent_struct * event_c, int * result_c);
-
-// Waits until the specified timeout (in milliseconds) for the next available event. 
-void sdlevts_sdl_WaitEventTimeout(struct sdlevent_struct * event_c, int timeout_c, int * result_c);
-
-// Add an event to the event queue. 
-void sdlevts_sdl_PushEvent(struct sdlevent_struct * event_c, int * result_c);
-
-// 
-void sdlevts_sdl_RegisterEvents(int numevents_c, unsigned int * result_c);
-
-#endif 
+
+// 
+void sdlevts_sdl_PumpEvents();
+
+// 
+void sdlevts_sdl_FlushEvent(unsigned int type_c);
+
+// 
+void sdlevts_sdl_FlushEvents(unsigned int minType_c, unsigned int maxType_c);
+
+// Polls for currently pending events. 
+void sdlevts_sdl_PollEvent(struct sdlevent_struct * event_c, int * result_c);
+
+// Waits indefinitely for the next available event. 
+void sdlevts_sdl_WaitEvent(struct sdlevent_struct * event_c, int * result_c);
+
+// Waits until the specified timeout (in milliseconds) for the next available event. 
+void sdlevts_sdl_WaitEventTimeout(struct sdlevent_struct * event_c, int timeout_c, int * result_c);
+
+// Add an event to the event queue. 
+void sdlevts_sdl_PushEvent(struct sdlevent_struct * event_c, int * result_c);
+
+// 
+void sdlevts_sdl_RegisterEvents(int numevents_c, unsigned int * result_c);
+
+#endif 
diff --git a/include/HeaderSDLKeyboard.h b/include/HeaderSDLKeyboard.h
--- a/include/HeaderSDLKeyboard.h
+++ b/include/HeaderSDLKeyboard.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,26 +14,26 @@
 // 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.
-// 
+// 
 
 // HeaderSDLKeyboard.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_HeaderSDLKeyboard
-#define _DEFINED_HG3D_HeaderSDLKeyboard
-
-#include "ClassPtr.h"
+#ifndef _DEFINED_HG3D_HeaderSDLKeyboard
+#define _DEFINED_HG3D_HeaderSDLKeyboard
 
+#include "ClassPtr.h"
 
-// Get the window which currently has keyboard focus. 
-void skbd_sdl_GetKeyboardFocus(void * * result_c);
-
-// Start accepting Unicode text input events. This function will show the on-screen keyboard if supported. 
-void skbd_sdl_StartTextInput();
-
-// Stop receiving any text input events. This function will hide the on-screen keyboard if supported. 
-void skbd_sdl_StopTextInput();
-
-#endif 
+
+// Get the window which currently has keyboard focus. 
+void skbd_sdl_GetKeyboardFocus(void * * result_c);
+
+// Start accepting Unicode text input events. This function will show the on-screen keyboard if supported. 
+void skbd_sdl_StartTextInput();
+
+// Stop receiving any text input events. This function will hide the on-screen keyboard if supported. 
+void skbd_sdl_StopTextInput();
+
+#endif 
diff --git a/include/HeaderSDLMouse.h b/include/HeaderSDLMouse.h
--- a/include/HeaderSDLMouse.h
+++ b/include/HeaderSDLMouse.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,32 +14,32 @@
 // 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.
-// 
+// 
 
 // HeaderSDLMouse.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_HeaderSDLMouse
-#define _DEFINED_HG3D_HeaderSDLMouse
-
-#include "ClassPtr.h"
+#ifndef _DEFINED_HG3D_HeaderSDLMouse
+#define _DEFINED_HG3D_HeaderSDLMouse
 
+#include "ClassPtr.h"
 
-// Get the window which currently has mouse focus. 
-void sdlms_sdl_GetMouseFocus(void * * result_c);
-
-// Retrieve the current state of the mouse. 
-void sdlms_sdl_GetMouseState(int * x_c, int * y_c, unsigned int * result_c);
-
-// Retrieve the relative state of the mouse. 
-void sdlms_sdl_GetRelativeMouseState(int * x_c, int * y_c, unsigned int * result_c);
-
-// Moves the mouse to the given position within the window. 
-void sdlms_sdl_WarpMouseInWindow(void * window_c, int x_c, int y_c);
-
-// Toggle whether or not the cursor is shown. 
-void sdlms_sdl_ShowCursor(int toggle_c, int * result_c);
-
-#endif 
+
+// Get the window which currently has mouse focus. 
+void sdlms_sdl_GetMouseFocus(void * * result_c);
+
+// Retrieve the current state of the mouse. 
+void sdlms_sdl_GetMouseState(int * x_c, int * y_c, unsigned int * result_c);
+
+// Retrieve the relative state of the mouse. 
+void sdlms_sdl_GetRelativeMouseState(int * x_c, int * y_c, unsigned int * result_c);
+
+// Moves the mouse to the given position within the window. 
+void sdlms_sdl_WarpMouseInWindow(void * window_c, int x_c, int y_c);
+
+// Toggle whether or not the cursor is shown. 
+void sdlms_sdl_ShowCursor(int toggle_c, int * result_c);
+
+#endif 
diff --git a/include/HeaderSDLVideo.h b/include/HeaderSDLVideo.h
--- a/include/HeaderSDLVideo.h
+++ b/include/HeaderSDLVideo.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,128 +14,128 @@
 // 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.
-// 
+// 
 
 // HeaderSDLVideo.h
 
-// 
+// 
 
 #include "wchar.h"
-#ifndef _DEFINED_HG3D_HeaderSDLVideo
-#define _DEFINED_HG3D_HeaderSDLVideo
-
-#include "ClassPtr.h"
+#ifndef _DEFINED_HG3D_HeaderSDLVideo
+#define _DEFINED_HG3D_HeaderSDLVideo
 
+#include "ClassPtr.h"
 
-// Get the number of video drivers compiled into SDL. 
-void fsdlvid_sdl_GetNumVideoDrivers(int * result_c);
-
-// Get the name of a built in video driver. 
-void fsdlvid_sdl_GetVideoDriver(int index_c, char * result_c);
-
-// Initialize the video subsystem, optionally specifying a video driver. 
-void fsdlvid_sdl_VideoInit(char * driver_name_c, int * result_c);
-
-// Shuts down the video subsystem. 
-void fsdlvid_sdl_VideoQuit();
-
-// Returns the name of the currently initialized video driver. 
-void fsdlvid_sdl_GetCurrentVideoDriver(char * result_c);
-
-// Returns the number of available video displays. 
-void fsdlvid_sdl_GetNumVideoDisplays(int * result_c);
-
-// Get the name of a display in UTF-8 encoding. 
-void fsdlvid_sdl_GetDisplayName(int displayIndex_c, char * result_c);
-
-// Returns the number of available display modes. 
-void fsdlvid_sdl_GetNumDisplayModes(int displayIndex_c, int * result_c);
-
-// Get the display index associated with a window. 
-void fsdlvid_sdl_GetWindowDisplayIndex(void * window_c, int * result_c);
-
-// Get the pixel format associated with the window. 
-void fsdlvid_sdl_GetWindowPixelFormat(void * window_c, unsigned int * result_c);
-
-// Create a window with the specified position, dimensions, and flags. 
-void fsdlvid_sdl_CreateWindow(char * title_c, int x_c, int y_c, int w_c, int h_c, unsigned int flags_c, void * * result_c);
-
-// Get the numeric ID of a window, for logging purposes. 
-void fsdlvid_sdl_GetWindowID(void * window_c, unsigned int * result_c);
-
-// Get a window from a stored ID, or NULL if it doesn't exist. 
-void fsdlvid_sdl_GetWindowFromID(unsigned int id_c, void * * result_c);
-
-// Get the window flags. 
-void fsdlvid_sdl_GetWindowFlags(void * window_c, unsigned int * result_c);
-
-// Set the title of a window, in UTF-8 format. 
-void fsdlvid_sdl_SetWindowTitle(void * window_c, char * title_c);
-
-// Get the title of a window, in UTF-8 format. 
-void fsdlvid_sdl_GetWindowTitle(void * window_c, char * result_c);
-
-// Set the position of a window. 
-void fsdlvid_sdl_SetWindowPosition(void * window_c, int x_c, int y_c);
-
-// Get the position of a window. 
-void fsdlvid_sdl_GetWindowPosition(void * window_c, int * x_c, int * y_c);
-
-// Set the size of a window's client area. 
-void fsdlvid_sdl_SetWindowSize(void * window_c, int w_c, int h_c);
-
-// Get the size of a window's client area. 
-void fsdlvid_sdl_GetWindowSize(void * window_c, int * w_c, int * h_c);
-
-// Set the minimum size of a window's client area. 
-void fsdlvid_sdl_SetWindowMinimumSize(void * window_c, int min_w_c, int min_h_c);
-
-// Get the minimum size of a window's client area. 
-void fsdlvid_sdl_GetWindowMinimumSize(void * window_c, int * w_c, int * h_c);
-
-// Set the maximum size of a window's client area. 
-void fsdlvid_sdl_SetWindowMaximumSize(void * window_c, int max_w_c, int max_h_c);
-
-// Get the maximum size of a window's client area. 
-void fsdlvid_sdl_GetWindowMaximumSize(void * window_c, int * w_c, int * h_c);
-
-// Show a window. 
-void fsdlvid_sdl_ShowWindow(void * window_c);
-
-// Hide a window. 
-void fsdlvid_sdl_HideWindow(void * window_c);
-
-// Raise a window above other windows and set the input focus. 
-void fsdlvid_sdl_RaiseWindow(void * window_c);
-
-// Make a window as large as possible. 
-void fsdlvid_sdl_MaximizeWindow(void * window_c);
-
-// Minimize a window to an iconic representation. 
-void fsdlvid_sdl_MinimizeWindow(void * window_c);
-
-// Restore the size and position of a minimized or maximized window. 
-void fsdlvid_sdl_RestoreWindow(void * window_c);
-
-// Set a window's fullscreen state. 
-void fsdlvid_sdl_SetWindowFullscreen(void * window_c, unsigned int flags_c, int * result_c);
-
-// Copy the window surface to the screen. 
-void fsdlvid_sdl_UpdateWindowSurface(void * window_c, int * result_c);
-
-// Set the brightness (gamma correction) for a window. 
-void fsdlvid_sdl_SetWindowBrightness(void * window_c, float brightness_c, int * result_c);
-
-// Get the brightness (gamma correction) for a window. 
-void fsdlvid_sdl_GetWindowBrightness(void * window_c, float * result_c);
-
-// Destroy a window. 
-void fsdlvid_sdl_DestroyWindow(void * window_c);
-
-// Allow the screen to be blanked by a screensaver. 
-void fsdlvid_sdl_EnableScreenSaver();
-
-// Prevent the screen from being blanked by a screensaver. 
-void fsdlvid_sdl_DisableScreenSaver();
-
-#endif 
+
+// Get the number of video drivers compiled into SDL. 
+void fsdlvid_sdl_GetNumVideoDrivers(int * result_c);
+
+// Get the name of a built in video driver. 
+void fsdlvid_sdl_GetVideoDriver(int index_c, char * result_c);
+
+// Initialize the video subsystem, optionally specifying a video driver. 
+void fsdlvid_sdl_VideoInit(char * driver_name_c, int * result_c);
+
+// Shuts down the video subsystem. 
+void fsdlvid_sdl_VideoQuit();
+
+// Returns the name of the currently initialized video driver. 
+void fsdlvid_sdl_GetCurrentVideoDriver(char * result_c);
+
+// Returns the number of available video displays. 
+void fsdlvid_sdl_GetNumVideoDisplays(int * result_c);
+
+// Get the name of a display in UTF-8 encoding. 
+void fsdlvid_sdl_GetDisplayName(int displayIndex_c, char * result_c);
+
+// Returns the number of available display modes. 
+void fsdlvid_sdl_GetNumDisplayModes(int displayIndex_c, int * result_c);
+
+// Get the display index associated with a window. 
+void fsdlvid_sdl_GetWindowDisplayIndex(void * window_c, int * result_c);
+
+// Get the pixel format associated with the window. 
+void fsdlvid_sdl_GetWindowPixelFormat(void * window_c, unsigned int * result_c);
+
+// Create a window with the specified position, dimensions, and flags. 
+void fsdlvid_sdl_CreateWindow(char * title_c, int x_c, int y_c, int w_c, int h_c, unsigned int flags_c, void * * result_c);
+
+// Get the numeric ID of a window, for logging purposes. 
+void fsdlvid_sdl_GetWindowID(void * window_c, unsigned int * result_c);
+
+// Get a window from a stored ID, or NULL if it doesn't exist. 
+void fsdlvid_sdl_GetWindowFromID(unsigned int id_c, void * * result_c);
+
+// Get the window flags. 
+void fsdlvid_sdl_GetWindowFlags(void * window_c, unsigned int * result_c);
+
+// Set the title of a window, in UTF-8 format. 
+void fsdlvid_sdl_SetWindowTitle(void * window_c, char * title_c);
+
+// Get the title of a window, in UTF-8 format. 
+void fsdlvid_sdl_GetWindowTitle(void * window_c, char * result_c);
+
+// Set the position of a window. 
+void fsdlvid_sdl_SetWindowPosition(void * window_c, int x_c, int y_c);
+
+// Get the position of a window. 
+void fsdlvid_sdl_GetWindowPosition(void * window_c, int * x_c, int * y_c);
+
+// Set the size of a window's client area. 
+void fsdlvid_sdl_SetWindowSize(void * window_c, int w_c, int h_c);
+
+// Get the size of a window's client area. 
+void fsdlvid_sdl_GetWindowSize(void * window_c, int * w_c, int * h_c);
+
+// Set the minimum size of a window's client area. 
+void fsdlvid_sdl_SetWindowMinimumSize(void * window_c, int min_w_c, int min_h_c);
+
+// Get the minimum size of a window's client area. 
+void fsdlvid_sdl_GetWindowMinimumSize(void * window_c, int * w_c, int * h_c);
+
+// Set the maximum size of a window's client area. 
+void fsdlvid_sdl_SetWindowMaximumSize(void * window_c, int max_w_c, int max_h_c);
+
+// Get the maximum size of a window's client area. 
+void fsdlvid_sdl_GetWindowMaximumSize(void * window_c, int * w_c, int * h_c);
+
+// Show a window. 
+void fsdlvid_sdl_ShowWindow(void * window_c);
+
+// Hide a window. 
+void fsdlvid_sdl_HideWindow(void * window_c);
+
+// Raise a window above other windows and set the input focus. 
+void fsdlvid_sdl_RaiseWindow(void * window_c);
+
+// Make a window as large as possible. 
+void fsdlvid_sdl_MaximizeWindow(void * window_c);
+
+// Minimize a window to an iconic representation. 
+void fsdlvid_sdl_MinimizeWindow(void * window_c);
+
+// Restore the size and position of a minimized or maximized window. 
+void fsdlvid_sdl_RestoreWindow(void * window_c);
+
+// Set a window's fullscreen state. 
+void fsdlvid_sdl_SetWindowFullscreen(void * window_c, unsigned int flags_c, int * result_c);
+
+// Copy the window surface to the screen. 
+void fsdlvid_sdl_UpdateWindowSurface(void * window_c, int * result_c);
+
+// Set the brightness (gamma correction) for a window. 
+void fsdlvid_sdl_SetWindowBrightness(void * window_c, float brightness_c, int * result_c);
+
+// Get the brightness (gamma correction) for a window. 
+void fsdlvid_sdl_GetWindowBrightness(void * window_c, float * result_c);
+
+// Destroy a window. 
+void fsdlvid_sdl_DestroyWindow(void * window_c);
+
+// Allow the screen to be blanked by a screensaver. 
+void fsdlvid_sdl_EnableScreenSaver();
+
+// Prevent the screen from being blanked by a screensaver. 
+void fsdlvid_sdl_DisableScreenSaver();
+
+#endif 
diff --git a/include/SDL2DllDefines.h b/include/SDL2DllDefines.h
--- a/include/SDL2DllDefines.h
+++ b/include/SDL2DllDefines.h
@@ -11,15 +11,15 @@
 // 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.
-// 
+// 
 
 
 // SDL2DllDefines.h
 
-#ifndef _HGamer3DSDL2040_DLLDEFINES_H_
-#define _HGamer3DSDL2040_DLLDEFINES_H_
+#ifndef _HGamer3DSDL2050_DLLDEFINES_H_
+#define _HGamer3DSDL2050_DLLDEFINES_H_
 
-/* Cmake will define HGamer3DSDL2040_EXPORTS on Windows when it
+/* Cmake will define HGamer3DSDL2050_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(HGamer3DSDL2040_EXPORTS)
+  #if defined(HGamer3DSDL2050_EXPORTS)
     #define  SDL2_LIB_EXPORT __declspec(dllexport)
   #else
     #define  SDL2_LIB_EXPORT __declspec(dllimport)
-  #endif /* HGamer3DSDL2040_EXPORTS */
+  #endif /* HGamer3DSDL2050_EXPORTS */
 #else /* defined (_WIN32) */
  #define SDL2_LIB_EXPORT
 #endif
 
-#endif /* _HGamer3DSDL2040_DLLDEFINES_H_ */
+#endif /* _HGamer3DSDL2050_DLLDEFINES_H_ */
diff --git a/include/StructHG3DClass.h b/include/StructHG3DClass.h
--- a/include/StructHG3DClass.h
+++ b/include/StructHG3DClass.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,16 +14,16 @@
 // 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.
-// 
+// 
 
 // StructHG3DClass.h
 
-// 
+// 
 
 #include "wchar.h"
 
 
-typedef struct hg3dclass_struct {
-	void *ptr;
-	void *fptr;
-} hg3dclass_struct;
+typedef struct hg3dclass_struct {
+	void *ptr;
+	void *fptr;
+} hg3dclass_struct;
diff --git a/include/StructSDLEvent.h b/include/StructSDLEvent.h
--- a/include/StructSDLEvent.h
+++ b/include/StructSDLEvent.h
@@ -1,6 +1,6 @@
 // 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");
@@ -14,22 +14,22 @@
 // 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.
-// 
+// 
 
 // StructSDLEvent.h
 
-// 
+// 
 
 #include "wchar.h"
 
 
-#ifndef _INC_STRUCT_SDLEVENT
-#define _INC_STRUCT_SDLEVENT
-
-typedef struct sdlevent_struct {
-  int type;
-  int what;
-  int data[12];
-} sdlevent_struct;
-
+#ifndef _INC_STRUCT_SDLEVENT
+#define _INC_STRUCT_SDLEVENT
+
+typedef struct sdlevent_struct {
+  int type;
+  int what;
+  int data[12];
+} sdlevent_struct;
+
 #endif
diff --git a/include/sdlevent_struct.h b/include/sdlevent_struct.h
--- a/include/sdlevent_struct.h
+++ b/include/sdlevent_struct.h
@@ -1,3 +1,3 @@
-typedef struct sdlevent_struct {
-  unsigned int sdl_event_data[14];
-} sdlevent_struct;
+typedef struct sdlevent_struct {
+  unsigned int sdl_event_data[14];
+} sdlevent_struct;
