Simulant  21.12-574
A portable game engine for Windows, OSX, Linux, Dreamcast, and PSP
Classes | Typedefs | Enumerations | Functions | Variables
smlt Namespace Reference

Classes

struct  _OctreeCullerImpl
 
struct  _QuadtreeCullerImpl
 
class  AABB
 
class  Actor
 
class  AdjacencyInfo
 
class  aligned_allocator
 
struct  all_traits
 
struct  all_traits< T, Args... >
 
struct  all_traits<>
 
class  AlphaFader
 
class  AncestorIterator
 
class  AndroidPlatform
 
class  AndroidWindow
 
struct  AnimationSequenceStage
 
class  any
 
struct  any_traits
 
struct  any_traits< T, Args... >
 
struct  any_traits<>
 
struct  AppConfig
 
class  Application
 
class  ArgParser
 
class  Asset
 
class  AssetManager
 
class  AssetMissingError
 
class  AttributeManager
 
class  AudioSource
 
struct  AxisAngle
 
class  BackgroundLoadException
 
class  bad_any_cast
 
class  bad_variant_access
 
struct  BasePropertyValue
 
class  Behaviour
 
class  BehaviourWithInput
 
struct  BezierCurve
 
class  Binary
 
struct  Bone
 
class  Boundable
 The Boundable class. More...
 
class  BoundableEntity
 The BoundableEntity class. More...
 
class  Camera
 
class  ChainNameable
 
struct  CharInfo
 
class  ChildIterator
 
struct  class_of
 
struct  class_of< Signature Type::* >
 
class  Cloneable
 
struct  Colour
 
class  ColourFader
 
struct  common_type
 
struct  common_type< T >
 
struct  common_type< T, U >
 
struct  common_type< T, U, Ts... >
 
class  Compositor
 
class  ContainerNode
 
class  ContiguousMap
 
class  ContiguousMultiMap
 
struct  CoreMaterial
 
struct  CullerNodeData
 
struct  CullerTreeData
 
class  Debug
 
class  DebugScopedLog
 
class  DedicatedVBO
 
class  default_init_ptr
 
struct  Degrees
 
class  DescendentIterator
 
class  DestroyableObject
 
class  DirectionManipulator
 
class  DirectionNoiseRandomManipulator
 
class  DreamcastPlatform
 
struct  EdgeInfo
 
struct  Emitter
 
struct  Euler
 
class  EventListener
 
class  EventListenerManager
 
struct  ExtractType
 
struct  ExtractType< default_init_ptr< T > >
 
struct  ExtractType< std::shared_ptr< T > >
 
struct  ExtractType< std::unique_ptr< T > >
 
struct  ExtractType< std::weak_ptr< T > >
 
struct  ExtractType< T * >
 
class  FileHandler
 
class  FileIfstream
 
class  FileStreamBuf
 
class  FindResult
 
class  Font
 
struct  FontFlags
 
class  Formatter
 
class  Framebuffer
 
class  FrameUnpacker
 
class  Frustum
 
class  FrustumPartitioner
 
class  GameController
 
struct  GameControllerEvent
 
struct  GameControllerInfo
 
class  GenericRenderer
 
class  Geom
 The Geom class. More...
 
class  GeomCuller
 
struct  GeomCullerOptions
 
struct  GL1RenderGroupImpl
 
class  GL1RenderQueueVisitor
 
struct  GL1RenderState
 
class  GL1XRenderer
 
struct  GL2RenderGroupImpl
 
class  GL2RenderQueueVisitor
 
class  GLRenderer
 
class  GLThreadCheck
 
struct  GPUBuffer
 
class  GPUProgram
 
struct  HalfVec2
 
struct  HalfVec3
 
class  Handler
 
class  HasAutoID
 
struct  Hash
 
class  HasMutableRenderPriority
 
class  heap_array
 
struct  HeightmapSpecification
 
struct  in_place_index_t
 
struct  in_place_t
 
struct  in_place_type_t
 
class  IndexData
 
class  IndexDataIterator
 
class  InputAxis
 
class  InputManager
 
class  InputState
 
class  InstanceInitializationError
 
struct  invokable
 
struct  invoke_of
 
struct  is_null_pointer
 
struct  is_null_pointer< ::std::nullptr_t >
 
struct  is_null_pointer< ::std::nullptr_t const >
 
struct  is_null_pointer< ::std::nullptr_t volatile >
 
struct  is_null_pointer< add_cv_t< ::std::nullptr_t > >
 
class  is_runpackable
 
class  is_unpackable
 
class  Joint
 
struct  JointState
 
struct  JointVertex
 
class  JSONIterator
 
class  JSONNode
 
struct  Key
 
struct  KeyboardDeviceInfo
 
struct  KeyboardMap
 
struct  KeyEvent
 
class  KeyFrameAnimated
 
class  KeyFrameAnimationState
 
class  KOSWindow
 
struct  KOSWindowPrivate
 
class  Light
 
class  LinuxPlatform
 
class  Loadable
 
class  Loader
 
class  LoaderType
 
class  LocalAssetManager
 
class  Locateable
 The Locateable class. More...
 
class  Logger
 
class  LRUCache
 
class  Manipulator
 
struct  Mat3
 
struct  Mat4
 
class  Material
 
class  MaterialBehaviour
 
class  MaterialObject
 
class  MaterialPass
 
class  MaterialPropertyOverrider
 
class  MaterialScript
 
class  Mesh
 
class  MeshInstancer
 The MeshInstancer class. More...
 
struct  MeshLoadOptions
 
class  MeshSilhouette
 
struct  ModifierKeyState
 
struct  monostate
 
struct  MouseDeviceInfo
 
class  Nameable
 The Nameable class. More...
 
struct  no_traits
 
class  NotifiesDestruction
 
class  NullPartitioner
 
class  NullSoundDriver
 
class  ObjectManager
 
class  ObjectManager< IDType, ObjectType, false >
 
class  ObjectManager< IDType, ObjectType, true >
 
class  Octree
 
class  OctreeCuller
 
class  OpenALSoundDriver
 
class  optional
 
class  Organism
 
class  OSXPlatform
 
class  PackedColour4444
 
class  Panel
 
struct  Particle
 
class  ParticleScript
 
class  ParticleSystem
 
class  Partitioner
 
struct  PartitionerEntry
 
class  PartitionerPanel
 
class  Path
 
class  PhysicsScene
 
class  Pipeline
 
struct  Pixel
 
struct  Plane
 
class  Platform
 
class  PlayingSound
 
class  PlayingSoundPtr
 
struct  PointerToMember
 
struct  PointerToMemberHelper
 
struct  PointerToMemberHelper< T U::* >
 
class  Polylist
 
class  Printable
 
class  Promise
 
class  Promise< void >
 
class  Property
 
struct  PropertyValue
 
struct  PropertyValue< void >
 
class  PSPPlatform
 
class  PSPWindow
 
class  Quadtree
 
class  QuadtreeCuller
 
struct  Quaternion
 
struct  Radians
 
class  RandomGenerator
 
class  RangeValue
 
struct  Ray
 
class  RefCounted
 
struct  Renderable
 
class  Renderer
 
struct  RenderState
 
class  RenderTarget
 
struct  Resolution
 
struct  result_of
 
struct  result_of< F(Args...)>
 
class  Rig
 
class  RigJoint
 
class  Scene
 
class  SceneBase
 
class  SceneLoadException
 
class  SceneManager
 
struct  scope_guard
 
class  Screen
 
class  SDL2Window
 
class  Seconds
 
class  ShadowVolumeManager
 
class  SharedAssetManager
 
class  SharedVBO
 
class  SiblingIterator
 
struct  SilhouetteEdge
 
class  Simplex
 
class  SizeManipulator
 
class  SkeletalFrameUnpacker
 
class  Skeleton
 
struct  SkeletonFrame
 
struct  SkeletonVertex
 
class  Skybox
 
class  SkyboxImageDuplicateError
 
class  SkyboxImageNotFoundError
 
class  SkyManager
 
class  Sound
 
class  SoundDriver
 
struct  SoundFlags
 
class  SpatialHash
 
class  SpatialHashEntry
 
class  SpatialHashPartitioner
 
class  Sprite
 
class  SpriteManager
 
struct  SpritesheetAttrs
 
class  Stage
 
struct  StagedWrite
 
class  StageManager
 
class  StageNode
 
class  StageNodeFinders
 
class  StageNodeManager
 
class  StatsPanel
 
class  StatsRecorder
 
class  StdIOHandler
 
class  StreamView
 
class  SubMesh
 
class  SubMeshIteratorPair
 
class  SyntaxError
 
struct  TerrainData
 
struct  TerrainTriangle
 
struct  TextInputEvent
 
class  Texture
 
struct  TextureFlags
 
struct  TextureLoadResult
 
class  ThreeWayCompare
 
class  Throttle
 
class  TimeKeeper
 
struct  TouchEvent
 
class  Transformable
 The Transformable class. More...
 
class  TreeNode
 
struct  TriangleData
 
class  TwoPhaseConstructed
 
struct  type_at
 
struct  type_at< 0ul, T, Ts... >
 
class  TypedDestroyableObject
 
struct  UniformInfo
 
class  UniformManager
 
class  UniqueID
 
class  UniquelyIdentifiable
 
class  Updateable
 The Updateable class. More...
 
class  variant
 
struct  variant_alternative
 
struct  variant_alternative< I, const T >
 
struct  variant_alternative< I, const volatile T >
 
struct  variant_alternative< I, variant< Ts... > >
 
struct  variant_alternative< I, volatile T >
 
struct  variant_size
 
struct  variant_size< const T >
 
struct  variant_size< const volatile T >
 
struct  variant_size< variant< Ts... > >
 
struct  variant_size< volatile T >
 
class  VBO
 
class  VBOManager
 
struct  Vec2
 
struct  Vec3
 
struct  Vec4
 
class  VertexAttributeProperty
 
class  VertexData
 
struct  VertexRange
 
class  VertexSpecification
 
class  Viewport
 
class  VirtualFileSystem
 
class  Window
 
class  WindowHolder
 
class  WindowsPlatform
 
class  WrongThreadError
 

Typedefs

typedef sig::signal< void(KeyFrameAnimated *, const std::string &)> SignalAnimationAdded
 
typedef std::function< void(int32_t, int32_t, float)> AnimationUpdatedCallback
 
typedef SDL2Window SysWindow
 
typedef std::shared_ptr< LoaderLoaderPtr
 
typedef std::shared_ptr< LoaderTypeLoaderTypePtr
 
typedef sig::signal< void()> FrameStartedSignal
 
typedef sig::signal< void()> FrameFinishedSignal
 
typedef sig::signal< void()> PreSwapSignal
 
typedef sig::signal< void()> PostCoroutinesSignal
 
typedef sig::signal< void(float)> FixedUpdateSignal
 
typedef sig::signal< void(float)> UpdateSignal
 
typedef sig::signal< void(float)> LateUpdateSignal
 
typedef sig::signal< void()> PostLateUpdateSignal
 
typedef sig::signal< void()> ShutdownSignal
 
typedef ObjectManager< MeshID, Mesh, DO_REFCOUNT > MeshManager
 
typedef ObjectManager< MaterialID, Material, DO_REFCOUNT > MaterialManager
 
typedef ObjectManager< TextureID, Texture, DO_REFCOUNT > TextureManager
 
typedef ObjectManager< SoundID, Sound, DO_REFCOUNT > SoundManager
 
typedef ObjectManager< FontID, Font, DO_REFCOUNT > FontManager
 
typedef ObjectManager< ParticleScriptID, ParticleScript, DO_REFCOUNT > ParticleScriptManager
 
typedef ObjectManager< BinaryID, Binary, DO_REFCOUNT > BinaryManager
 
typedef uint8_t PropertyIndex
 
typedef int32_t EnumType
 
typedef int32_t EnabledTextureMask
 
typedef uint32_t MaterialPropertyNameHash
 
typedef std::vector< std::pair< std::string, MaterialPropertyType > > PropertyList
 
typedef std::shared_ptr< ManipulatorManipulatorPtr
 
typedef std::shared_ptr< BehaviourBehaviourPtr
 
typedef std::function< StageNode *(StageNode *)> NodeFinder
 
template<typename T , int Align>
using aligned_vector = std::vector< T, aligned_allocator< T, Align > >
 
typedef uint32_t TouchPointID
 
template<class T >
using remove_volatile_t = typename ::std::remove_volatile< T >::type
 
template<class T >
using remove_const_t = typename ::std::remove_const< T >::type
 
template<class T >
using remove_cv_t = typename ::std::remove_cv< T >::type
 
template<class T >
using add_volatile_t = typename ::std::add_volatile< T >::type
 
template<class T >
using add_const_t = typename ::std::add_const< T >::type
 
template<class T >
using add_cv_t = typename ::std::add_cv< T >::type
 
template<class T >
using add_lvalue_reference_t = typename ::std::add_lvalue_reference< T >::type
 
template<class T >
using add_rvalue_reference_t = typename ::std::add_rvalue_reference< T >::type
 
template<class T >
using remove_reference_t = typename ::std::remove_reference< T >::type
 
template<class T >
using remove_pointer_t = typename ::std::remove_pointer< T >::type
 
template<class T >
using add_pointer_t = typename ::std::add_pointer< T >::type
 
template<class T >
using make_unsigned_t = typename ::std::make_unsigned< T >::type
 
template<class T >
using make_signed_t = typename ::std::make_signed< T >::type
 
template<class T >
using remove_extent_t = typename ::std::remove_extent< T >::type
 
template<class T >
using remove_all_extents_t = typename ::std::remove_all_extents< T >::type
 
template<::std::size_t Len, ::std::size_t Align>
using aligned_storage_t = typename ::std::aligned_storage< Len, Align >::type
 
template<class T >
using decay_t = typename ::std::decay< T >::type
 
template<bool B, class T = void>
using enable_if_t = typename ::std::enable_if< B, T >::type
 
template<bool B, class T , class F >
using conditional_t = typename ::std::conditional< B, T, F >::type
 
template<class T >
using underlying_type_t = typename ::std::underlying_type< T >::type
 
template<class... Args>
using invoke_of_t = typename invoke_of< Args... >::type
 
template<class T >
using class_of_t = typename class_of< T >::type
 
template<class T >
using result_of_t = typename result_of< T >::type
 
template<class... T>
using common_type_t = typename common_type< T... >::type
 
template<class T , class U = T>
using is_swappable = ::std::integral_constant< bool, impl::is_swappable< T, U >::value >
 
template<class T , class U = T>
using is_nothrow_swappable = impl::is_nothrow_swappable< T, U >
 
template<class T , T... I>
using integer_sequence = impl::integer_sequence< T, I... >
 
template<::std::size_t... I>
using index_sequence = integer_sequence< ::std::size_t, I... >
 
template<class T , T N>
using make_integer_sequence = typename impl::sequence_generator< T, N, N >::type
 
template<::std::size_t N>
using make_index_sequence = make_integer_sequence< ::std::size_t, N >
 
template<class T , class... Ts>
using typelist_index = ::std::integral_constant< ::std::size_t, impl::typelist_index< 0ul, T, Ts... >::type::value >
 
template<::std::size_t N, class... Ts>
using type_at_t = typename type_at< N, Ts... >::type
 
typedef sig::signal< void()> DestroyedSignal
 
typedef RangeValue< 0, 1 > NormalizedFloat
 
typedef RangeValue< 0, 255, uint8_t > ByteValue
 
typedef std::pair< std::type_index, uint32_t > UniqueIDKey
 
typedef uint64_t uuid64
 
template<std::size_t I, typename T >
using variant_alternative_t = typename variant_alternative< I, T >::type
 
typedef std::function< void(InputAxis *)> EachAxisCallback
 
typedef std::vector< InputAxis * > AxisList
 
typedef sig::signal< bool(const unicode &, TextInputEvent &)> TextInputReceivedSignal
 
typedef int8_t KeyboardID
 
typedef int8_t MouseID
 
typedef int8_t MouseButtonID
 
typedef int8_t JoystickHatID
 
typedef sig::signal< void()> TransformationChangedSignal
 
typedef std::unordered_map< unicode, smlt::anyLoaderOptions
 
typedef std::function< smlt::Colour(const smlt::Vec3 &, const smlt::Vec3 &, const std::vector< Vec3 > &)> HeightmapDiffuseGenerator
 
typedef std::map< std::string, std::string > Q2Entity
 
typedef std::vector< Q2Entity > Q2EntityList
 
typedef std::chrono::time_point< std::chrono::system_clock > DateTime
 
typedef sig::signal< void(Mesh *, MeshAnimationType, uint32_t)> SignalAnimationEnabled
 
typedef std::shared_ptr< FrameUnpackerFrameUnpackerPtr
 
typedef std::vector< VertexRangeVertexRangeList
 
typedef std::shared_ptr< RenderableRenderablePtr
 
typedef std::vector< RenderablePtr > RenderableList
 
typedef std::function< void(Renderable *)> EachRenderableCallback
 
typedef uint8_t Level
 
typedef uint16_t GridCoord
 
typedef Octree< CullerTreeData, CullerNodeDataCullerOctree
 
typedef Quadtree< CullerTreeData, CullerNodeDataCullerQuadtree
 
typedef std::size_t MeshInstanceID
 
typedef sig::signal< void(ParticleSystem *, MaterialID, MaterialID)> ParticleSystemMaterialChangedSignal
 
typedef StageNodeManager< StageNodePool, SkyID, SkyboxTemplatedSkyboxManager
 
typedef StageNodeManager< StageNodePool, SpriteID, SpriteTemplatedSpriteManager
 
typedef sig::signal< void(SpriteID)> SpriteCreatedSignal
 
typedef sig::signal< void(SpriteID)> SpriteDestroyedSignal
 
typedef sig::signal< void(AABB)> BoundsUpdatedSignal
 
typedef sig::signal< void()> CleanedUpSignal
 
typedef Polylist< StageNode, Actor, MeshInstancer, Camera, Geom, Light, ParticleSystem, Sprite, ui::Button, ui::Image, ui::Label, ui::ProgressBar, ui::Frame, ui::Keyboard, ui::TextEntry, SkyboxStageNodePool
 
typedef std::unordered_set< KeyKeyList
 
typedef std::unordered_set< SpatialHashEntry * > HGSHEntryList
 
typedef sig::signal< void(RenderPriority, RenderPriority)> RenderPriorityChangedSignal
 
typedef ObjectManager< GPUProgramID, GPUProgram, DO_REFCOUNT > GPUProgramManager
 
typedef sig::signal< void()> ProgramLinkedSignal
 
typedef sig::signal< void(ShaderType)> ShaderCompiledSignal
 
typedef uint32_t VBOSlot
 
typedef sig::signal< void()> SceneOnActivatedSignal
 
typedef sig::signal< void()> SceneOnDeactivatedSignal
 
typedef std::shared_ptr< SceneBaseSceneBasePtr
 
typedef std::function< SceneBasePtr(Window *)> SceneFactory
 
typedef sig::signal< void(std::string, SceneBase *)> SceneActivatedSignal
 
typedef sig::signal< void(std::string, SceneBase *)> SceneDeactivatedSignal
 
typedef uint32_t AudioBufferID
 
typedef uint32_t AudioSourceID
 
typedef std::function< int32_t(AudioBufferID)> StreamFunc
 
typedef std::size_t PlayingSoundID
 
typedef sig::signal< void(SoundPtr, AudioRepeat, DistanceModel)> SoundPlayedSignal
 
typedef StageNodeManager< StageNodePool, ActorID, ActorActorManager
 
typedef StageNodeManager< StageNodePool, GeomID, GeomGeomManager
 
typedef StageNodeManager< StageNodePool, LightID, LightLightManager
 
typedef StageNodeManager< StageNodePool, ParticleSystemID, ParticleSystemParticleSystemManager
 
typedef StageNodeManager< StageNodePool, CameraID, CameraCameraManager
 
typedef StageNodeManager< StageNodePool, MeshInstancerID, MeshInstancerMeshInstancerManager
 
typedef sig::signal< void(StageNode *, StageNodeType)> StageNodeCreatedSignal
 
typedef sig::signal< void(StageNode *, StageNodeType)> StageNodeDestroyedSignal
 
typedef sig::signal< void(CameraID, Viewport)> StagePreRenderSignal
 
typedef sig::signal< void(CameraID, Viewport)> StagePostRenderSignal
 
typedef sig::signal< void(StageID)> StageAddedSignal
 
typedef sig::signal< void(StageID)> StageRemovedSignal
 
typedef void(* ExplodeFunc) (const uint8_t *, const TextureChannelSet &, float &, float &, float &, float &)
 
typedef void(* CompressFunc) (uint8_t *, float, float, float, float)
 
typedef std::array< TextureChannel, 4 > TextureChannelSet
 
typedef int16_t AttributeOffset
 
typedef float Ratio
 
typedef int32_t RenderPriority
 
typedef std::weak_ptr< MeshMeshRef
 
typedef std::shared_ptr< MeshMeshPtr
 
typedef SubMeshSubMeshPtr
 
typedef std::weak_ptr< MaterialMaterialRef
 
typedef std::shared_ptr< MaterialMaterialPtr
 
typedef std::weak_ptr< TextureTextureRef
 
typedef std::shared_ptr< TextureTexturePtr
 
typedef std::shared_ptr< ParticleScriptParticleScriptPtr
 
typedef std::shared_ptr< BinaryBinaryPtr
 
typedef std::weak_ptr< SoundSoundRef
 
typedef std::shared_ptr< SoundSoundPtr
 
typedef std::weak_ptr< FontFontRef
 
typedef std::shared_ptr< FontFontPtr
 
typedef default_init_ptr< ActorActorPtr
 
typedef default_init_ptr< GeomGeomPtr
 
typedef default_init_ptr< MeshInstancerMeshInstancerPtr
 
typedef default_init_ptr< ParticleSystemParticleSystemPtr
 
typedef default_init_ptr< SpriteSpritePtr
 
typedef default_init_ptr< LightLightPtr
 
typedef default_init_ptr< CameraCameraPtr
 
typedef default_init_ptr< Background > BackgroundPtr
 
typedef default_init_ptr< StageStagePtr
 
typedef std::shared_ptr< AssetManagerResourceManagerPtr
 
typedef std::shared_ptr< CompositorCompositorPtr
 
typedef default_init_ptr< PipelinePipelinePtr
 
typedef std::shared_ptr< GPUProgramGPUProgramPtr
 
typedef default_init_ptr< SkyboxSkyboxPtr
 
typedef UniqueID< MeshPtr > MeshID
 
typedef UniqueID< TexturePtr > TextureID
 
typedef UniqueID< FontPtr > FontID
 
typedef UniqueID< CameraPtrCameraID
 
typedef UniqueID< MaterialPtr > MaterialID
 
typedef UniqueID< ParticleScriptPtr > ParticleScriptID
 
typedef UniqueID< BinaryPtr > BinaryID
 
typedef UniqueID< LightPtrLightID
 
typedef UniqueID< StagePtrStageID
 
typedef UniqueID< ActorPtrActorID
 
typedef UniqueID< GeomPtrGeomID
 
typedef UniqueID< MeshInstancerPtrMeshInstancerID
 
typedef UniqueID< SoundPtr > SoundID
 
typedef UniqueID< SpritePtrSpriteID
 
typedef UniqueID< BackgroundPtrBackgroundID
 
typedef UniqueID< ParticleSystemPtrParticleSystemID
 
typedef UniqueID< SkyboxPtrSkyID
 
typedef UniqueID< GPUProgramPtr > GPUProgramID
 
typedef UniqueID< ui::WidgetPtrWidgetID
 
typedef uint32_t ProcessID
 
using half = half_float::half
 
typedef std::shared_ptr< VertexDataVertexDataPtr
 
typedef uint32_t Index
 
typedef std::shared_ptr< IndexDataIndexDataPtr
 
typedef sig::signal< void(std::string, Screen *)> ScreenAddedSignal
 
typedef sig::signal< void(std::string, Screen *)> ScreenRemovedSignal
 

Enumerations

enum  ArgType { ARG_TYPE_BOOLEAN, ARG_TYPE_STRING, ARG_TYPE_INTEGER, ARG_TYPE_FLOAT }
 
enum  ArgCount { ARG_COUNT_ONE, ARG_COUNT_ONE_OR_MANY, ARG_COUNT_ZERO_OR_ONE, ARG_COUNT_ZERO_OR_MANY }
 
enum  IterationType { ITERATION_TYPE_ONCE, ITERATION_TYPE_N, ITERATION_TYPE_ONCE_PER_LIGHT }
 
enum  PolygonMode : EnumType { POLYGON_MODE_FILL, POLYGON_MODE_LINE, POLYGON_MODE_POINT }
 
enum  ShadeModel : EnumType { SHADE_MODEL_SMOOTH, SHADE_MODEL_FLAT }
 
enum  ColourMaterial : EnumType { COLOUR_MATERIAL_NONE, COLOUR_MATERIAL_AMBIENT, COLOUR_MATERIAL_DIFFUSE, COLOUR_MATERIAL_AMBIENT_AND_DIFFUSE }
 
enum  CullMode : EnumType { CULL_MODE_NONE, CULL_MODE_BACK_FACE, CULL_MODE_FRONT_FACE, CULL_MODE_FRONT_AND_BACK_FACE }
 
enum  BlendType : EnumType {
  BLEND_NONE, BLEND_ADD, BLEND_MODULATE, BLEND_COLOUR,
  BLEND_ALPHA, BLEND_ONE_ONE_MINUS_ALPHA
}
 
enum  DepthFunc : EnumType {
  DEPTH_FUNC_NEVER, DEPTH_FUNC_LESS, DEPTH_FUNC_LEQUAL, DEPTH_FUNC_EQUAL,
  DEPTH_FUNC_GEQUAL, DEPTH_FUNC_GREATER, DEPTH_FUNC_ALWAYS
}
 
enum  FogMode : EnumType { FOG_MODE_NONE, FOG_MODE_LINEAR, FOG_MODE_EXP, FOG_MODE_EXP2 }
 
enum  EnabledTexture : EnumType { DIFFUSE_MAP_ENABLED = 1, LIGHT_MAP_ENABLED = 2, NORMAL_MAP_ENABLED = 4, SPECULAR_MAP_ENABLED = 8 }
 
enum  MaterialPropertyType {
  MATERIAL_PROPERTY_TYPE_BOOL, MATERIAL_PROPERTY_TYPE_INT, MATERIAL_PROPERTY_TYPE_FLOAT, MATERIAL_PROPERTY_TYPE_VEC2,
  MATERIAL_PROPERTY_TYPE_VEC3, MATERIAL_PROPERTY_TYPE_VEC4, MATERIAL_PROPERTY_TYPE_MAT3, MATERIAL_PROPERTY_TYPE_MAT4,
  MATERIAL_PROPERTY_TYPE_TEXTURE
}
 
enum  EmitterType { PARTICLE_EMITTER_POINT, PARTICLE_EMITTER_BOX }
 
enum  ErrorCode {
  ERROR_CODE_SUCCESS = 0, ERROR_CODE_MUTEX_INIT_FAILED, ERROR_CODE_THREAD_SPAWN_FAILED, ERROR_CODE_THREAD_JOIN_FAILED,
  ERROR_CODE_SDL_INIT_FAILED, ERROR_CODE_INVALID_TYPE_ERROR, ERROR_CODE_MISSING_ASSET_ERROR, ERROR_CODE_AUDIO_SUBSYSTEM_ERROR
}
 
enum  TouchEventType { TOUCH_EVENT_TYPE_FINGER_DOWN, TOUCH_EVENT_TYPE_FINGER_UP, TOUCH_EVENT_TYPE_FINGER_MOVE }
 
enum  KeyEventType { KEY_EVENT_TYPE_KEY_DOWN, KEY_EVENT_TYPE_KEY_UP }
 
enum  GameControllerEventType { GAME_CONTROLLER_EVENT_TYPE_BUTTON_DOWN, GAME_CONTROLLER_EVENT_TYPE_BUTTON_UP }
 
enum  CharacterSet { CHARACTER_SET_LATIN }
 
enum  FontStyle { FONT_STYLE_NORMAL, FONT_STYLE_ITALIC }
 
enum  FontWeight { FONT_WEIGHT_LIGHT, FONT_WEIGHT_NORMAL, FONT_WEIGHT_BOLD, FONT_WEIGHT_BLACK }
 
enum  FrustumCorner {
  FRUSTUM_CORNER_BOTTOM_LEFT = 0, FRUSTUM_CORNER_BOTTOM_RIGHT, FRUSTUM_CORNER_TOP_RIGHT, FRUSTUM_CORNER_TOP_LEFT,
  FRUSTUM_CORNER_MAX
}
 
enum  FrustumClassification { FRUSTUM_CONTAINS_NONE = 0, FRUSTUM_CONTAINS_PARTIAL, FRUSTUM_CONTAINS_ALL }
 
enum  GarbageCollectMethod { GARBAGE_COLLECT_NEVER, GARBAGE_COLLECT_PERIODIC }
 
enum  DeadZoneBehaviour { DEAD_ZONE_BEHAVIOUR_NONE, DEAD_ZONE_BEHAVIOUR_AXIAL, DEAD_ZONE_BEHAVIOUR_RADIAL }
 
enum  AxisType {
  AXIS_TYPE_UNSET, AXIS_TYPE_KEYBOARD_KEY, AXIS_TYPE_MOUSE_BUTTON, AXIS_TYPE_MOUSE_AXIS,
  AXIS_TYPE_JOYSTICK_BUTTON, AXIS_TYPE_JOYSTICK_AXIS, AXIS_TYPE_JOYSTICK_HAT
}
 
enum  MouseAxis {
  MOUSE_AXIS_INVALID = -1, MOUSE_AXIS_0, MOUSE_AXIS_1, MOUSE_AXIS_2,
  MOUSE_AXIS_3, MOUSE_AXIS_MAX, MOUSE_AXIS_X = MOUSE_AXIS_0, MOUSE_AXIS_Y = MOUSE_AXIS_1
}
 
enum  JoystickAxis {
  JOYSTICK_AXIS_INVALID = -1, JOYSTICK_AXIS_0, JOYSTICK_AXIS_1, JOYSTICK_AXIS_2,
  JOYSTICK_AXIS_3, JOYSTICK_AXIS_4, JOYSTICK_AXIS_5, JOYSTICK_AXIS_6,
  JOYSTICK_AXIS_7, JOYSTICK_AXIS_MAX, JOYSTICK_AXIS_X = JOYSTICK_AXIS_0, JOYSTICK_AXIS_Y = JOYSTICK_AXIS_1,
  JOYSTICK_AXIS_XL = JOYSTICK_AXIS_0, JOYSTICK_AXIS_YL = JOYSTICK_AXIS_1, JOYSTICK_AXIS_XR = JOYSTICK_AXIS_2, JOYSTICK_AXIS_YR = JOYSTICK_AXIS_3,
  JOYSTICK_AXIS_LTRIGGER = JOYSTICK_AXIS_4, JOYSTICK_AXIS_RTRIGGER = JOYSTICK_AXIS_5
}
 
enum  JoystickHatAxis { JOYSTICK_HAT_AXIS_X, JOYSTICK_HAT_AXIS_Y }
 
enum  JoystickButton : int8_t {
  JOYSTICK_BUTTON_INVALID = -1, JOYSTICK_BUTTON_A, JOYSTICK_BUTTON_B, JOYSTICK_BUTTON_X,
  JOYSTICK_BUTTON_Y, JOYSTICK_BUTTON_BACK, JOYSTICK_BUTTON_GUIDE, JOYSTICK_BUTTON_START,
  JOYSTICK_BUTTON_LEFT_STICK, JOYSTICK_BUTTON_RIGHT_STICK, JOYSTICK_BUTTON_LEFT_SHOULDER, JOYSTICK_BUTTON_RIGHT_SHOULDER,
  JOYSTICK_BUTTON_DPAD_UP, JOYSTICK_BUTTON_DPAD_DOWN, JOYSTICK_BUTTON_DPAD_LEFT, JOYSTICK_BUTTON_DPAD_RIGHT,
  JOYSTICK_BUTTON_DPAD2_UP, JOYSTICK_BUTTON_DPAD2_DOWN, JOYSTICK_BUTTON_DPAD2_LEFT, JOYSTICK_BUTTON_DPAD2_RIGHT,
  JOYSTICK_BUTTON_MAX
}
 
enum  HatPosition {
  HAT_POSITION_CENTERED = 0, HAT_POSITION_UP = 1, HAT_POSITION_RIGHT = 2, HAT_POSITION_DOWN = 4,
  HAT_POSITION_LEFT = 8, HAT_POSITION_RIGHT_UP = HAT_POSITION_RIGHT | HAT_POSITION_UP, HAT_POSITION_RIGHT_DOWN = HAT_POSITION_RIGHT | HAT_POSITION_DOWN, HAT_POSITION_LEFT_UP = HAT_POSITION_LEFT | HAT_POSITION_UP,
  HAT_POSITION_LEFT_DOWN = HAT_POSITION_LEFT | HAT_POSITION_DOWN
}
 
enum  KeyboardLayout {
  KEYBOARD_LAYOUT_UK, KEYBOARD_LAYOUT_US, KEYBOARD_LAYOUT_JP, KEYBOARD_LAYOUT_DE,
  KEYBOARD_LAYOUT_FR, KEYBOARD_LAYOUT_IT, KEYBOARD_LAYOUT_ES, KEYBOARD_LAYOUT_MAX
}
 
enum  KeyboardCode {
  KEYBOARD_CODE_A = KBD_KEY_A, KEYBOARD_CODE_B = KBD_KEY_B, KEYBOARD_CODE_C = KBD_KEY_C, KEYBOARD_CODE_D = KBD_KEY_D,
  KEYBOARD_CODE_E = KBD_KEY_E, KEYBOARD_CODE_F = KBD_KEY_F, KEYBOARD_CODE_G = KBD_KEY_G, KEYBOARD_CODE_H = KBD_KEY_H,
  KEYBOARD_CODE_I = KBD_KEY_I, KEYBOARD_CODE_J = KBD_KEY_J, KEYBOARD_CODE_K = KBD_KEY_K, KEYBOARD_CODE_L = KBD_KEY_L,
  KEYBOARD_CODE_M = KBD_KEY_M, KEYBOARD_CODE_N = KBD_KEY_N, KEYBOARD_CODE_O = KBD_KEY_O, KEYBOARD_CODE_P = KBD_KEY_P,
  KEYBOARD_CODE_Q = KBD_KEY_Q, KEYBOARD_CODE_R = KBD_KEY_R, KEYBOARD_CODE_S = KBD_KEY_S, KEYBOARD_CODE_T = KBD_KEY_T,
  KEYBOARD_CODE_U = KBD_KEY_U, KEYBOARD_CODE_V = KBD_KEY_V, KEYBOARD_CODE_W = KBD_KEY_W, KEYBOARD_CODE_X = KBD_KEY_X,
  KEYBOARD_CODE_Y = KBD_KEY_Y, KEYBOARD_CODE_Z = KBD_KEY_Z, KEYBOARD_CODE_1 = KBD_KEY_1, KEYBOARD_CODE_2 = KBD_KEY_2,
  KEYBOARD_CODE_3 = KBD_KEY_3, KEYBOARD_CODE_4 = KBD_KEY_4, KEYBOARD_CODE_5 = KBD_KEY_5, KEYBOARD_CODE_6 = KBD_KEY_6,
  KEYBOARD_CODE_7 = KBD_KEY_7, KEYBOARD_CODE_8 = KBD_KEY_8, KEYBOARD_CODE_9 = KBD_KEY_9, KEYBOARD_CODE_0 = KBD_KEY_0,
  KEYBOARD_CODE_RETURN = KBD_KEY_ENTER, KEYBOARD_CODE_ESCAPE = KBD_KEY_ESCAPE, KEYBOARD_CODE_BACKSPACE = KBD_KEY_BACKSPACE, KEYBOARD_CODE_TAB = KBD_KEY_TAB,
  KEYBOARD_CODE_SPACE = KBD_KEY_SPACE, KEYBOARD_CODE_MINUS = KBD_KEY_MINUS, KEYBOARD_CODE_EQUALS = KBD_KEY_PLUS, KEYBOARD_CODE_LEFTBRACKET = KBD_KEY_LBRACKET,
  KEYBOARD_CODE_RIGHTBRACKET = KBD_KEY_RBRACKET, KEYBOARD_CODE_BACKSLASH = KBD_KEY_BACKSLASH, KEYBOARD_CODE_NONUSHASH = KBD_KEY_NONE, KEYBOARD_CODE_SEMICOLON = KBD_KEY_SEMICOLON,
  KEYBOARD_CODE_APOSTROPHE = KBD_KEY_QUOTE, KEYBOARD_CODE_GRAVE = KBD_KEY_TILDE, KEYBOARD_CODE_COMMA = KBD_KEY_COMMA, KEYBOARD_CODE_PERIOD = KBD_KEY_PERIOD,
  KEYBOARD_CODE_SLASH = KBD_KEY_SLASH, KEYBOARD_CODE_CAPSLOCK = KBD_KEY_CAPSLOCK, KEYBOARD_CODE_F1 = KBD_KEY_F1, KEYBOARD_CODE_F2 = KBD_KEY_F2,
  KEYBOARD_CODE_F3 = KBD_KEY_F3, KEYBOARD_CODE_F4 = KBD_KEY_F4, KEYBOARD_CODE_F5 = KBD_KEY_F5, KEYBOARD_CODE_F6 = KBD_KEY_F6,
  KEYBOARD_CODE_F7 = KBD_KEY_F7, KEYBOARD_CODE_F8 = KBD_KEY_F8, KEYBOARD_CODE_F9 = KBD_KEY_F9, KEYBOARD_CODE_F10 = KBD_KEY_F10,
  KEYBOARD_CODE_F11 = KBD_KEY_F11, KEYBOARD_CODE_F12 = KBD_KEY_F12, KEYBOARD_CODE_PRINTSCREEN = KBD_KEY_PRINT, KEYBOARD_CODE_SCROLLLOCK = KBD_KEY_SCRLOCK,
  KEYBOARD_CODE_PAUSE = KBD_KEY_PAUSE, KEYBOARD_CODE_INSERT = KBD_KEY_INSERT, KEYBOARD_CODE_HOME = KBD_KEY_HOME, KEYBOARD_CODE_PAGEUP = KBD_KEY_PGUP,
  KEYBOARD_CODE_DELETE = KBD_KEY_DEL, KEYBOARD_CODE_END = KBD_KEY_END, KEYBOARD_CODE_PAGEDOWN = KBD_KEY_PGDOWN, KEYBOARD_CODE_RIGHT = KBD_KEY_RIGHT,
  KEYBOARD_CODE_LEFT = KBD_KEY_LEFT, KEYBOARD_CODE_DOWN = KBD_KEY_DOWN, KEYBOARD_CODE_UP = KBD_KEY_UP, KEYBOARD_CODE_NUMLOCKCLEAR = KBD_KEY_PAD_NUMLOCK,
  KEYBOARD_CODE_KP_DIVIDE = KBD_KEY_PAD_DIVIDE, KEYBOARD_CODE_KP_MULTIPLY = KBD_KEY_PAD_MULTIPLY, KEYBOARD_CODE_KP_MINUS = KBD_KEY_PAD_MINUS, KEYBOARD_CODE_KP_PLUS = KBD_KEY_PAD_PLUS,
  KEYBOARD_CODE_KP_ENTER = KBD_KEY_PAD_ENTER, KEYBOARD_CODE_KP_1 = KBD_KEY_PAD_1, KEYBOARD_CODE_KP_2 = KBD_KEY_PAD_2, KEYBOARD_CODE_KP_3 = KBD_KEY_PAD_3,
  KEYBOARD_CODE_KP_4 = KBD_KEY_PAD_4, KEYBOARD_CODE_KP_5 = KBD_KEY_PAD_5, KEYBOARD_CODE_KP_6 = KBD_KEY_PAD_6, KEYBOARD_CODE_KP_7 = KBD_KEY_PAD_7,
  KEYBOARD_CODE_KP_8 = KBD_KEY_PAD_8, KEYBOARD_CODE_KP_9 = KBD_KEY_PAD_9, KEYBOARD_CODE_KP_0 = KBD_KEY_PAD_0, KEYBOARD_CODE_KP_PERIOD = KBD_KEY_PAD_PERIOD,
  KEYBOARD_CODE_NONUSBACKSLASH = KBD_KEY_NONE, KEYBOARD_CODE_APPLICATION = KBD_KEY_NONE, KEYBOARD_CODE_POWER = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALS = KBD_KEY_NONE,
  KEYBOARD_CODE_F13 = KBD_KEY_NONE, KEYBOARD_CODE_F14 = KBD_KEY_NONE, KEYBOARD_CODE_F15 = KBD_KEY_NONE, KEYBOARD_CODE_F16 = KBD_KEY_NONE,
  KEYBOARD_CODE_F17 = KBD_KEY_NONE, KEYBOARD_CODE_F18 = KBD_KEY_NONE, KEYBOARD_CODE_F19 = KBD_KEY_NONE, KEYBOARD_CODE_F20 = KBD_KEY_NONE,
  KEYBOARD_CODE_F21 = KBD_KEY_NONE, KEYBOARD_CODE_F22 = KBD_KEY_NONE, KEYBOARD_CODE_F23 = KBD_KEY_NONE, KEYBOARD_CODE_F24 = KBD_KEY_NONE,
  KEYBOARD_CODE_EXECUTE = KBD_KEY_NONE, KEYBOARD_CODE_HELP = KBD_KEY_NONE, KEYBOARD_CODE_MENU = KBD_KEY_NONE, KEYBOARD_CODE_SELECT = KBD_KEY_NONE,
  KEYBOARD_CODE_STOP = KBD_KEY_NONE, KEYBOARD_CODE_AGAIN = KBD_KEY_NONE, KEYBOARD_CODE_UNDO = KBD_KEY_NONE, KEYBOARD_CODE_CUT = KBD_KEY_NONE,
  KEYBOARD_CODE_COPY = KBD_KEY_NONE, KEYBOARD_CODE_PASTE = KBD_KEY_NONE, KEYBOARD_CODE_FIND = KBD_KEY_NONE, KEYBOARD_CODE_MUTE = KBD_KEY_NONE,
  KEYBOARD_CODE_VOLUMEUP = KBD_KEY_NONE, KEYBOARD_CODE_VOLUMEDOWN = KBD_KEY_NONE, KEYBOARD_CODE_KP_COMMA = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALSAS400 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL1 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL2 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL3 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL4 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL5 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL6 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL7 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL8 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL9 = KBD_KEY_NONE, KEYBOARD_CODE_LANG1 = KBD_KEY_NONE, KEYBOARD_CODE_LANG2 = KBD_KEY_NONE, KEYBOARD_CODE_LANG3 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG4 = KBD_KEY_NONE, KEYBOARD_CODE_LANG5 = KBD_KEY_NONE, KEYBOARD_CODE_LANG6 = KBD_KEY_NONE, KEYBOARD_CODE_LANG7 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG8 = KBD_KEY_NONE, KEYBOARD_CODE_LANG9 = KBD_KEY_NONE, KEYBOARD_CODE_ALTERASE = KBD_KEY_NONE, KEYBOARD_CODE_SYSREQ = KBD_KEY_NONE,
  KEYBOARD_CODE_CANCEL = KBD_KEY_NONE, KEYBOARD_CODE_CLEAR = KBD_KEY_NONE, KEYBOARD_CODE_PRIOR = KBD_KEY_NONE, KEYBOARD_CODE_RETURN2 = KBD_KEY_NONE,
  KEYBOARD_CODE_SEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_OUT = KBD_KEY_NONE, KEYBOARD_CODE_OPER = KBD_KEY_NONE, KEYBOARD_CODE_CLEARAGAIN = KBD_KEY_NONE,
  KEYBOARD_CODE_CRSEL = KBD_KEY_NONE, KEYBOARD_CODE_EXSEL = KBD_KEY_NONE, KEYBOARD_CODE_KP_00 = KBD_KEY_NONE, KEYBOARD_CODE_KP_000 = KBD_KEY_NONE,
  KEYBOARD_CODE_THOUSANDSSEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_DECIMALSEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_CURRENCYUNIT = KBD_KEY_NONE, KEYBOARD_CODE_CURRENCYSUBUNIT = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_LEFTPAREN = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTPAREN = KBD_KEY_NONE, KEYBOARD_CODE_KP_LEFTBRACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTBRACE = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_TAB = KBD_KEY_NONE, KEYBOARD_CODE_KP_BACKSPACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_A = KBD_KEY_NONE, KEYBOARD_CODE_KP_B = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_C = KBD_KEY_NONE, KEYBOARD_CODE_KP_D = KBD_KEY_NONE, KEYBOARD_CODE_KP_E = KBD_KEY_NONE, KEYBOARD_CODE_KP_F = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_XOR = KBD_KEY_NONE, KEYBOARD_CODE_KP_POWER = KBD_KEY_NONE, KEYBOARD_CODE_KP_PERCENT = KBD_KEY_NONE, KEYBOARD_CODE_KP_LESS = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_GREATER = KBD_KEY_NONE, KEYBOARD_CODE_KP_AMPERSAND = KBD_KEY_NONE, KEYBOARD_CODE_KP_DBLAMPERSAND = KBD_KEY_NONE, KEYBOARD_CODE_KP_VERTICALBAR = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_DBLVERTICALBAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_COLON = KBD_KEY_NONE, KEYBOARD_CODE_KP_HASH = KBD_KEY_NONE, KEYBOARD_CODE_KP_SPACE = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_AT = KBD_KEY_NONE, KEYBOARD_CODE_KP_EXCLAM = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMSTORE = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMRECALL = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMCLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMADD = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMSUBTRACT = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMMULTIPLY = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMDIVIDE = KBD_KEY_NONE, KEYBOARD_CODE_KP_PLUSMINUS = KBD_KEY_NONE, KEYBOARD_CODE_KP_CLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_CLEARENTRY = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_BINARY = KBD_KEY_NONE, KEYBOARD_CODE_KP_OCTAL = KBD_KEY_NONE, KEYBOARD_CODE_KP_DECIMAL = KBD_KEY_NONE, KEYBOARD_CODE_KP_HEXADECIMAL = KBD_KEY_NONE,
  KEYBOARD_CODE_LCTRL = KBD_KEY_NONE, KEYBOARD_CODE_LSHIFT = KBD_KEY_NONE, KEYBOARD_CODE_LALT = KBD_KEY_NONE, KEYBOARD_CODE_LGUI = KBD_KEY_NONE,
  KEYBOARD_CODE_RCTRL = KBD_KEY_NONE, KEYBOARD_CODE_RSHIFT = KBD_KEY_NONE, KEYBOARD_CODE_RALT = KBD_KEY_NONE, KEYBOARD_CODE_RGUI = KBD_KEY_NONE,
  KEYBOARD_CODE_MODE = KBD_KEY_NONE, KEYBOARD_CODE_AUDIONEXT = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOPREV = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOSTOP = KBD_KEY_NONE,
  KEYBOARD_CODE_AUDIOPLAY = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOMUTE = KBD_KEY_NONE, KEYBOARD_CODE_MEDIASELECT = KBD_KEY_NONE, KEYBOARD_CODE_WWW = KBD_KEY_NONE,
  KEYBOARD_CODE_MAIL = KBD_KEY_NONE, KEYBOARD_CODE_CALCULATOR = KBD_KEY_NONE, KEYBOARD_CODE_COMPUTER = KBD_KEY_NONE, KEYBOARD_CODE_AC_SEARCH = KBD_KEY_NONE,
  KEYBOARD_CODE_AC_HOME = KBD_KEY_NONE, KEYBOARD_CODE_AC_BACK = KBD_KEY_NONE, KEYBOARD_CODE_AC_FORWARD = KBD_KEY_NONE, KEYBOARD_CODE_AC_STOP = KBD_KEY_NONE,
  KEYBOARD_CODE_AC_REFRESH = KBD_KEY_NONE, KEYBOARD_CODE_AC_BOOKMARKS = KBD_KEY_NONE, KEYBOARD_CODE_BRIGHTNESSDOWN = KBD_KEY_NONE, KEYBOARD_CODE_BRIGHTNESSUP = KBD_KEY_NONE,
  KEYBOARD_CODE_DISPLAYSWITCH = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMTOGGLE = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMDOWN = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMUP = KBD_KEY_NONE,
  KEYBOARD_CODE_EJECT = KBD_KEY_NONE, KEYBOARD_CODE_SLEEP = KBD_KEY_NONE, KEYBOARD_CODE_APP1 = KBD_KEY_NONE, KEYBOARD_CODE_APP2 = KBD_KEY_NONE,
  MAX_KEYBOARD_CODES = 512, KEYBOARD_CODE_NONE = 0, KEYBOARD_CODE_A = KBD_KEY_A, KEYBOARD_CODE_B = KBD_KEY_B,
  KEYBOARD_CODE_C = KBD_KEY_C, KEYBOARD_CODE_D = KBD_KEY_D, KEYBOARD_CODE_E = KBD_KEY_E, KEYBOARD_CODE_F = KBD_KEY_F,
  KEYBOARD_CODE_G = KBD_KEY_G, KEYBOARD_CODE_H = KBD_KEY_H, KEYBOARD_CODE_I = KBD_KEY_I, KEYBOARD_CODE_J = KBD_KEY_J,
  KEYBOARD_CODE_K = KBD_KEY_K, KEYBOARD_CODE_L = KBD_KEY_L, KEYBOARD_CODE_M = KBD_KEY_M, KEYBOARD_CODE_N = KBD_KEY_N,
  KEYBOARD_CODE_O = KBD_KEY_O, KEYBOARD_CODE_P = KBD_KEY_P, KEYBOARD_CODE_Q = KBD_KEY_Q, KEYBOARD_CODE_R = KBD_KEY_R,
  KEYBOARD_CODE_S = KBD_KEY_S, KEYBOARD_CODE_T = KBD_KEY_T, KEYBOARD_CODE_U = KBD_KEY_U, KEYBOARD_CODE_V = KBD_KEY_V,
  KEYBOARD_CODE_W = KBD_KEY_W, KEYBOARD_CODE_X = KBD_KEY_X, KEYBOARD_CODE_Y = KBD_KEY_Y, KEYBOARD_CODE_Z = KBD_KEY_Z,
  KEYBOARD_CODE_1 = KBD_KEY_1, KEYBOARD_CODE_2 = KBD_KEY_2, KEYBOARD_CODE_3 = KBD_KEY_3, KEYBOARD_CODE_4 = KBD_KEY_4,
  KEYBOARD_CODE_5 = KBD_KEY_5, KEYBOARD_CODE_6 = KBD_KEY_6, KEYBOARD_CODE_7 = KBD_KEY_7, KEYBOARD_CODE_8 = KBD_KEY_8,
  KEYBOARD_CODE_9 = KBD_KEY_9, KEYBOARD_CODE_0 = KBD_KEY_0, KEYBOARD_CODE_RETURN = KBD_KEY_ENTER, KEYBOARD_CODE_ESCAPE = KBD_KEY_ESCAPE,
  KEYBOARD_CODE_BACKSPACE = KBD_KEY_BACKSPACE, KEYBOARD_CODE_TAB = KBD_KEY_TAB, KEYBOARD_CODE_SPACE = KBD_KEY_SPACE, KEYBOARD_CODE_MINUS = KBD_KEY_MINUS,
  KEYBOARD_CODE_EQUALS = KBD_KEY_PLUS, KEYBOARD_CODE_LEFTBRACKET = KBD_KEY_LBRACKET, KEYBOARD_CODE_RIGHTBRACKET = KBD_KEY_RBRACKET, KEYBOARD_CODE_BACKSLASH = KBD_KEY_BACKSLASH,
  KEYBOARD_CODE_NONUSHASH = KBD_KEY_NONE, KEYBOARD_CODE_SEMICOLON = KBD_KEY_SEMICOLON, KEYBOARD_CODE_APOSTROPHE = KBD_KEY_QUOTE, KEYBOARD_CODE_GRAVE = KBD_KEY_TILDE,
  KEYBOARD_CODE_COMMA = KBD_KEY_COMMA, KEYBOARD_CODE_PERIOD = KBD_KEY_PERIOD, KEYBOARD_CODE_SLASH = KBD_KEY_SLASH, KEYBOARD_CODE_CAPSLOCK = KBD_KEY_CAPSLOCK,
  KEYBOARD_CODE_F1 = KBD_KEY_F1, KEYBOARD_CODE_F2 = KBD_KEY_F2, KEYBOARD_CODE_F3 = KBD_KEY_F3, KEYBOARD_CODE_F4 = KBD_KEY_F4,
  KEYBOARD_CODE_F5 = KBD_KEY_F5, KEYBOARD_CODE_F6 = KBD_KEY_F6, KEYBOARD_CODE_F7 = KBD_KEY_F7, KEYBOARD_CODE_F8 = KBD_KEY_F8,
  KEYBOARD_CODE_F9 = KBD_KEY_F9, KEYBOARD_CODE_F10 = KBD_KEY_F10, KEYBOARD_CODE_F11 = KBD_KEY_F11, KEYBOARD_CODE_F12 = KBD_KEY_F12,
  KEYBOARD_CODE_PRINTSCREEN = KBD_KEY_PRINT, KEYBOARD_CODE_SCROLLLOCK = KBD_KEY_SCRLOCK, KEYBOARD_CODE_PAUSE = KBD_KEY_PAUSE, KEYBOARD_CODE_INSERT = KBD_KEY_INSERT,
  KEYBOARD_CODE_HOME = KBD_KEY_HOME, KEYBOARD_CODE_PAGEUP = KBD_KEY_PGUP, KEYBOARD_CODE_DELETE = KBD_KEY_DEL, KEYBOARD_CODE_END = KBD_KEY_END,
  KEYBOARD_CODE_PAGEDOWN = KBD_KEY_PGDOWN, KEYBOARD_CODE_RIGHT = KBD_KEY_RIGHT, KEYBOARD_CODE_LEFT = KBD_KEY_LEFT, KEYBOARD_CODE_DOWN = KBD_KEY_DOWN,
  KEYBOARD_CODE_UP = KBD_KEY_UP, KEYBOARD_CODE_NUMLOCKCLEAR = KBD_KEY_PAD_NUMLOCK, KEYBOARD_CODE_KP_DIVIDE = KBD_KEY_PAD_DIVIDE, KEYBOARD_CODE_KP_MULTIPLY = KBD_KEY_PAD_MULTIPLY,
  KEYBOARD_CODE_KP_MINUS = KBD_KEY_PAD_MINUS, KEYBOARD_CODE_KP_PLUS = KBD_KEY_PAD_PLUS, KEYBOARD_CODE_KP_ENTER = KBD_KEY_PAD_ENTER, KEYBOARD_CODE_KP_1 = KBD_KEY_PAD_1,
  KEYBOARD_CODE_KP_2 = KBD_KEY_PAD_2, KEYBOARD_CODE_KP_3 = KBD_KEY_PAD_3, KEYBOARD_CODE_KP_4 = KBD_KEY_PAD_4, KEYBOARD_CODE_KP_5 = KBD_KEY_PAD_5,
  KEYBOARD_CODE_KP_6 = KBD_KEY_PAD_6, KEYBOARD_CODE_KP_7 = KBD_KEY_PAD_7, KEYBOARD_CODE_KP_8 = KBD_KEY_PAD_8, KEYBOARD_CODE_KP_9 = KBD_KEY_PAD_9,
  KEYBOARD_CODE_KP_0 = KBD_KEY_PAD_0, KEYBOARD_CODE_KP_PERIOD = KBD_KEY_PAD_PERIOD, KEYBOARD_CODE_NONUSBACKSLASH = KBD_KEY_NONE, KEYBOARD_CODE_APPLICATION = KBD_KEY_NONE,
  KEYBOARD_CODE_POWER = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALS = KBD_KEY_NONE, KEYBOARD_CODE_F13 = KBD_KEY_NONE, KEYBOARD_CODE_F14 = KBD_KEY_NONE,
  KEYBOARD_CODE_F15 = KBD_KEY_NONE, KEYBOARD_CODE_F16 = KBD_KEY_NONE, KEYBOARD_CODE_F17 = KBD_KEY_NONE, KEYBOARD_CODE_F18 = KBD_KEY_NONE,
  KEYBOARD_CODE_F19 = KBD_KEY_NONE, KEYBOARD_CODE_F20 = KBD_KEY_NONE, KEYBOARD_CODE_F21 = KBD_KEY_NONE, KEYBOARD_CODE_F22 = KBD_KEY_NONE,
  KEYBOARD_CODE_F23 = KBD_KEY_NONE, KEYBOARD_CODE_F24 = KBD_KEY_NONE, KEYBOARD_CODE_EXECUTE = KBD_KEY_NONE, KEYBOARD_CODE_HELP = KBD_KEY_NONE,
  KEYBOARD_CODE_MENU = KBD_KEY_NONE, KEYBOARD_CODE_SELECT = KBD_KEY_NONE, KEYBOARD_CODE_STOP = KBD_KEY_NONE, KEYBOARD_CODE_AGAIN = KBD_KEY_NONE,
  KEYBOARD_CODE_UNDO = KBD_KEY_NONE, KEYBOARD_CODE_CUT = KBD_KEY_NONE, KEYBOARD_CODE_COPY = KBD_KEY_NONE, KEYBOARD_CODE_PASTE = KBD_KEY_NONE,
  KEYBOARD_CODE_FIND = KBD_KEY_NONE, KEYBOARD_CODE_MUTE = KBD_KEY_NONE, KEYBOARD_CODE_VOLUMEUP = KBD_KEY_NONE, KEYBOARD_CODE_VOLUMEDOWN = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_COMMA = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALSAS400 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL1 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL2 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL3 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL4 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL5 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL6 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL7 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL8 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL9 = KBD_KEY_NONE, KEYBOARD_CODE_LANG1 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG2 = KBD_KEY_NONE, KEYBOARD_CODE_LANG3 = KBD_KEY_NONE, KEYBOARD_CODE_LANG4 = KBD_KEY_NONE, KEYBOARD_CODE_LANG5 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG6 = KBD_KEY_NONE, KEYBOARD_CODE_LANG7 = KBD_KEY_NONE, KEYBOARD_CODE_LANG8 = KBD_KEY_NONE, KEYBOARD_CODE_LANG9 = KBD_KEY_NONE,
  KEYBOARD_CODE_ALTERASE = KBD_KEY_NONE, KEYBOARD_CODE_SYSREQ = KBD_KEY_NONE, KEYBOARD_CODE_CANCEL = KBD_KEY_NONE, KEYBOARD_CODE_CLEAR = KBD_KEY_NONE,
  KEYBOARD_CODE_PRIOR = KBD_KEY_NONE, KEYBOARD_CODE_RETURN2 = KBD_KEY_NONE, KEYBOARD_CODE_SEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_OUT = KBD_KEY_NONE,
  KEYBOARD_CODE_OPER = KBD_KEY_NONE, KEYBOARD_CODE_CLEARAGAIN = KBD_KEY_NONE, KEYBOARD_CODE_CRSEL = KBD_KEY_NONE, KEYBOARD_CODE_EXSEL = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_00 = KBD_KEY_NONE, KEYBOARD_CODE_KP_000 = KBD_KEY_NONE, KEYBOARD_CODE_THOUSANDSSEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_DECIMALSEPARATOR = KBD_KEY_NONE,
  KEYBOARD_CODE_CURRENCYUNIT = KBD_KEY_NONE, KEYBOARD_CODE_CURRENCYSUBUNIT = KBD_KEY_NONE, KEYBOARD_CODE_KP_LEFTPAREN = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTPAREN = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_LEFTBRACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTBRACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_TAB = KBD_KEY_NONE, KEYBOARD_CODE_KP_BACKSPACE = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_A = KBD_KEY_NONE, KEYBOARD_CODE_KP_B = KBD_KEY_NONE, KEYBOARD_CODE_KP_C = KBD_KEY_NONE, KEYBOARD_CODE_KP_D = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_E = KBD_KEY_NONE, KEYBOARD_CODE_KP_F = KBD_KEY_NONE, KEYBOARD_CODE_KP_XOR = KBD_KEY_NONE, KEYBOARD_CODE_KP_POWER = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_PERCENT = KBD_KEY_NONE, KEYBOARD_CODE_KP_LESS = KBD_KEY_NONE, KEYBOARD_CODE_KP_GREATER = KBD_KEY_NONE, KEYBOARD_CODE_KP_AMPERSAND = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_DBLAMPERSAND = KBD_KEY_NONE, KEYBOARD_CODE_KP_VERTICALBAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_DBLVERTICALBAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_COLON = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_HASH = KBD_KEY_NONE, KEYBOARD_CODE_KP_SPACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_AT = KBD_KEY_NONE, KEYBOARD_CODE_KP_EXCLAM = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMSTORE = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMRECALL = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMCLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMADD = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMSUBTRACT = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMMULTIPLY = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMDIVIDE = KBD_KEY_NONE, KEYBOARD_CODE_KP_PLUSMINUS = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_CLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_CLEARENTRY = KBD_KEY_NONE, KEYBOARD_CODE_KP_BINARY = KBD_KEY_NONE, KEYBOARD_CODE_KP_OCTAL = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_DECIMAL = KBD_KEY_NONE, KEYBOARD_CODE_KP_HEXADECIMAL = KBD_KEY_NONE, KEYBOARD_CODE_LCTRL = KBD_KEY_NONE, KEYBOARD_CODE_LSHIFT = KBD_KEY_NONE,
  KEYBOARD_CODE_LALT = KBD_KEY_NONE, KEYBOARD_CODE_LGUI = KBD_KEY_NONE, KEYBOARD_CODE_RCTRL = KBD_KEY_NONE, KEYBOARD_CODE_RSHIFT = KBD_KEY_NONE,
  KEYBOARD_CODE_RALT = KBD_KEY_NONE, KEYBOARD_CODE_RGUI = KBD_KEY_NONE, KEYBOARD_CODE_MODE = KBD_KEY_NONE, KEYBOARD_CODE_AUDIONEXT = KBD_KEY_NONE,
  KEYBOARD_CODE_AUDIOPREV = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOSTOP = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOPLAY = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOMUTE = KBD_KEY_NONE,
  KEYBOARD_CODE_MEDIASELECT = KBD_KEY_NONE, KEYBOARD_CODE_WWW = KBD_KEY_NONE, KEYBOARD_CODE_MAIL = KBD_KEY_NONE, KEYBOARD_CODE_CALCULATOR = KBD_KEY_NONE,
  KEYBOARD_CODE_COMPUTER = KBD_KEY_NONE, KEYBOARD_CODE_AC_SEARCH = KBD_KEY_NONE, KEYBOARD_CODE_AC_HOME = KBD_KEY_NONE, KEYBOARD_CODE_AC_BACK = KBD_KEY_NONE,
  KEYBOARD_CODE_AC_FORWARD = KBD_KEY_NONE, KEYBOARD_CODE_AC_STOP = KBD_KEY_NONE, KEYBOARD_CODE_AC_REFRESH = KBD_KEY_NONE, KEYBOARD_CODE_AC_BOOKMARKS = KBD_KEY_NONE,
  KEYBOARD_CODE_BRIGHTNESSDOWN = KBD_KEY_NONE, KEYBOARD_CODE_BRIGHTNESSUP = KBD_KEY_NONE, KEYBOARD_CODE_DISPLAYSWITCH = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMTOGGLE = KBD_KEY_NONE,
  KEYBOARD_CODE_KBDILLUMDOWN = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMUP = KBD_KEY_NONE, KEYBOARD_CODE_EJECT = KBD_KEY_NONE, KEYBOARD_CODE_SLEEP = KBD_KEY_NONE,
  KEYBOARD_CODE_APP1 = KBD_KEY_NONE, KEYBOARD_CODE_APP2 = KBD_KEY_NONE, MAX_KEYBOARD_CODES = 512, KEYBOARD_CODE_NONE = 0,
  KEYBOARD_CODE_A = KBD_KEY_A, KEYBOARD_CODE_B = KBD_KEY_B, KEYBOARD_CODE_C = KBD_KEY_C, KEYBOARD_CODE_D = KBD_KEY_D,
  KEYBOARD_CODE_E = KBD_KEY_E, KEYBOARD_CODE_F = KBD_KEY_F, KEYBOARD_CODE_G = KBD_KEY_G, KEYBOARD_CODE_H = KBD_KEY_H,
  KEYBOARD_CODE_I = KBD_KEY_I, KEYBOARD_CODE_J = KBD_KEY_J, KEYBOARD_CODE_K = KBD_KEY_K, KEYBOARD_CODE_L = KBD_KEY_L,
  KEYBOARD_CODE_M = KBD_KEY_M, KEYBOARD_CODE_N = KBD_KEY_N, KEYBOARD_CODE_O = KBD_KEY_O, KEYBOARD_CODE_P = KBD_KEY_P,
  KEYBOARD_CODE_Q = KBD_KEY_Q, KEYBOARD_CODE_R = KBD_KEY_R, KEYBOARD_CODE_S = KBD_KEY_S, KEYBOARD_CODE_T = KBD_KEY_T,
  KEYBOARD_CODE_U = KBD_KEY_U, KEYBOARD_CODE_V = KBD_KEY_V, KEYBOARD_CODE_W = KBD_KEY_W, KEYBOARD_CODE_X = KBD_KEY_X,
  KEYBOARD_CODE_Y = KBD_KEY_Y, KEYBOARD_CODE_Z = KBD_KEY_Z, KEYBOARD_CODE_1 = KBD_KEY_1, KEYBOARD_CODE_2 = KBD_KEY_2,
  KEYBOARD_CODE_3 = KBD_KEY_3, KEYBOARD_CODE_4 = KBD_KEY_4, KEYBOARD_CODE_5 = KBD_KEY_5, KEYBOARD_CODE_6 = KBD_KEY_6,
  KEYBOARD_CODE_7 = KBD_KEY_7, KEYBOARD_CODE_8 = KBD_KEY_8, KEYBOARD_CODE_9 = KBD_KEY_9, KEYBOARD_CODE_0 = KBD_KEY_0,
  KEYBOARD_CODE_RETURN = KBD_KEY_ENTER, KEYBOARD_CODE_ESCAPE = KBD_KEY_ESCAPE, KEYBOARD_CODE_BACKSPACE = KBD_KEY_BACKSPACE, KEYBOARD_CODE_TAB = KBD_KEY_TAB,
  KEYBOARD_CODE_SPACE = KBD_KEY_SPACE, KEYBOARD_CODE_MINUS = KBD_KEY_MINUS, KEYBOARD_CODE_EQUALS = KBD_KEY_PLUS, KEYBOARD_CODE_LEFTBRACKET = KBD_KEY_LBRACKET,
  KEYBOARD_CODE_RIGHTBRACKET = KBD_KEY_RBRACKET, KEYBOARD_CODE_BACKSLASH = KBD_KEY_BACKSLASH, KEYBOARD_CODE_NONUSHASH = KBD_KEY_NONE, KEYBOARD_CODE_SEMICOLON = KBD_KEY_SEMICOLON,
  KEYBOARD_CODE_APOSTROPHE = KBD_KEY_QUOTE, KEYBOARD_CODE_GRAVE = KBD_KEY_TILDE, KEYBOARD_CODE_COMMA = KBD_KEY_COMMA, KEYBOARD_CODE_PERIOD = KBD_KEY_PERIOD,
  KEYBOARD_CODE_SLASH = KBD_KEY_SLASH, KEYBOARD_CODE_CAPSLOCK = KBD_KEY_CAPSLOCK, KEYBOARD_CODE_F1 = KBD_KEY_F1, KEYBOARD_CODE_F2 = KBD_KEY_F2,
  KEYBOARD_CODE_F3 = KBD_KEY_F3, KEYBOARD_CODE_F4 = KBD_KEY_F4, KEYBOARD_CODE_F5 = KBD_KEY_F5, KEYBOARD_CODE_F6 = KBD_KEY_F6,
  KEYBOARD_CODE_F7 = KBD_KEY_F7, KEYBOARD_CODE_F8 = KBD_KEY_F8, KEYBOARD_CODE_F9 = KBD_KEY_F9, KEYBOARD_CODE_F10 = KBD_KEY_F10,
  KEYBOARD_CODE_F11 = KBD_KEY_F11, KEYBOARD_CODE_F12 = KBD_KEY_F12, KEYBOARD_CODE_PRINTSCREEN = KBD_KEY_PRINT, KEYBOARD_CODE_SCROLLLOCK = KBD_KEY_SCRLOCK,
  KEYBOARD_CODE_PAUSE = KBD_KEY_PAUSE, KEYBOARD_CODE_INSERT = KBD_KEY_INSERT, KEYBOARD_CODE_HOME = KBD_KEY_HOME, KEYBOARD_CODE_PAGEUP = KBD_KEY_PGUP,
  KEYBOARD_CODE_DELETE = KBD_KEY_DEL, KEYBOARD_CODE_END = KBD_KEY_END, KEYBOARD_CODE_PAGEDOWN = KBD_KEY_PGDOWN, KEYBOARD_CODE_RIGHT = KBD_KEY_RIGHT,
  KEYBOARD_CODE_LEFT = KBD_KEY_LEFT, KEYBOARD_CODE_DOWN = KBD_KEY_DOWN, KEYBOARD_CODE_UP = KBD_KEY_UP, KEYBOARD_CODE_NUMLOCKCLEAR = KBD_KEY_PAD_NUMLOCK,
  KEYBOARD_CODE_KP_DIVIDE = KBD_KEY_PAD_DIVIDE, KEYBOARD_CODE_KP_MULTIPLY = KBD_KEY_PAD_MULTIPLY, KEYBOARD_CODE_KP_MINUS = KBD_KEY_PAD_MINUS, KEYBOARD_CODE_KP_PLUS = KBD_KEY_PAD_PLUS,
  KEYBOARD_CODE_KP_ENTER = KBD_KEY_PAD_ENTER, KEYBOARD_CODE_KP_1 = KBD_KEY_PAD_1, KEYBOARD_CODE_KP_2 = KBD_KEY_PAD_2, KEYBOARD_CODE_KP_3 = KBD_KEY_PAD_3,
  KEYBOARD_CODE_KP_4 = KBD_KEY_PAD_4, KEYBOARD_CODE_KP_5 = KBD_KEY_PAD_5, KEYBOARD_CODE_KP_6 = KBD_KEY_PAD_6, KEYBOARD_CODE_KP_7 = KBD_KEY_PAD_7,
  KEYBOARD_CODE_KP_8 = KBD_KEY_PAD_8, KEYBOARD_CODE_KP_9 = KBD_KEY_PAD_9, KEYBOARD_CODE_KP_0 = KBD_KEY_PAD_0, KEYBOARD_CODE_KP_PERIOD = KBD_KEY_PAD_PERIOD,
  KEYBOARD_CODE_NONUSBACKSLASH = KBD_KEY_NONE, KEYBOARD_CODE_APPLICATION = KBD_KEY_NONE, KEYBOARD_CODE_POWER = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALS = KBD_KEY_NONE,
  KEYBOARD_CODE_F13 = KBD_KEY_NONE, KEYBOARD_CODE_F14 = KBD_KEY_NONE, KEYBOARD_CODE_F15 = KBD_KEY_NONE, KEYBOARD_CODE_F16 = KBD_KEY_NONE,
  KEYBOARD_CODE_F17 = KBD_KEY_NONE, KEYBOARD_CODE_F18 = KBD_KEY_NONE, KEYBOARD_CODE_F19 = KBD_KEY_NONE, KEYBOARD_CODE_F20 = KBD_KEY_NONE,
  KEYBOARD_CODE_F21 = KBD_KEY_NONE, KEYBOARD_CODE_F22 = KBD_KEY_NONE, KEYBOARD_CODE_F23 = KBD_KEY_NONE, KEYBOARD_CODE_F24 = KBD_KEY_NONE,
  KEYBOARD_CODE_EXECUTE = KBD_KEY_NONE, KEYBOARD_CODE_HELP = KBD_KEY_NONE, KEYBOARD_CODE_MENU = KBD_KEY_NONE, KEYBOARD_CODE_SELECT = KBD_KEY_NONE,
  KEYBOARD_CODE_STOP = KBD_KEY_NONE, KEYBOARD_CODE_AGAIN = KBD_KEY_NONE, KEYBOARD_CODE_UNDO = KBD_KEY_NONE, KEYBOARD_CODE_CUT = KBD_KEY_NONE,
  KEYBOARD_CODE_COPY = KBD_KEY_NONE, KEYBOARD_CODE_PASTE = KBD_KEY_NONE, KEYBOARD_CODE_FIND = KBD_KEY_NONE, KEYBOARD_CODE_MUTE = KBD_KEY_NONE,
  KEYBOARD_CODE_VOLUMEUP = KBD_KEY_NONE, KEYBOARD_CODE_VOLUMEDOWN = KBD_KEY_NONE, KEYBOARD_CODE_KP_COMMA = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALSAS400 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL1 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL2 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL3 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL4 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL5 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL6 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL7 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL8 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL9 = KBD_KEY_NONE, KEYBOARD_CODE_LANG1 = KBD_KEY_NONE, KEYBOARD_CODE_LANG2 = KBD_KEY_NONE, KEYBOARD_CODE_LANG3 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG4 = KBD_KEY_NONE, KEYBOARD_CODE_LANG5 = KBD_KEY_NONE, KEYBOARD_CODE_LANG6 = KBD_KEY_NONE, KEYBOARD_CODE_LANG7 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG8 = KBD_KEY_NONE, KEYBOARD_CODE_LANG9 = KBD_KEY_NONE, KEYBOARD_CODE_ALTERASE = KBD_KEY_NONE, KEYBOARD_CODE_SYSREQ = KBD_KEY_NONE,
  KEYBOARD_CODE_CANCEL = KBD_KEY_NONE, KEYBOARD_CODE_CLEAR = KBD_KEY_NONE, KEYBOARD_CODE_PRIOR = KBD_KEY_NONE, KEYBOARD_CODE_RETURN2 = KBD_KEY_NONE,
  KEYBOARD_CODE_SEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_OUT = KBD_KEY_NONE, KEYBOARD_CODE_OPER = KBD_KEY_NONE, KEYBOARD_CODE_CLEARAGAIN = KBD_KEY_NONE,
  KEYBOARD_CODE_CRSEL = KBD_KEY_NONE, KEYBOARD_CODE_EXSEL = KBD_KEY_NONE, KEYBOARD_CODE_KP_00 = KBD_KEY_NONE, KEYBOARD_CODE_KP_000 = KBD_KEY_NONE,
  KEYBOARD_CODE_THOUSANDSSEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_DECIMALSEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_CURRENCYUNIT = KBD_KEY_NONE, KEYBOARD_CODE_CURRENCYSUBUNIT = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_LEFTPAREN = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTPAREN = KBD_KEY_NONE, KEYBOARD_CODE_KP_LEFTBRACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTBRACE = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_TAB = KBD_KEY_NONE, KEYBOARD_CODE_KP_BACKSPACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_A = KBD_KEY_NONE, KEYBOARD_CODE_KP_B = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_C = KBD_KEY_NONE, KEYBOARD_CODE_KP_D = KBD_KEY_NONE, KEYBOARD_CODE_KP_E = KBD_KEY_NONE, KEYBOARD_CODE_KP_F = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_XOR = KBD_KEY_NONE, KEYBOARD_CODE_KP_POWER = KBD_KEY_NONE, KEYBOARD_CODE_KP_PERCENT = KBD_KEY_NONE, KEYBOARD_CODE_KP_LESS = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_GREATER = KBD_KEY_NONE, KEYBOARD_CODE_KP_AMPERSAND = KBD_KEY_NONE, KEYBOARD_CODE_KP_DBLAMPERSAND = KBD_KEY_NONE, KEYBOARD_CODE_KP_VERTICALBAR = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_DBLVERTICALBAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_COLON = KBD_KEY_NONE, KEYBOARD_CODE_KP_HASH = KBD_KEY_NONE, KEYBOARD_CODE_KP_SPACE = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_AT = KBD_KEY_NONE, KEYBOARD_CODE_KP_EXCLAM = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMSTORE = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMRECALL = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMCLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMADD = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMSUBTRACT = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMMULTIPLY = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMDIVIDE = KBD_KEY_NONE, KEYBOARD_CODE_KP_PLUSMINUS = KBD_KEY_NONE, KEYBOARD_CODE_KP_CLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_CLEARENTRY = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_BINARY = KBD_KEY_NONE, KEYBOARD_CODE_KP_OCTAL = KBD_KEY_NONE, KEYBOARD_CODE_KP_DECIMAL = KBD_KEY_NONE, KEYBOARD_CODE_KP_HEXADECIMAL = KBD_KEY_NONE,
  KEYBOARD_CODE_LCTRL = KBD_KEY_NONE, KEYBOARD_CODE_LSHIFT = KBD_KEY_NONE, KEYBOARD_CODE_LALT = KBD_KEY_NONE, KEYBOARD_CODE_LGUI = KBD_KEY_NONE,
  KEYBOARD_CODE_RCTRL = KBD_KEY_NONE, KEYBOARD_CODE_RSHIFT = KBD_KEY_NONE, KEYBOARD_CODE_RALT = KBD_KEY_NONE, KEYBOARD_CODE_RGUI = KBD_KEY_NONE,
  KEYBOARD_CODE_MODE = KBD_KEY_NONE, KEYBOARD_CODE_AUDIONEXT = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOPREV = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOSTOP = KBD_KEY_NONE,
  KEYBOARD_CODE_AUDIOPLAY = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOMUTE = KBD_KEY_NONE, KEYBOARD_CODE_MEDIASELECT = KBD_KEY_NONE, KEYBOARD_CODE_WWW = KBD_KEY_NONE,
  KEYBOARD_CODE_MAIL = KBD_KEY_NONE, KEYBOARD_CODE_CALCULATOR = KBD_KEY_NONE, KEYBOARD_CODE_COMPUTER = KBD_KEY_NONE, KEYBOARD_CODE_AC_SEARCH = KBD_KEY_NONE,
  KEYBOARD_CODE_AC_HOME = KBD_KEY_NONE, KEYBOARD_CODE_AC_BACK = KBD_KEY_NONE, KEYBOARD_CODE_AC_FORWARD = KBD_KEY_NONE, KEYBOARD_CODE_AC_STOP = KBD_KEY_NONE,
  KEYBOARD_CODE_AC_REFRESH = KBD_KEY_NONE, KEYBOARD_CODE_AC_BOOKMARKS = KBD_KEY_NONE, KEYBOARD_CODE_BRIGHTNESSDOWN = KBD_KEY_NONE, KEYBOARD_CODE_BRIGHTNESSUP = KBD_KEY_NONE,
  KEYBOARD_CODE_DISPLAYSWITCH = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMTOGGLE = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMDOWN = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMUP = KBD_KEY_NONE,
  KEYBOARD_CODE_EJECT = KBD_KEY_NONE, KEYBOARD_CODE_SLEEP = KBD_KEY_NONE, KEYBOARD_CODE_APP1 = KBD_KEY_NONE, KEYBOARD_CODE_APP2 = KBD_KEY_NONE,
  MAX_KEYBOARD_CODES = 512, KEYBOARD_CODE_NONE = 0, KEYBOARD_CODE_A = KBD_KEY_A, KEYBOARD_CODE_B = KBD_KEY_B,
  KEYBOARD_CODE_C = KBD_KEY_C, KEYBOARD_CODE_D = KBD_KEY_D, KEYBOARD_CODE_E = KBD_KEY_E, KEYBOARD_CODE_F = KBD_KEY_F,
  KEYBOARD_CODE_G = KBD_KEY_G, KEYBOARD_CODE_H = KBD_KEY_H, KEYBOARD_CODE_I = KBD_KEY_I, KEYBOARD_CODE_J = KBD_KEY_J,
  KEYBOARD_CODE_K = KBD_KEY_K, KEYBOARD_CODE_L = KBD_KEY_L, KEYBOARD_CODE_M = KBD_KEY_M, KEYBOARD_CODE_N = KBD_KEY_N,
  KEYBOARD_CODE_O = KBD_KEY_O, KEYBOARD_CODE_P = KBD_KEY_P, KEYBOARD_CODE_Q = KBD_KEY_Q, KEYBOARD_CODE_R = KBD_KEY_R,
  KEYBOARD_CODE_S = KBD_KEY_S, KEYBOARD_CODE_T = KBD_KEY_T, KEYBOARD_CODE_U = KBD_KEY_U, KEYBOARD_CODE_V = KBD_KEY_V,
  KEYBOARD_CODE_W = KBD_KEY_W, KEYBOARD_CODE_X = KBD_KEY_X, KEYBOARD_CODE_Y = KBD_KEY_Y, KEYBOARD_CODE_Z = KBD_KEY_Z,
  KEYBOARD_CODE_1 = KBD_KEY_1, KEYBOARD_CODE_2 = KBD_KEY_2, KEYBOARD_CODE_3 = KBD_KEY_3, KEYBOARD_CODE_4 = KBD_KEY_4,
  KEYBOARD_CODE_5 = KBD_KEY_5, KEYBOARD_CODE_6 = KBD_KEY_6, KEYBOARD_CODE_7 = KBD_KEY_7, KEYBOARD_CODE_8 = KBD_KEY_8,
  KEYBOARD_CODE_9 = KBD_KEY_9, KEYBOARD_CODE_0 = KBD_KEY_0, KEYBOARD_CODE_RETURN = KBD_KEY_ENTER, KEYBOARD_CODE_ESCAPE = KBD_KEY_ESCAPE,
  KEYBOARD_CODE_BACKSPACE = KBD_KEY_BACKSPACE, KEYBOARD_CODE_TAB = KBD_KEY_TAB, KEYBOARD_CODE_SPACE = KBD_KEY_SPACE, KEYBOARD_CODE_MINUS = KBD_KEY_MINUS,
  KEYBOARD_CODE_EQUALS = KBD_KEY_PLUS, KEYBOARD_CODE_LEFTBRACKET = KBD_KEY_LBRACKET, KEYBOARD_CODE_RIGHTBRACKET = KBD_KEY_RBRACKET, KEYBOARD_CODE_BACKSLASH = KBD_KEY_BACKSLASH,
  KEYBOARD_CODE_NONUSHASH = KBD_KEY_NONE, KEYBOARD_CODE_SEMICOLON = KBD_KEY_SEMICOLON, KEYBOARD_CODE_APOSTROPHE = KBD_KEY_QUOTE, KEYBOARD_CODE_GRAVE = KBD_KEY_TILDE,
  KEYBOARD_CODE_COMMA = KBD_KEY_COMMA, KEYBOARD_CODE_PERIOD = KBD_KEY_PERIOD, KEYBOARD_CODE_SLASH = KBD_KEY_SLASH, KEYBOARD_CODE_CAPSLOCK = KBD_KEY_CAPSLOCK,
  KEYBOARD_CODE_F1 = KBD_KEY_F1, KEYBOARD_CODE_F2 = KBD_KEY_F2, KEYBOARD_CODE_F3 = KBD_KEY_F3, KEYBOARD_CODE_F4 = KBD_KEY_F4,
  KEYBOARD_CODE_F5 = KBD_KEY_F5, KEYBOARD_CODE_F6 = KBD_KEY_F6, KEYBOARD_CODE_F7 = KBD_KEY_F7, KEYBOARD_CODE_F8 = KBD_KEY_F8,
  KEYBOARD_CODE_F9 = KBD_KEY_F9, KEYBOARD_CODE_F10 = KBD_KEY_F10, KEYBOARD_CODE_F11 = KBD_KEY_F11, KEYBOARD_CODE_F12 = KBD_KEY_F12,
  KEYBOARD_CODE_PRINTSCREEN = KBD_KEY_PRINT, KEYBOARD_CODE_SCROLLLOCK = KBD_KEY_SCRLOCK, KEYBOARD_CODE_PAUSE = KBD_KEY_PAUSE, KEYBOARD_CODE_INSERT = KBD_KEY_INSERT,
  KEYBOARD_CODE_HOME = KBD_KEY_HOME, KEYBOARD_CODE_PAGEUP = KBD_KEY_PGUP, KEYBOARD_CODE_DELETE = KBD_KEY_DEL, KEYBOARD_CODE_END = KBD_KEY_END,
  KEYBOARD_CODE_PAGEDOWN = KBD_KEY_PGDOWN, KEYBOARD_CODE_RIGHT = KBD_KEY_RIGHT, KEYBOARD_CODE_LEFT = KBD_KEY_LEFT, KEYBOARD_CODE_DOWN = KBD_KEY_DOWN,
  KEYBOARD_CODE_UP = KBD_KEY_UP, KEYBOARD_CODE_NUMLOCKCLEAR = KBD_KEY_PAD_NUMLOCK, KEYBOARD_CODE_KP_DIVIDE = KBD_KEY_PAD_DIVIDE, KEYBOARD_CODE_KP_MULTIPLY = KBD_KEY_PAD_MULTIPLY,
  KEYBOARD_CODE_KP_MINUS = KBD_KEY_PAD_MINUS, KEYBOARD_CODE_KP_PLUS = KBD_KEY_PAD_PLUS, KEYBOARD_CODE_KP_ENTER = KBD_KEY_PAD_ENTER, KEYBOARD_CODE_KP_1 = KBD_KEY_PAD_1,
  KEYBOARD_CODE_KP_2 = KBD_KEY_PAD_2, KEYBOARD_CODE_KP_3 = KBD_KEY_PAD_3, KEYBOARD_CODE_KP_4 = KBD_KEY_PAD_4, KEYBOARD_CODE_KP_5 = KBD_KEY_PAD_5,
  KEYBOARD_CODE_KP_6 = KBD_KEY_PAD_6, KEYBOARD_CODE_KP_7 = KBD_KEY_PAD_7, KEYBOARD_CODE_KP_8 = KBD_KEY_PAD_8, KEYBOARD_CODE_KP_9 = KBD_KEY_PAD_9,
  KEYBOARD_CODE_KP_0 = KBD_KEY_PAD_0, KEYBOARD_CODE_KP_PERIOD = KBD_KEY_PAD_PERIOD, KEYBOARD_CODE_NONUSBACKSLASH = KBD_KEY_NONE, KEYBOARD_CODE_APPLICATION = KBD_KEY_NONE,
  KEYBOARD_CODE_POWER = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALS = KBD_KEY_NONE, KEYBOARD_CODE_F13 = KBD_KEY_NONE, KEYBOARD_CODE_F14 = KBD_KEY_NONE,
  KEYBOARD_CODE_F15 = KBD_KEY_NONE, KEYBOARD_CODE_F16 = KBD_KEY_NONE, KEYBOARD_CODE_F17 = KBD_KEY_NONE, KEYBOARD_CODE_F18 = KBD_KEY_NONE,
  KEYBOARD_CODE_F19 = KBD_KEY_NONE, KEYBOARD_CODE_F20 = KBD_KEY_NONE, KEYBOARD_CODE_F21 = KBD_KEY_NONE, KEYBOARD_CODE_F22 = KBD_KEY_NONE,
  KEYBOARD_CODE_F23 = KBD_KEY_NONE, KEYBOARD_CODE_F24 = KBD_KEY_NONE, KEYBOARD_CODE_EXECUTE = KBD_KEY_NONE, KEYBOARD_CODE_HELP = KBD_KEY_NONE,
  KEYBOARD_CODE_MENU = KBD_KEY_NONE, KEYBOARD_CODE_SELECT = KBD_KEY_NONE, KEYBOARD_CODE_STOP = KBD_KEY_NONE, KEYBOARD_CODE_AGAIN = KBD_KEY_NONE,
  KEYBOARD_CODE_UNDO = KBD_KEY_NONE, KEYBOARD_CODE_CUT = KBD_KEY_NONE, KEYBOARD_CODE_COPY = KBD_KEY_NONE, KEYBOARD_CODE_PASTE = KBD_KEY_NONE,
  KEYBOARD_CODE_FIND = KBD_KEY_NONE, KEYBOARD_CODE_MUTE = KBD_KEY_NONE, KEYBOARD_CODE_VOLUMEUP = KBD_KEY_NONE, KEYBOARD_CODE_VOLUMEDOWN = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_COMMA = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALSAS400 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL1 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL2 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL3 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL4 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL5 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL6 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL7 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL8 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL9 = KBD_KEY_NONE, KEYBOARD_CODE_LANG1 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG2 = KBD_KEY_NONE, KEYBOARD_CODE_LANG3 = KBD_KEY_NONE, KEYBOARD_CODE_LANG4 = KBD_KEY_NONE, KEYBOARD_CODE_LANG5 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG6 = KBD_KEY_NONE, KEYBOARD_CODE_LANG7 = KBD_KEY_NONE, KEYBOARD_CODE_LANG8 = KBD_KEY_NONE, KEYBOARD_CODE_LANG9 = KBD_KEY_NONE,
  KEYBOARD_CODE_ALTERASE = KBD_KEY_NONE, KEYBOARD_CODE_SYSREQ = KBD_KEY_NONE, KEYBOARD_CODE_CANCEL = KBD_KEY_NONE, KEYBOARD_CODE_CLEAR = KBD_KEY_NONE,
  KEYBOARD_CODE_PRIOR = KBD_KEY_NONE, KEYBOARD_CODE_RETURN2 = KBD_KEY_NONE, KEYBOARD_CODE_SEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_OUT = KBD_KEY_NONE,
  KEYBOARD_CODE_OPER = KBD_KEY_NONE, KEYBOARD_CODE_CLEARAGAIN = KBD_KEY_NONE, KEYBOARD_CODE_CRSEL = KBD_KEY_NONE, KEYBOARD_CODE_EXSEL = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_00 = KBD_KEY_NONE, KEYBOARD_CODE_KP_000 = KBD_KEY_NONE, KEYBOARD_CODE_THOUSANDSSEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_DECIMALSEPARATOR = KBD_KEY_NONE,
  KEYBOARD_CODE_CURRENCYUNIT = KBD_KEY_NONE, KEYBOARD_CODE_CURRENCYSUBUNIT = KBD_KEY_NONE, KEYBOARD_CODE_KP_LEFTPAREN = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTPAREN = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_LEFTBRACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTBRACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_TAB = KBD_KEY_NONE, KEYBOARD_CODE_KP_BACKSPACE = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_A = KBD_KEY_NONE, KEYBOARD_CODE_KP_B = KBD_KEY_NONE, KEYBOARD_CODE_KP_C = KBD_KEY_NONE, KEYBOARD_CODE_KP_D = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_E = KBD_KEY_NONE, KEYBOARD_CODE_KP_F = KBD_KEY_NONE, KEYBOARD_CODE_KP_XOR = KBD_KEY_NONE, KEYBOARD_CODE_KP_POWER = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_PERCENT = KBD_KEY_NONE, KEYBOARD_CODE_KP_LESS = KBD_KEY_NONE, KEYBOARD_CODE_KP_GREATER = KBD_KEY_NONE, KEYBOARD_CODE_KP_AMPERSAND = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_DBLAMPERSAND = KBD_KEY_NONE, KEYBOARD_CODE_KP_VERTICALBAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_DBLVERTICALBAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_COLON = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_HASH = KBD_KEY_NONE, KEYBOARD_CODE_KP_SPACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_AT = KBD_KEY_NONE, KEYBOARD_CODE_KP_EXCLAM = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMSTORE = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMRECALL = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMCLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMADD = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMSUBTRACT = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMMULTIPLY = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMDIVIDE = KBD_KEY_NONE, KEYBOARD_CODE_KP_PLUSMINUS = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_CLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_CLEARENTRY = KBD_KEY_NONE, KEYBOARD_CODE_KP_BINARY = KBD_KEY_NONE, KEYBOARD_CODE_KP_OCTAL = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_DECIMAL = KBD_KEY_NONE, KEYBOARD_CODE_KP_HEXADECIMAL = KBD_KEY_NONE, KEYBOARD_CODE_LCTRL = KBD_KEY_NONE, KEYBOARD_CODE_LSHIFT = KBD_KEY_NONE,
  KEYBOARD_CODE_LALT = KBD_KEY_NONE, KEYBOARD_CODE_LGUI = KBD_KEY_NONE, KEYBOARD_CODE_RCTRL = KBD_KEY_NONE, KEYBOARD_CODE_RSHIFT = KBD_KEY_NONE,
  KEYBOARD_CODE_RALT = KBD_KEY_NONE, KEYBOARD_CODE_RGUI = KBD_KEY_NONE, KEYBOARD_CODE_MODE = KBD_KEY_NONE, KEYBOARD_CODE_AUDIONEXT = KBD_KEY_NONE,
  KEYBOARD_CODE_AUDIOPREV = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOSTOP = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOPLAY = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOMUTE = KBD_KEY_NONE,
  KEYBOARD_CODE_MEDIASELECT = KBD_KEY_NONE, KEYBOARD_CODE_WWW = KBD_KEY_NONE, KEYBOARD_CODE_MAIL = KBD_KEY_NONE, KEYBOARD_CODE_CALCULATOR = KBD_KEY_NONE,
  KEYBOARD_CODE_COMPUTER = KBD_KEY_NONE, KEYBOARD_CODE_AC_SEARCH = KBD_KEY_NONE, KEYBOARD_CODE_AC_HOME = KBD_KEY_NONE, KEYBOARD_CODE_AC_BACK = KBD_KEY_NONE,
  KEYBOARD_CODE_AC_FORWARD = KBD_KEY_NONE, KEYBOARD_CODE_AC_STOP = KBD_KEY_NONE, KEYBOARD_CODE_AC_REFRESH = KBD_KEY_NONE, KEYBOARD_CODE_AC_BOOKMARKS = KBD_KEY_NONE,
  KEYBOARD_CODE_BRIGHTNESSDOWN = KBD_KEY_NONE, KEYBOARD_CODE_BRIGHTNESSUP = KBD_KEY_NONE, KEYBOARD_CODE_DISPLAYSWITCH = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMTOGGLE = KBD_KEY_NONE,
  KEYBOARD_CODE_KBDILLUMDOWN = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMUP = KBD_KEY_NONE, KEYBOARD_CODE_EJECT = KBD_KEY_NONE, KEYBOARD_CODE_SLEEP = KBD_KEY_NONE,
  KEYBOARD_CODE_APP1 = KBD_KEY_NONE, KEYBOARD_CODE_APP2 = KBD_KEY_NONE, MAX_KEYBOARD_CODES = 512, KEYBOARD_CODE_NONE = 0
}
 
enum  LoaderHint { LOADER_HINT_NONE = 0, LOADER_HINT_TEXTURE, LOADER_HINT_MESH }
 
enum  LogLevel {
  LOG_LEVEL_NONE = 0, LOG_LEVEL_ERROR = 1, LOG_LEVEL_WARN = 2, LOG_LEVEL_INFO = 3,
  LOG_LEVEL_DEBUG = 4, LOG_LEVEL_VERBOSE = 5
}
 
enum  ShaderAvailableAttributes {
  SP_ATTR_VERTEX_POSITION, SP_ATTR_VERTEX_NORMAL, SP_ATTR_VERTEX_TEXCOORD0, SP_ATTR_VERTEX_TEXCOORD1,
  SP_ATTR_VERTEX_TEXCOORD2, SP_ATTR_VERTEX_TEXCOORD3, SP_ATTR_VERTEX_DIFFUSE, SP_ATTR_VERTEX_SPECULAR
}
 
enum  ShaderAvailableAuto {
  SP_AUTO_MODELVIEW_PROJECTION_MATRIX, SP_AUTO_VIEW_MATRIX, SP_AUTO_MODELVIEW_MATRIX, SP_AUTO_PROJECTION_MATRIX,
  SP_AUTO_INVERSE_TRANSPOSE_MODELVIEW_MATRIX, SP_AUTO_MATERIAL_DIFFUSE, SP_AUTO_MATERIAL_SPECULAR, SP_AUTO_MATERIAL_AMBIENT,
  SP_AUTO_MATERIAL_SHININESS, SP_AUTO_MATERIAL_TEX_MATRIX0, SP_AUTO_MATERIAL_TEX_MATRIX1, SP_AUTO_MATERIAL_TEX_MATRIX2,
  SP_AUTO_MATERIAL_TEX_MATRIX3, SP_AUTO_MATERIAL_TEX_MATRIX4, SP_AUTO_MATERIAL_TEX_MATRIX5, SP_AUTO_MATERIAL_TEX_MATRIX6,
  SP_AUTO_MATERIAL_TEX_MATRIX7, SP_AUTO_MATERIAL_ACTIVE_TEXTURE_UNITS, SP_AUTO_MATERIAL_POINT_SIZE, SP_AUTO_LIGHT_GLOBAL_AMBIENT,
  SP_AUTO_LIGHT_POSITION, SP_AUTO_LIGHT_DIRECTION, SP_AUTO_LIGHT_DIFFUSE, SP_AUTO_LIGHT_SPECULAR,
  SP_AUTO_LIGHT_AMBIENT, SP_AUTO_LIGHT_CONSTANT_ATTENUATION, SP_AUTO_LIGHT_LINEAR_ATTENUATION, SP_AUTO_LIGHT_QUADRATIC_ATTENUATION,
  SP_AUTO_LIGHTS_GLOBAL_AMBIENT, SP_AUTO_LIGHTS_POSITION, SP_AUTO_LIGHTS_DIRECTION, SP_AUTO_LIGHTS_DIFFUSE,
  SP_AUTO_LIGHTS_SPECULAR, SP_AUTO_LIGHTS_AMBIENT, SP_AUTO_LIGHTS_CONSTANT_ATTENUATION, SP_AUTO_LIGHTS_LINEAR_ATTENUATION,
  SP_AUTO_LIGHTS_QUADRATIC_ATTENUATION, SP_AUTO_LIGHT_COUNT
}
 
enum  AABBCorner {
  AABB_CORNER_NEG_X_NEG_Y_NEG_Z = 0, AABB_CORNER_POS_X_NEG_Y_NEG_Z = 1, AABB_CORNER_POS_X_NEG_Y_POS_Z = 2, AABB_CORNER_NEG_X_NEG_Y_POS_Z = 3,
  AABB_CORNER_NEG_X_POS_Y_NEG_Z = 4, AABB_CORNER_POS_X_POS_Y_NEG_Z = 5, AABB_CORNER_POS_X_POS_Y_POS_Z = 6, AABB_CORNER_NEG_X_POS_Y_POS_Z = 7
}
 
enum  FrustumPlane {
  FRUSTUM_PLANE_LEFT = 0, FRUSTUM_PLANE_RIGHT, FRUSTUM_PLANE_BOTTOM, FRUSTUM_PLANE_TOP,
  FRUSTUM_PLANE_NEAR, FRUSTUM_PLANE_FAR, FRUSTUM_PLANE_MAX
}
 
enum  PlaneClassification { PLANE_CLASSIFICATION_IS_BEHIND_PLANE, PLANE_CLASSIFICATION_IS_ON_PLANE, PLANE_CLASSIFICATION_IS_IN_FRONT_OF_PLANE }
 
enum  MeshAnimationType { MESH_ANIMATION_TYPE_NONE, MESH_ANIMATION_TYPE_VERTEX_MORPH, MESH_ANIMATION_TYPE_SKELETAL }
 
enum  MaterialSlot : uint8_t {
  MATERIAL_SLOT0 = 0, MATERIAL_SLOT1, MATERIAL_SLOT2, MATERIAL_SLOT3,
  MATERIAL_SLOT4, MATERIAL_SLOT5, MATERIAL_SLOT6, MATERIAL_SLOT7,
  MATERIAL_SLOT_MAX
}
 
enum  SubmeshType { SUBMESH_TYPE_INDEXED, SUBMESH_TYPE_RANGED }
 
enum  GeomCullerType { GEOM_CULLER_TYPE_OCTREE, GEOM_CULLER_TYPE_QUADTREE }
 
enum  SkyboxFace {
  SKYBOX_FACE_TOP, SKYBOX_FACE_BOTTOM, SKYBOX_FACE_LEFT, SKYBOX_FACE_RIGHT,
  SKYBOX_FACE_FRONT, SKYBOX_FACE_BACK, SKYBOX_FACE_MAX
}
 
enum  DetailLevel {
  DETAIL_LEVEL_NEAREST = 0, DETAIL_LEVEL_NEAR, DETAIL_LEVEL_MID, DETAIL_LEVEL_FAR,
  DETAIL_LEVEL_FARTHEST, DETAIL_LEVEL_MAX
}
 
enum  StageNodeType {
  STAGE_NODE_TYPE_STAGE, STAGE_NODE_TYPE_CAMERA, STAGE_NODE_TYPE_ACTOR, STAGE_NODE_TYPE_LIGHT,
  STAGE_NODE_TYPE_PARTICLE_SYSTEM, STAGE_NODE_TYPE_GEOM, STAGE_NODE_TYPE_MESH_INSTANCER, STAGE_NODE_TYPE_OTHER
}
 
enum  WriteOperation { WRITE_OPERATION_ADD, WRITE_OPERATION_UPDATE, WRITE_OPERATION_REMOVE, WRITE_OPERATION_MAX }
 
enum  PartitionerEntryType { PARTITIONER_ENTRY_TYPE_LIGHT, PARTITIONER_ENTRY_TYPE_ACTOR, PARTITIONER_ENTRY_TYPE_GEOM, PARTITIONER_ENTRY_TYPE_PARTICLE_SYSTEM }
 
enum  KeyboardCode {
  KEYBOARD_CODE_A = KBD_KEY_A, KEYBOARD_CODE_B = KBD_KEY_B, KEYBOARD_CODE_C = KBD_KEY_C, KEYBOARD_CODE_D = KBD_KEY_D,
  KEYBOARD_CODE_E = KBD_KEY_E, KEYBOARD_CODE_F = KBD_KEY_F, KEYBOARD_CODE_G = KBD_KEY_G, KEYBOARD_CODE_H = KBD_KEY_H,
  KEYBOARD_CODE_I = KBD_KEY_I, KEYBOARD_CODE_J = KBD_KEY_J, KEYBOARD_CODE_K = KBD_KEY_K, KEYBOARD_CODE_L = KBD_KEY_L,
  KEYBOARD_CODE_M = KBD_KEY_M, KEYBOARD_CODE_N = KBD_KEY_N, KEYBOARD_CODE_O = KBD_KEY_O, KEYBOARD_CODE_P = KBD_KEY_P,
  KEYBOARD_CODE_Q = KBD_KEY_Q, KEYBOARD_CODE_R = KBD_KEY_R, KEYBOARD_CODE_S = KBD_KEY_S, KEYBOARD_CODE_T = KBD_KEY_T,
  KEYBOARD_CODE_U = KBD_KEY_U, KEYBOARD_CODE_V = KBD_KEY_V, KEYBOARD_CODE_W = KBD_KEY_W, KEYBOARD_CODE_X = KBD_KEY_X,
  KEYBOARD_CODE_Y = KBD_KEY_Y, KEYBOARD_CODE_Z = KBD_KEY_Z, KEYBOARD_CODE_1 = KBD_KEY_1, KEYBOARD_CODE_2 = KBD_KEY_2,
  KEYBOARD_CODE_3 = KBD_KEY_3, KEYBOARD_CODE_4 = KBD_KEY_4, KEYBOARD_CODE_5 = KBD_KEY_5, KEYBOARD_CODE_6 = KBD_KEY_6,
  KEYBOARD_CODE_7 = KBD_KEY_7, KEYBOARD_CODE_8 = KBD_KEY_8, KEYBOARD_CODE_9 = KBD_KEY_9, KEYBOARD_CODE_0 = KBD_KEY_0,
  KEYBOARD_CODE_RETURN = KBD_KEY_ENTER, KEYBOARD_CODE_ESCAPE = KBD_KEY_ESCAPE, KEYBOARD_CODE_BACKSPACE = KBD_KEY_BACKSPACE, KEYBOARD_CODE_TAB = KBD_KEY_TAB,
  KEYBOARD_CODE_SPACE = KBD_KEY_SPACE, KEYBOARD_CODE_MINUS = KBD_KEY_MINUS, KEYBOARD_CODE_EQUALS = KBD_KEY_PLUS, KEYBOARD_CODE_LEFTBRACKET = KBD_KEY_LBRACKET,
  KEYBOARD_CODE_RIGHTBRACKET = KBD_KEY_RBRACKET, KEYBOARD_CODE_BACKSLASH = KBD_KEY_BACKSLASH, KEYBOARD_CODE_NONUSHASH = KBD_KEY_NONE, KEYBOARD_CODE_SEMICOLON = KBD_KEY_SEMICOLON,
  KEYBOARD_CODE_APOSTROPHE = KBD_KEY_QUOTE, KEYBOARD_CODE_GRAVE = KBD_KEY_TILDE, KEYBOARD_CODE_COMMA = KBD_KEY_COMMA, KEYBOARD_CODE_PERIOD = KBD_KEY_PERIOD,
  KEYBOARD_CODE_SLASH = KBD_KEY_SLASH, KEYBOARD_CODE_CAPSLOCK = KBD_KEY_CAPSLOCK, KEYBOARD_CODE_F1 = KBD_KEY_F1, KEYBOARD_CODE_F2 = KBD_KEY_F2,
  KEYBOARD_CODE_F3 = KBD_KEY_F3, KEYBOARD_CODE_F4 = KBD_KEY_F4, KEYBOARD_CODE_F5 = KBD_KEY_F5, KEYBOARD_CODE_F6 = KBD_KEY_F6,
  KEYBOARD_CODE_F7 = KBD_KEY_F7, KEYBOARD_CODE_F8 = KBD_KEY_F8, KEYBOARD_CODE_F9 = KBD_KEY_F9, KEYBOARD_CODE_F10 = KBD_KEY_F10,
  KEYBOARD_CODE_F11 = KBD_KEY_F11, KEYBOARD_CODE_F12 = KBD_KEY_F12, KEYBOARD_CODE_PRINTSCREEN = KBD_KEY_PRINT, KEYBOARD_CODE_SCROLLLOCK = KBD_KEY_SCRLOCK,
  KEYBOARD_CODE_PAUSE = KBD_KEY_PAUSE, KEYBOARD_CODE_INSERT = KBD_KEY_INSERT, KEYBOARD_CODE_HOME = KBD_KEY_HOME, KEYBOARD_CODE_PAGEUP = KBD_KEY_PGUP,
  KEYBOARD_CODE_DELETE = KBD_KEY_DEL, KEYBOARD_CODE_END = KBD_KEY_END, KEYBOARD_CODE_PAGEDOWN = KBD_KEY_PGDOWN, KEYBOARD_CODE_RIGHT = KBD_KEY_RIGHT,
  KEYBOARD_CODE_LEFT = KBD_KEY_LEFT, KEYBOARD_CODE_DOWN = KBD_KEY_DOWN, KEYBOARD_CODE_UP = KBD_KEY_UP, KEYBOARD_CODE_NUMLOCKCLEAR = KBD_KEY_PAD_NUMLOCK,
  KEYBOARD_CODE_KP_DIVIDE = KBD_KEY_PAD_DIVIDE, KEYBOARD_CODE_KP_MULTIPLY = KBD_KEY_PAD_MULTIPLY, KEYBOARD_CODE_KP_MINUS = KBD_KEY_PAD_MINUS, KEYBOARD_CODE_KP_PLUS = KBD_KEY_PAD_PLUS,
  KEYBOARD_CODE_KP_ENTER = KBD_KEY_PAD_ENTER, KEYBOARD_CODE_KP_1 = KBD_KEY_PAD_1, KEYBOARD_CODE_KP_2 = KBD_KEY_PAD_2, KEYBOARD_CODE_KP_3 = KBD_KEY_PAD_3,
  KEYBOARD_CODE_KP_4 = KBD_KEY_PAD_4, KEYBOARD_CODE_KP_5 = KBD_KEY_PAD_5, KEYBOARD_CODE_KP_6 = KBD_KEY_PAD_6, KEYBOARD_CODE_KP_7 = KBD_KEY_PAD_7,
  KEYBOARD_CODE_KP_8 = KBD_KEY_PAD_8, KEYBOARD_CODE_KP_9 = KBD_KEY_PAD_9, KEYBOARD_CODE_KP_0 = KBD_KEY_PAD_0, KEYBOARD_CODE_KP_PERIOD = KBD_KEY_PAD_PERIOD,
  KEYBOARD_CODE_NONUSBACKSLASH = KBD_KEY_NONE, KEYBOARD_CODE_APPLICATION = KBD_KEY_NONE, KEYBOARD_CODE_POWER = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALS = KBD_KEY_NONE,
  KEYBOARD_CODE_F13 = KBD_KEY_NONE, KEYBOARD_CODE_F14 = KBD_KEY_NONE, KEYBOARD_CODE_F15 = KBD_KEY_NONE, KEYBOARD_CODE_F16 = KBD_KEY_NONE,
  KEYBOARD_CODE_F17 = KBD_KEY_NONE, KEYBOARD_CODE_F18 = KBD_KEY_NONE, KEYBOARD_CODE_F19 = KBD_KEY_NONE, KEYBOARD_CODE_F20 = KBD_KEY_NONE,
  KEYBOARD_CODE_F21 = KBD_KEY_NONE, KEYBOARD_CODE_F22 = KBD_KEY_NONE, KEYBOARD_CODE_F23 = KBD_KEY_NONE, KEYBOARD_CODE_F24 = KBD_KEY_NONE,
  KEYBOARD_CODE_EXECUTE = KBD_KEY_NONE, KEYBOARD_CODE_HELP = KBD_KEY_NONE, KEYBOARD_CODE_MENU = KBD_KEY_NONE, KEYBOARD_CODE_SELECT = KBD_KEY_NONE,
  KEYBOARD_CODE_STOP = KBD_KEY_NONE, KEYBOARD_CODE_AGAIN = KBD_KEY_NONE, KEYBOARD_CODE_UNDO = KBD_KEY_NONE, KEYBOARD_CODE_CUT = KBD_KEY_NONE,
  KEYBOARD_CODE_COPY = KBD_KEY_NONE, KEYBOARD_CODE_PASTE = KBD_KEY_NONE, KEYBOARD_CODE_FIND = KBD_KEY_NONE, KEYBOARD_CODE_MUTE = KBD_KEY_NONE,
  KEYBOARD_CODE_VOLUMEUP = KBD_KEY_NONE, KEYBOARD_CODE_VOLUMEDOWN = KBD_KEY_NONE, KEYBOARD_CODE_KP_COMMA = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALSAS400 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL1 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL2 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL3 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL4 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL5 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL6 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL7 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL8 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL9 = KBD_KEY_NONE, KEYBOARD_CODE_LANG1 = KBD_KEY_NONE, KEYBOARD_CODE_LANG2 = KBD_KEY_NONE, KEYBOARD_CODE_LANG3 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG4 = KBD_KEY_NONE, KEYBOARD_CODE_LANG5 = KBD_KEY_NONE, KEYBOARD_CODE_LANG6 = KBD_KEY_NONE, KEYBOARD_CODE_LANG7 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG8 = KBD_KEY_NONE, KEYBOARD_CODE_LANG9 = KBD_KEY_NONE, KEYBOARD_CODE_ALTERASE = KBD_KEY_NONE, KEYBOARD_CODE_SYSREQ = KBD_KEY_NONE,
  KEYBOARD_CODE_CANCEL = KBD_KEY_NONE, KEYBOARD_CODE_CLEAR = KBD_KEY_NONE, KEYBOARD_CODE_PRIOR = KBD_KEY_NONE, KEYBOARD_CODE_RETURN2 = KBD_KEY_NONE,
  KEYBOARD_CODE_SEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_OUT = KBD_KEY_NONE, KEYBOARD_CODE_OPER = KBD_KEY_NONE, KEYBOARD_CODE_CLEARAGAIN = KBD_KEY_NONE,
  KEYBOARD_CODE_CRSEL = KBD_KEY_NONE, KEYBOARD_CODE_EXSEL = KBD_KEY_NONE, KEYBOARD_CODE_KP_00 = KBD_KEY_NONE, KEYBOARD_CODE_KP_000 = KBD_KEY_NONE,
  KEYBOARD_CODE_THOUSANDSSEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_DECIMALSEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_CURRENCYUNIT = KBD_KEY_NONE, KEYBOARD_CODE_CURRENCYSUBUNIT = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_LEFTPAREN = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTPAREN = KBD_KEY_NONE, KEYBOARD_CODE_KP_LEFTBRACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTBRACE = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_TAB = KBD_KEY_NONE, KEYBOARD_CODE_KP_BACKSPACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_A = KBD_KEY_NONE, KEYBOARD_CODE_KP_B = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_C = KBD_KEY_NONE, KEYBOARD_CODE_KP_D = KBD_KEY_NONE, KEYBOARD_CODE_KP_E = KBD_KEY_NONE, KEYBOARD_CODE_KP_F = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_XOR = KBD_KEY_NONE, KEYBOARD_CODE_KP_POWER = KBD_KEY_NONE, KEYBOARD_CODE_KP_PERCENT = KBD_KEY_NONE, KEYBOARD_CODE_KP_LESS = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_GREATER = KBD_KEY_NONE, KEYBOARD_CODE_KP_AMPERSAND = KBD_KEY_NONE, KEYBOARD_CODE_KP_DBLAMPERSAND = KBD_KEY_NONE, KEYBOARD_CODE_KP_VERTICALBAR = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_DBLVERTICALBAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_COLON = KBD_KEY_NONE, KEYBOARD_CODE_KP_HASH = KBD_KEY_NONE, KEYBOARD_CODE_KP_SPACE = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_AT = KBD_KEY_NONE, KEYBOARD_CODE_KP_EXCLAM = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMSTORE = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMRECALL = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMCLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMADD = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMSUBTRACT = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMMULTIPLY = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMDIVIDE = KBD_KEY_NONE, KEYBOARD_CODE_KP_PLUSMINUS = KBD_KEY_NONE, KEYBOARD_CODE_KP_CLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_CLEARENTRY = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_BINARY = KBD_KEY_NONE, KEYBOARD_CODE_KP_OCTAL = KBD_KEY_NONE, KEYBOARD_CODE_KP_DECIMAL = KBD_KEY_NONE, KEYBOARD_CODE_KP_HEXADECIMAL = KBD_KEY_NONE,
  KEYBOARD_CODE_LCTRL = KBD_KEY_NONE, KEYBOARD_CODE_LSHIFT = KBD_KEY_NONE, KEYBOARD_CODE_LALT = KBD_KEY_NONE, KEYBOARD_CODE_LGUI = KBD_KEY_NONE,
  KEYBOARD_CODE_RCTRL = KBD_KEY_NONE, KEYBOARD_CODE_RSHIFT = KBD_KEY_NONE, KEYBOARD_CODE_RALT = KBD_KEY_NONE, KEYBOARD_CODE_RGUI = KBD_KEY_NONE,
  KEYBOARD_CODE_MODE = KBD_KEY_NONE, KEYBOARD_CODE_AUDIONEXT = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOPREV = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOSTOP = KBD_KEY_NONE,
  KEYBOARD_CODE_AUDIOPLAY = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOMUTE = KBD_KEY_NONE, KEYBOARD_CODE_MEDIASELECT = KBD_KEY_NONE, KEYBOARD_CODE_WWW = KBD_KEY_NONE,
  KEYBOARD_CODE_MAIL = KBD_KEY_NONE, KEYBOARD_CODE_CALCULATOR = KBD_KEY_NONE, KEYBOARD_CODE_COMPUTER = KBD_KEY_NONE, KEYBOARD_CODE_AC_SEARCH = KBD_KEY_NONE,
  KEYBOARD_CODE_AC_HOME = KBD_KEY_NONE, KEYBOARD_CODE_AC_BACK = KBD_KEY_NONE, KEYBOARD_CODE_AC_FORWARD = KBD_KEY_NONE, KEYBOARD_CODE_AC_STOP = KBD_KEY_NONE,
  KEYBOARD_CODE_AC_REFRESH = KBD_KEY_NONE, KEYBOARD_CODE_AC_BOOKMARKS = KBD_KEY_NONE, KEYBOARD_CODE_BRIGHTNESSDOWN = KBD_KEY_NONE, KEYBOARD_CODE_BRIGHTNESSUP = KBD_KEY_NONE,
  KEYBOARD_CODE_DISPLAYSWITCH = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMTOGGLE = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMDOWN = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMUP = KBD_KEY_NONE,
  KEYBOARD_CODE_EJECT = KBD_KEY_NONE, KEYBOARD_CODE_SLEEP = KBD_KEY_NONE, KEYBOARD_CODE_APP1 = KBD_KEY_NONE, KEYBOARD_CODE_APP2 = KBD_KEY_NONE,
  MAX_KEYBOARD_CODES = 512, KEYBOARD_CODE_NONE = 0, KEYBOARD_CODE_A = KBD_KEY_A, KEYBOARD_CODE_B = KBD_KEY_B,
  KEYBOARD_CODE_C = KBD_KEY_C, KEYBOARD_CODE_D = KBD_KEY_D, KEYBOARD_CODE_E = KBD_KEY_E, KEYBOARD_CODE_F = KBD_KEY_F,
  KEYBOARD_CODE_G = KBD_KEY_G, KEYBOARD_CODE_H = KBD_KEY_H, KEYBOARD_CODE_I = KBD_KEY_I, KEYBOARD_CODE_J = KBD_KEY_J,
  KEYBOARD_CODE_K = KBD_KEY_K, KEYBOARD_CODE_L = KBD_KEY_L, KEYBOARD_CODE_M = KBD_KEY_M, KEYBOARD_CODE_N = KBD_KEY_N,
  KEYBOARD_CODE_O = KBD_KEY_O, KEYBOARD_CODE_P = KBD_KEY_P, KEYBOARD_CODE_Q = KBD_KEY_Q, KEYBOARD_CODE_R = KBD_KEY_R,
  KEYBOARD_CODE_S = KBD_KEY_S, KEYBOARD_CODE_T = KBD_KEY_T, KEYBOARD_CODE_U = KBD_KEY_U, KEYBOARD_CODE_V = KBD_KEY_V,
  KEYBOARD_CODE_W = KBD_KEY_W, KEYBOARD_CODE_X = KBD_KEY_X, KEYBOARD_CODE_Y = KBD_KEY_Y, KEYBOARD_CODE_Z = KBD_KEY_Z,
  KEYBOARD_CODE_1 = KBD_KEY_1, KEYBOARD_CODE_2 = KBD_KEY_2, KEYBOARD_CODE_3 = KBD_KEY_3, KEYBOARD_CODE_4 = KBD_KEY_4,
  KEYBOARD_CODE_5 = KBD_KEY_5, KEYBOARD_CODE_6 = KBD_KEY_6, KEYBOARD_CODE_7 = KBD_KEY_7, KEYBOARD_CODE_8 = KBD_KEY_8,
  KEYBOARD_CODE_9 = KBD_KEY_9, KEYBOARD_CODE_0 = KBD_KEY_0, KEYBOARD_CODE_RETURN = KBD_KEY_ENTER, KEYBOARD_CODE_ESCAPE = KBD_KEY_ESCAPE,
  KEYBOARD_CODE_BACKSPACE = KBD_KEY_BACKSPACE, KEYBOARD_CODE_TAB = KBD_KEY_TAB, KEYBOARD_CODE_SPACE = KBD_KEY_SPACE, KEYBOARD_CODE_MINUS = KBD_KEY_MINUS,
  KEYBOARD_CODE_EQUALS = KBD_KEY_PLUS, KEYBOARD_CODE_LEFTBRACKET = KBD_KEY_LBRACKET, KEYBOARD_CODE_RIGHTBRACKET = KBD_KEY_RBRACKET, KEYBOARD_CODE_BACKSLASH = KBD_KEY_BACKSLASH,
  KEYBOARD_CODE_NONUSHASH = KBD_KEY_NONE, KEYBOARD_CODE_SEMICOLON = KBD_KEY_SEMICOLON, KEYBOARD_CODE_APOSTROPHE = KBD_KEY_QUOTE, KEYBOARD_CODE_GRAVE = KBD_KEY_TILDE,
  KEYBOARD_CODE_COMMA = KBD_KEY_COMMA, KEYBOARD_CODE_PERIOD = KBD_KEY_PERIOD, KEYBOARD_CODE_SLASH = KBD_KEY_SLASH, KEYBOARD_CODE_CAPSLOCK = KBD_KEY_CAPSLOCK,
  KEYBOARD_CODE_F1 = KBD_KEY_F1, KEYBOARD_CODE_F2 = KBD_KEY_F2, KEYBOARD_CODE_F3 = KBD_KEY_F3, KEYBOARD_CODE_F4 = KBD_KEY_F4,
  KEYBOARD_CODE_F5 = KBD_KEY_F5, KEYBOARD_CODE_F6 = KBD_KEY_F6, KEYBOARD_CODE_F7 = KBD_KEY_F7, KEYBOARD_CODE_F8 = KBD_KEY_F8,
  KEYBOARD_CODE_F9 = KBD_KEY_F9, KEYBOARD_CODE_F10 = KBD_KEY_F10, KEYBOARD_CODE_F11 = KBD_KEY_F11, KEYBOARD_CODE_F12 = KBD_KEY_F12,
  KEYBOARD_CODE_PRINTSCREEN = KBD_KEY_PRINT, KEYBOARD_CODE_SCROLLLOCK = KBD_KEY_SCRLOCK, KEYBOARD_CODE_PAUSE = KBD_KEY_PAUSE, KEYBOARD_CODE_INSERT = KBD_KEY_INSERT,
  KEYBOARD_CODE_HOME = KBD_KEY_HOME, KEYBOARD_CODE_PAGEUP = KBD_KEY_PGUP, KEYBOARD_CODE_DELETE = KBD_KEY_DEL, KEYBOARD_CODE_END = KBD_KEY_END,
  KEYBOARD_CODE_PAGEDOWN = KBD_KEY_PGDOWN, KEYBOARD_CODE_RIGHT = KBD_KEY_RIGHT, KEYBOARD_CODE_LEFT = KBD_KEY_LEFT, KEYBOARD_CODE_DOWN = KBD_KEY_DOWN,
  KEYBOARD_CODE_UP = KBD_KEY_UP, KEYBOARD_CODE_NUMLOCKCLEAR = KBD_KEY_PAD_NUMLOCK, KEYBOARD_CODE_KP_DIVIDE = KBD_KEY_PAD_DIVIDE, KEYBOARD_CODE_KP_MULTIPLY = KBD_KEY_PAD_MULTIPLY,
  KEYBOARD_CODE_KP_MINUS = KBD_KEY_PAD_MINUS, KEYBOARD_CODE_KP_PLUS = KBD_KEY_PAD_PLUS, KEYBOARD_CODE_KP_ENTER = KBD_KEY_PAD_ENTER, KEYBOARD_CODE_KP_1 = KBD_KEY_PAD_1,
  KEYBOARD_CODE_KP_2 = KBD_KEY_PAD_2, KEYBOARD_CODE_KP_3 = KBD_KEY_PAD_3, KEYBOARD_CODE_KP_4 = KBD_KEY_PAD_4, KEYBOARD_CODE_KP_5 = KBD_KEY_PAD_5,
  KEYBOARD_CODE_KP_6 = KBD_KEY_PAD_6, KEYBOARD_CODE_KP_7 = KBD_KEY_PAD_7, KEYBOARD_CODE_KP_8 = KBD_KEY_PAD_8, KEYBOARD_CODE_KP_9 = KBD_KEY_PAD_9,
  KEYBOARD_CODE_KP_0 = KBD_KEY_PAD_0, KEYBOARD_CODE_KP_PERIOD = KBD_KEY_PAD_PERIOD, KEYBOARD_CODE_NONUSBACKSLASH = KBD_KEY_NONE, KEYBOARD_CODE_APPLICATION = KBD_KEY_NONE,
  KEYBOARD_CODE_POWER = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALS = KBD_KEY_NONE, KEYBOARD_CODE_F13 = KBD_KEY_NONE, KEYBOARD_CODE_F14 = KBD_KEY_NONE,
  KEYBOARD_CODE_F15 = KBD_KEY_NONE, KEYBOARD_CODE_F16 = KBD_KEY_NONE, KEYBOARD_CODE_F17 = KBD_KEY_NONE, KEYBOARD_CODE_F18 = KBD_KEY_NONE,
  KEYBOARD_CODE_F19 = KBD_KEY_NONE, KEYBOARD_CODE_F20 = KBD_KEY_NONE, KEYBOARD_CODE_F21 = KBD_KEY_NONE, KEYBOARD_CODE_F22 = KBD_KEY_NONE,
  KEYBOARD_CODE_F23 = KBD_KEY_NONE, KEYBOARD_CODE_F24 = KBD_KEY_NONE, KEYBOARD_CODE_EXECUTE = KBD_KEY_NONE, KEYBOARD_CODE_HELP = KBD_KEY_NONE,
  KEYBOARD_CODE_MENU = KBD_KEY_NONE, KEYBOARD_CODE_SELECT = KBD_KEY_NONE, KEYBOARD_CODE_STOP = KBD_KEY_NONE, KEYBOARD_CODE_AGAIN = KBD_KEY_NONE,
  KEYBOARD_CODE_UNDO = KBD_KEY_NONE, KEYBOARD_CODE_CUT = KBD_KEY_NONE, KEYBOARD_CODE_COPY = KBD_KEY_NONE, KEYBOARD_CODE_PASTE = KBD_KEY_NONE,
  KEYBOARD_CODE_FIND = KBD_KEY_NONE, KEYBOARD_CODE_MUTE = KBD_KEY_NONE, KEYBOARD_CODE_VOLUMEUP = KBD_KEY_NONE, KEYBOARD_CODE_VOLUMEDOWN = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_COMMA = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALSAS400 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL1 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL2 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL3 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL4 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL5 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL6 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL7 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL8 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL9 = KBD_KEY_NONE, KEYBOARD_CODE_LANG1 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG2 = KBD_KEY_NONE, KEYBOARD_CODE_LANG3 = KBD_KEY_NONE, KEYBOARD_CODE_LANG4 = KBD_KEY_NONE, KEYBOARD_CODE_LANG5 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG6 = KBD_KEY_NONE, KEYBOARD_CODE_LANG7 = KBD_KEY_NONE, KEYBOARD_CODE_LANG8 = KBD_KEY_NONE, KEYBOARD_CODE_LANG9 = KBD_KEY_NONE,
  KEYBOARD_CODE_ALTERASE = KBD_KEY_NONE, KEYBOARD_CODE_SYSREQ = KBD_KEY_NONE, KEYBOARD_CODE_CANCEL = KBD_KEY_NONE, KEYBOARD_CODE_CLEAR = KBD_KEY_NONE,
  KEYBOARD_CODE_PRIOR = KBD_KEY_NONE, KEYBOARD_CODE_RETURN2 = KBD_KEY_NONE, KEYBOARD_CODE_SEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_OUT = KBD_KEY_NONE,
  KEYBOARD_CODE_OPER = KBD_KEY_NONE, KEYBOARD_CODE_CLEARAGAIN = KBD_KEY_NONE, KEYBOARD_CODE_CRSEL = KBD_KEY_NONE, KEYBOARD_CODE_EXSEL = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_00 = KBD_KEY_NONE, KEYBOARD_CODE_KP_000 = KBD_KEY_NONE, KEYBOARD_CODE_THOUSANDSSEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_DECIMALSEPARATOR = KBD_KEY_NONE,
  KEYBOARD_CODE_CURRENCYUNIT = KBD_KEY_NONE, KEYBOARD_CODE_CURRENCYSUBUNIT = KBD_KEY_NONE, KEYBOARD_CODE_KP_LEFTPAREN = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTPAREN = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_LEFTBRACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTBRACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_TAB = KBD_KEY_NONE, KEYBOARD_CODE_KP_BACKSPACE = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_A = KBD_KEY_NONE, KEYBOARD_CODE_KP_B = KBD_KEY_NONE, KEYBOARD_CODE_KP_C = KBD_KEY_NONE, KEYBOARD_CODE_KP_D = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_E = KBD_KEY_NONE, KEYBOARD_CODE_KP_F = KBD_KEY_NONE, KEYBOARD_CODE_KP_XOR = KBD_KEY_NONE, KEYBOARD_CODE_KP_POWER = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_PERCENT = KBD_KEY_NONE, KEYBOARD_CODE_KP_LESS = KBD_KEY_NONE, KEYBOARD_CODE_KP_GREATER = KBD_KEY_NONE, KEYBOARD_CODE_KP_AMPERSAND = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_DBLAMPERSAND = KBD_KEY_NONE, KEYBOARD_CODE_KP_VERTICALBAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_DBLVERTICALBAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_COLON = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_HASH = KBD_KEY_NONE, KEYBOARD_CODE_KP_SPACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_AT = KBD_KEY_NONE, KEYBOARD_CODE_KP_EXCLAM = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMSTORE = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMRECALL = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMCLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMADD = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMSUBTRACT = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMMULTIPLY = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMDIVIDE = KBD_KEY_NONE, KEYBOARD_CODE_KP_PLUSMINUS = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_CLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_CLEARENTRY = KBD_KEY_NONE, KEYBOARD_CODE_KP_BINARY = KBD_KEY_NONE, KEYBOARD_CODE_KP_OCTAL = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_DECIMAL = KBD_KEY_NONE, KEYBOARD_CODE_KP_HEXADECIMAL = KBD_KEY_NONE, KEYBOARD_CODE_LCTRL = KBD_KEY_NONE, KEYBOARD_CODE_LSHIFT = KBD_KEY_NONE,
  KEYBOARD_CODE_LALT = KBD_KEY_NONE, KEYBOARD_CODE_LGUI = KBD_KEY_NONE, KEYBOARD_CODE_RCTRL = KBD_KEY_NONE, KEYBOARD_CODE_RSHIFT = KBD_KEY_NONE,
  KEYBOARD_CODE_RALT = KBD_KEY_NONE, KEYBOARD_CODE_RGUI = KBD_KEY_NONE, KEYBOARD_CODE_MODE = KBD_KEY_NONE, KEYBOARD_CODE_AUDIONEXT = KBD_KEY_NONE,
  KEYBOARD_CODE_AUDIOPREV = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOSTOP = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOPLAY = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOMUTE = KBD_KEY_NONE,
  KEYBOARD_CODE_MEDIASELECT = KBD_KEY_NONE, KEYBOARD_CODE_WWW = KBD_KEY_NONE, KEYBOARD_CODE_MAIL = KBD_KEY_NONE, KEYBOARD_CODE_CALCULATOR = KBD_KEY_NONE,
  KEYBOARD_CODE_COMPUTER = KBD_KEY_NONE, KEYBOARD_CODE_AC_SEARCH = KBD_KEY_NONE, KEYBOARD_CODE_AC_HOME = KBD_KEY_NONE, KEYBOARD_CODE_AC_BACK = KBD_KEY_NONE,
  KEYBOARD_CODE_AC_FORWARD = KBD_KEY_NONE, KEYBOARD_CODE_AC_STOP = KBD_KEY_NONE, KEYBOARD_CODE_AC_REFRESH = KBD_KEY_NONE, KEYBOARD_CODE_AC_BOOKMARKS = KBD_KEY_NONE,
  KEYBOARD_CODE_BRIGHTNESSDOWN = KBD_KEY_NONE, KEYBOARD_CODE_BRIGHTNESSUP = KBD_KEY_NONE, KEYBOARD_CODE_DISPLAYSWITCH = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMTOGGLE = KBD_KEY_NONE,
  KEYBOARD_CODE_KBDILLUMDOWN = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMUP = KBD_KEY_NONE, KEYBOARD_CODE_EJECT = KBD_KEY_NONE, KEYBOARD_CODE_SLEEP = KBD_KEY_NONE,
  KEYBOARD_CODE_APP1 = KBD_KEY_NONE, KEYBOARD_CODE_APP2 = KBD_KEY_NONE, MAX_KEYBOARD_CODES = 512, KEYBOARD_CODE_NONE = 0,
  KEYBOARD_CODE_A = KBD_KEY_A, KEYBOARD_CODE_B = KBD_KEY_B, KEYBOARD_CODE_C = KBD_KEY_C, KEYBOARD_CODE_D = KBD_KEY_D,
  KEYBOARD_CODE_E = KBD_KEY_E, KEYBOARD_CODE_F = KBD_KEY_F, KEYBOARD_CODE_G = KBD_KEY_G, KEYBOARD_CODE_H = KBD_KEY_H,
  KEYBOARD_CODE_I = KBD_KEY_I, KEYBOARD_CODE_J = KBD_KEY_J, KEYBOARD_CODE_K = KBD_KEY_K, KEYBOARD_CODE_L = KBD_KEY_L,
  KEYBOARD_CODE_M = KBD_KEY_M, KEYBOARD_CODE_N = KBD_KEY_N, KEYBOARD_CODE_O = KBD_KEY_O, KEYBOARD_CODE_P = KBD_KEY_P,
  KEYBOARD_CODE_Q = KBD_KEY_Q, KEYBOARD_CODE_R = KBD_KEY_R, KEYBOARD_CODE_S = KBD_KEY_S, KEYBOARD_CODE_T = KBD_KEY_T,
  KEYBOARD_CODE_U = KBD_KEY_U, KEYBOARD_CODE_V = KBD_KEY_V, KEYBOARD_CODE_W = KBD_KEY_W, KEYBOARD_CODE_X = KBD_KEY_X,
  KEYBOARD_CODE_Y = KBD_KEY_Y, KEYBOARD_CODE_Z = KBD_KEY_Z, KEYBOARD_CODE_1 = KBD_KEY_1, KEYBOARD_CODE_2 = KBD_KEY_2,
  KEYBOARD_CODE_3 = KBD_KEY_3, KEYBOARD_CODE_4 = KBD_KEY_4, KEYBOARD_CODE_5 = KBD_KEY_5, KEYBOARD_CODE_6 = KBD_KEY_6,
  KEYBOARD_CODE_7 = KBD_KEY_7, KEYBOARD_CODE_8 = KBD_KEY_8, KEYBOARD_CODE_9 = KBD_KEY_9, KEYBOARD_CODE_0 = KBD_KEY_0,
  KEYBOARD_CODE_RETURN = KBD_KEY_ENTER, KEYBOARD_CODE_ESCAPE = KBD_KEY_ESCAPE, KEYBOARD_CODE_BACKSPACE = KBD_KEY_BACKSPACE, KEYBOARD_CODE_TAB = KBD_KEY_TAB,
  KEYBOARD_CODE_SPACE = KBD_KEY_SPACE, KEYBOARD_CODE_MINUS = KBD_KEY_MINUS, KEYBOARD_CODE_EQUALS = KBD_KEY_PLUS, KEYBOARD_CODE_LEFTBRACKET = KBD_KEY_LBRACKET,
  KEYBOARD_CODE_RIGHTBRACKET = KBD_KEY_RBRACKET, KEYBOARD_CODE_BACKSLASH = KBD_KEY_BACKSLASH, KEYBOARD_CODE_NONUSHASH = KBD_KEY_NONE, KEYBOARD_CODE_SEMICOLON = KBD_KEY_SEMICOLON,
  KEYBOARD_CODE_APOSTROPHE = KBD_KEY_QUOTE, KEYBOARD_CODE_GRAVE = KBD_KEY_TILDE, KEYBOARD_CODE_COMMA = KBD_KEY_COMMA, KEYBOARD_CODE_PERIOD = KBD_KEY_PERIOD,
  KEYBOARD_CODE_SLASH = KBD_KEY_SLASH, KEYBOARD_CODE_CAPSLOCK = KBD_KEY_CAPSLOCK, KEYBOARD_CODE_F1 = KBD_KEY_F1, KEYBOARD_CODE_F2 = KBD_KEY_F2,
  KEYBOARD_CODE_F3 = KBD_KEY_F3, KEYBOARD_CODE_F4 = KBD_KEY_F4, KEYBOARD_CODE_F5 = KBD_KEY_F5, KEYBOARD_CODE_F6 = KBD_KEY_F6,
  KEYBOARD_CODE_F7 = KBD_KEY_F7, KEYBOARD_CODE_F8 = KBD_KEY_F8, KEYBOARD_CODE_F9 = KBD_KEY_F9, KEYBOARD_CODE_F10 = KBD_KEY_F10,
  KEYBOARD_CODE_F11 = KBD_KEY_F11, KEYBOARD_CODE_F12 = KBD_KEY_F12, KEYBOARD_CODE_PRINTSCREEN = KBD_KEY_PRINT, KEYBOARD_CODE_SCROLLLOCK = KBD_KEY_SCRLOCK,
  KEYBOARD_CODE_PAUSE = KBD_KEY_PAUSE, KEYBOARD_CODE_INSERT = KBD_KEY_INSERT, KEYBOARD_CODE_HOME = KBD_KEY_HOME, KEYBOARD_CODE_PAGEUP = KBD_KEY_PGUP,
  KEYBOARD_CODE_DELETE = KBD_KEY_DEL, KEYBOARD_CODE_END = KBD_KEY_END, KEYBOARD_CODE_PAGEDOWN = KBD_KEY_PGDOWN, KEYBOARD_CODE_RIGHT = KBD_KEY_RIGHT,
  KEYBOARD_CODE_LEFT = KBD_KEY_LEFT, KEYBOARD_CODE_DOWN = KBD_KEY_DOWN, KEYBOARD_CODE_UP = KBD_KEY_UP, KEYBOARD_CODE_NUMLOCKCLEAR = KBD_KEY_PAD_NUMLOCK,
  KEYBOARD_CODE_KP_DIVIDE = KBD_KEY_PAD_DIVIDE, KEYBOARD_CODE_KP_MULTIPLY = KBD_KEY_PAD_MULTIPLY, KEYBOARD_CODE_KP_MINUS = KBD_KEY_PAD_MINUS, KEYBOARD_CODE_KP_PLUS = KBD_KEY_PAD_PLUS,
  KEYBOARD_CODE_KP_ENTER = KBD_KEY_PAD_ENTER, KEYBOARD_CODE_KP_1 = KBD_KEY_PAD_1, KEYBOARD_CODE_KP_2 = KBD_KEY_PAD_2, KEYBOARD_CODE_KP_3 = KBD_KEY_PAD_3,
  KEYBOARD_CODE_KP_4 = KBD_KEY_PAD_4, KEYBOARD_CODE_KP_5 = KBD_KEY_PAD_5, KEYBOARD_CODE_KP_6 = KBD_KEY_PAD_6, KEYBOARD_CODE_KP_7 = KBD_KEY_PAD_7,
  KEYBOARD_CODE_KP_8 = KBD_KEY_PAD_8, KEYBOARD_CODE_KP_9 = KBD_KEY_PAD_9, KEYBOARD_CODE_KP_0 = KBD_KEY_PAD_0, KEYBOARD_CODE_KP_PERIOD = KBD_KEY_PAD_PERIOD,
  KEYBOARD_CODE_NONUSBACKSLASH = KBD_KEY_NONE, KEYBOARD_CODE_APPLICATION = KBD_KEY_NONE, KEYBOARD_CODE_POWER = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALS = KBD_KEY_NONE,
  KEYBOARD_CODE_F13 = KBD_KEY_NONE, KEYBOARD_CODE_F14 = KBD_KEY_NONE, KEYBOARD_CODE_F15 = KBD_KEY_NONE, KEYBOARD_CODE_F16 = KBD_KEY_NONE,
  KEYBOARD_CODE_F17 = KBD_KEY_NONE, KEYBOARD_CODE_F18 = KBD_KEY_NONE, KEYBOARD_CODE_F19 = KBD_KEY_NONE, KEYBOARD_CODE_F20 = KBD_KEY_NONE,
  KEYBOARD_CODE_F21 = KBD_KEY_NONE, KEYBOARD_CODE_F22 = KBD_KEY_NONE, KEYBOARD_CODE_F23 = KBD_KEY_NONE, KEYBOARD_CODE_F24 = KBD_KEY_NONE,
  KEYBOARD_CODE_EXECUTE = KBD_KEY_NONE, KEYBOARD_CODE_HELP = KBD_KEY_NONE, KEYBOARD_CODE_MENU = KBD_KEY_NONE, KEYBOARD_CODE_SELECT = KBD_KEY_NONE,
  KEYBOARD_CODE_STOP = KBD_KEY_NONE, KEYBOARD_CODE_AGAIN = KBD_KEY_NONE, KEYBOARD_CODE_UNDO = KBD_KEY_NONE, KEYBOARD_CODE_CUT = KBD_KEY_NONE,
  KEYBOARD_CODE_COPY = KBD_KEY_NONE, KEYBOARD_CODE_PASTE = KBD_KEY_NONE, KEYBOARD_CODE_FIND = KBD_KEY_NONE, KEYBOARD_CODE_MUTE = KBD_KEY_NONE,
  KEYBOARD_CODE_VOLUMEUP = KBD_KEY_NONE, KEYBOARD_CODE_VOLUMEDOWN = KBD_KEY_NONE, KEYBOARD_CODE_KP_COMMA = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALSAS400 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL1 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL2 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL3 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL4 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL5 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL6 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL7 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL8 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL9 = KBD_KEY_NONE, KEYBOARD_CODE_LANG1 = KBD_KEY_NONE, KEYBOARD_CODE_LANG2 = KBD_KEY_NONE, KEYBOARD_CODE_LANG3 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG4 = KBD_KEY_NONE, KEYBOARD_CODE_LANG5 = KBD_KEY_NONE, KEYBOARD_CODE_LANG6 = KBD_KEY_NONE, KEYBOARD_CODE_LANG7 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG8 = KBD_KEY_NONE, KEYBOARD_CODE_LANG9 = KBD_KEY_NONE, KEYBOARD_CODE_ALTERASE = KBD_KEY_NONE, KEYBOARD_CODE_SYSREQ = KBD_KEY_NONE,
  KEYBOARD_CODE_CANCEL = KBD_KEY_NONE, KEYBOARD_CODE_CLEAR = KBD_KEY_NONE, KEYBOARD_CODE_PRIOR = KBD_KEY_NONE, KEYBOARD_CODE_RETURN2 = KBD_KEY_NONE,
  KEYBOARD_CODE_SEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_OUT = KBD_KEY_NONE, KEYBOARD_CODE_OPER = KBD_KEY_NONE, KEYBOARD_CODE_CLEARAGAIN = KBD_KEY_NONE,
  KEYBOARD_CODE_CRSEL = KBD_KEY_NONE, KEYBOARD_CODE_EXSEL = KBD_KEY_NONE, KEYBOARD_CODE_KP_00 = KBD_KEY_NONE, KEYBOARD_CODE_KP_000 = KBD_KEY_NONE,
  KEYBOARD_CODE_THOUSANDSSEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_DECIMALSEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_CURRENCYUNIT = KBD_KEY_NONE, KEYBOARD_CODE_CURRENCYSUBUNIT = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_LEFTPAREN = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTPAREN = KBD_KEY_NONE, KEYBOARD_CODE_KP_LEFTBRACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTBRACE = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_TAB = KBD_KEY_NONE, KEYBOARD_CODE_KP_BACKSPACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_A = KBD_KEY_NONE, KEYBOARD_CODE_KP_B = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_C = KBD_KEY_NONE, KEYBOARD_CODE_KP_D = KBD_KEY_NONE, KEYBOARD_CODE_KP_E = KBD_KEY_NONE, KEYBOARD_CODE_KP_F = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_XOR = KBD_KEY_NONE, KEYBOARD_CODE_KP_POWER = KBD_KEY_NONE, KEYBOARD_CODE_KP_PERCENT = KBD_KEY_NONE, KEYBOARD_CODE_KP_LESS = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_GREATER = KBD_KEY_NONE, KEYBOARD_CODE_KP_AMPERSAND = KBD_KEY_NONE, KEYBOARD_CODE_KP_DBLAMPERSAND = KBD_KEY_NONE, KEYBOARD_CODE_KP_VERTICALBAR = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_DBLVERTICALBAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_COLON = KBD_KEY_NONE, KEYBOARD_CODE_KP_HASH = KBD_KEY_NONE, KEYBOARD_CODE_KP_SPACE = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_AT = KBD_KEY_NONE, KEYBOARD_CODE_KP_EXCLAM = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMSTORE = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMRECALL = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMCLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMADD = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMSUBTRACT = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMMULTIPLY = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMDIVIDE = KBD_KEY_NONE, KEYBOARD_CODE_KP_PLUSMINUS = KBD_KEY_NONE, KEYBOARD_CODE_KP_CLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_CLEARENTRY = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_BINARY = KBD_KEY_NONE, KEYBOARD_CODE_KP_OCTAL = KBD_KEY_NONE, KEYBOARD_CODE_KP_DECIMAL = KBD_KEY_NONE, KEYBOARD_CODE_KP_HEXADECIMAL = KBD_KEY_NONE,
  KEYBOARD_CODE_LCTRL = KBD_KEY_NONE, KEYBOARD_CODE_LSHIFT = KBD_KEY_NONE, KEYBOARD_CODE_LALT = KBD_KEY_NONE, KEYBOARD_CODE_LGUI = KBD_KEY_NONE,
  KEYBOARD_CODE_RCTRL = KBD_KEY_NONE, KEYBOARD_CODE_RSHIFT = KBD_KEY_NONE, KEYBOARD_CODE_RALT = KBD_KEY_NONE, KEYBOARD_CODE_RGUI = KBD_KEY_NONE,
  KEYBOARD_CODE_MODE = KBD_KEY_NONE, KEYBOARD_CODE_AUDIONEXT = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOPREV = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOSTOP = KBD_KEY_NONE,
  KEYBOARD_CODE_AUDIOPLAY = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOMUTE = KBD_KEY_NONE, KEYBOARD_CODE_MEDIASELECT = KBD_KEY_NONE, KEYBOARD_CODE_WWW = KBD_KEY_NONE,
  KEYBOARD_CODE_MAIL = KBD_KEY_NONE, KEYBOARD_CODE_CALCULATOR = KBD_KEY_NONE, KEYBOARD_CODE_COMPUTER = KBD_KEY_NONE, KEYBOARD_CODE_AC_SEARCH = KBD_KEY_NONE,
  KEYBOARD_CODE_AC_HOME = KBD_KEY_NONE, KEYBOARD_CODE_AC_BACK = KBD_KEY_NONE, KEYBOARD_CODE_AC_FORWARD = KBD_KEY_NONE, KEYBOARD_CODE_AC_STOP = KBD_KEY_NONE,
  KEYBOARD_CODE_AC_REFRESH = KBD_KEY_NONE, KEYBOARD_CODE_AC_BOOKMARKS = KBD_KEY_NONE, KEYBOARD_CODE_BRIGHTNESSDOWN = KBD_KEY_NONE, KEYBOARD_CODE_BRIGHTNESSUP = KBD_KEY_NONE,
  KEYBOARD_CODE_DISPLAYSWITCH = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMTOGGLE = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMDOWN = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMUP = KBD_KEY_NONE,
  KEYBOARD_CODE_EJECT = KBD_KEY_NONE, KEYBOARD_CODE_SLEEP = KBD_KEY_NONE, KEYBOARD_CODE_APP1 = KBD_KEY_NONE, KEYBOARD_CODE_APP2 = KBD_KEY_NONE,
  MAX_KEYBOARD_CODES = 512, KEYBOARD_CODE_NONE = 0, KEYBOARD_CODE_A = KBD_KEY_A, KEYBOARD_CODE_B = KBD_KEY_B,
  KEYBOARD_CODE_C = KBD_KEY_C, KEYBOARD_CODE_D = KBD_KEY_D, KEYBOARD_CODE_E = KBD_KEY_E, KEYBOARD_CODE_F = KBD_KEY_F,
  KEYBOARD_CODE_G = KBD_KEY_G, KEYBOARD_CODE_H = KBD_KEY_H, KEYBOARD_CODE_I = KBD_KEY_I, KEYBOARD_CODE_J = KBD_KEY_J,
  KEYBOARD_CODE_K = KBD_KEY_K, KEYBOARD_CODE_L = KBD_KEY_L, KEYBOARD_CODE_M = KBD_KEY_M, KEYBOARD_CODE_N = KBD_KEY_N,
  KEYBOARD_CODE_O = KBD_KEY_O, KEYBOARD_CODE_P = KBD_KEY_P, KEYBOARD_CODE_Q = KBD_KEY_Q, KEYBOARD_CODE_R = KBD_KEY_R,
  KEYBOARD_CODE_S = KBD_KEY_S, KEYBOARD_CODE_T = KBD_KEY_T, KEYBOARD_CODE_U = KBD_KEY_U, KEYBOARD_CODE_V = KBD_KEY_V,
  KEYBOARD_CODE_W = KBD_KEY_W, KEYBOARD_CODE_X = KBD_KEY_X, KEYBOARD_CODE_Y = KBD_KEY_Y, KEYBOARD_CODE_Z = KBD_KEY_Z,
  KEYBOARD_CODE_1 = KBD_KEY_1, KEYBOARD_CODE_2 = KBD_KEY_2, KEYBOARD_CODE_3 = KBD_KEY_3, KEYBOARD_CODE_4 = KBD_KEY_4,
  KEYBOARD_CODE_5 = KBD_KEY_5, KEYBOARD_CODE_6 = KBD_KEY_6, KEYBOARD_CODE_7 = KBD_KEY_7, KEYBOARD_CODE_8 = KBD_KEY_8,
  KEYBOARD_CODE_9 = KBD_KEY_9, KEYBOARD_CODE_0 = KBD_KEY_0, KEYBOARD_CODE_RETURN = KBD_KEY_ENTER, KEYBOARD_CODE_ESCAPE = KBD_KEY_ESCAPE,
  KEYBOARD_CODE_BACKSPACE = KBD_KEY_BACKSPACE, KEYBOARD_CODE_TAB = KBD_KEY_TAB, KEYBOARD_CODE_SPACE = KBD_KEY_SPACE, KEYBOARD_CODE_MINUS = KBD_KEY_MINUS,
  KEYBOARD_CODE_EQUALS = KBD_KEY_PLUS, KEYBOARD_CODE_LEFTBRACKET = KBD_KEY_LBRACKET, KEYBOARD_CODE_RIGHTBRACKET = KBD_KEY_RBRACKET, KEYBOARD_CODE_BACKSLASH = KBD_KEY_BACKSLASH,
  KEYBOARD_CODE_NONUSHASH = KBD_KEY_NONE, KEYBOARD_CODE_SEMICOLON = KBD_KEY_SEMICOLON, KEYBOARD_CODE_APOSTROPHE = KBD_KEY_QUOTE, KEYBOARD_CODE_GRAVE = KBD_KEY_TILDE,
  KEYBOARD_CODE_COMMA = KBD_KEY_COMMA, KEYBOARD_CODE_PERIOD = KBD_KEY_PERIOD, KEYBOARD_CODE_SLASH = KBD_KEY_SLASH, KEYBOARD_CODE_CAPSLOCK = KBD_KEY_CAPSLOCK,
  KEYBOARD_CODE_F1 = KBD_KEY_F1, KEYBOARD_CODE_F2 = KBD_KEY_F2, KEYBOARD_CODE_F3 = KBD_KEY_F3, KEYBOARD_CODE_F4 = KBD_KEY_F4,
  KEYBOARD_CODE_F5 = KBD_KEY_F5, KEYBOARD_CODE_F6 = KBD_KEY_F6, KEYBOARD_CODE_F7 = KBD_KEY_F7, KEYBOARD_CODE_F8 = KBD_KEY_F8,
  KEYBOARD_CODE_F9 = KBD_KEY_F9, KEYBOARD_CODE_F10 = KBD_KEY_F10, KEYBOARD_CODE_F11 = KBD_KEY_F11, KEYBOARD_CODE_F12 = KBD_KEY_F12,
  KEYBOARD_CODE_PRINTSCREEN = KBD_KEY_PRINT, KEYBOARD_CODE_SCROLLLOCK = KBD_KEY_SCRLOCK, KEYBOARD_CODE_PAUSE = KBD_KEY_PAUSE, KEYBOARD_CODE_INSERT = KBD_KEY_INSERT,
  KEYBOARD_CODE_HOME = KBD_KEY_HOME, KEYBOARD_CODE_PAGEUP = KBD_KEY_PGUP, KEYBOARD_CODE_DELETE = KBD_KEY_DEL, KEYBOARD_CODE_END = KBD_KEY_END,
  KEYBOARD_CODE_PAGEDOWN = KBD_KEY_PGDOWN, KEYBOARD_CODE_RIGHT = KBD_KEY_RIGHT, KEYBOARD_CODE_LEFT = KBD_KEY_LEFT, KEYBOARD_CODE_DOWN = KBD_KEY_DOWN,
  KEYBOARD_CODE_UP = KBD_KEY_UP, KEYBOARD_CODE_NUMLOCKCLEAR = KBD_KEY_PAD_NUMLOCK, KEYBOARD_CODE_KP_DIVIDE = KBD_KEY_PAD_DIVIDE, KEYBOARD_CODE_KP_MULTIPLY = KBD_KEY_PAD_MULTIPLY,
  KEYBOARD_CODE_KP_MINUS = KBD_KEY_PAD_MINUS, KEYBOARD_CODE_KP_PLUS = KBD_KEY_PAD_PLUS, KEYBOARD_CODE_KP_ENTER = KBD_KEY_PAD_ENTER, KEYBOARD_CODE_KP_1 = KBD_KEY_PAD_1,
  KEYBOARD_CODE_KP_2 = KBD_KEY_PAD_2, KEYBOARD_CODE_KP_3 = KBD_KEY_PAD_3, KEYBOARD_CODE_KP_4 = KBD_KEY_PAD_4, KEYBOARD_CODE_KP_5 = KBD_KEY_PAD_5,
  KEYBOARD_CODE_KP_6 = KBD_KEY_PAD_6, KEYBOARD_CODE_KP_7 = KBD_KEY_PAD_7, KEYBOARD_CODE_KP_8 = KBD_KEY_PAD_8, KEYBOARD_CODE_KP_9 = KBD_KEY_PAD_9,
  KEYBOARD_CODE_KP_0 = KBD_KEY_PAD_0, KEYBOARD_CODE_KP_PERIOD = KBD_KEY_PAD_PERIOD, KEYBOARD_CODE_NONUSBACKSLASH = KBD_KEY_NONE, KEYBOARD_CODE_APPLICATION = KBD_KEY_NONE,
  KEYBOARD_CODE_POWER = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALS = KBD_KEY_NONE, KEYBOARD_CODE_F13 = KBD_KEY_NONE, KEYBOARD_CODE_F14 = KBD_KEY_NONE,
  KEYBOARD_CODE_F15 = KBD_KEY_NONE, KEYBOARD_CODE_F16 = KBD_KEY_NONE, KEYBOARD_CODE_F17 = KBD_KEY_NONE, KEYBOARD_CODE_F18 = KBD_KEY_NONE,
  KEYBOARD_CODE_F19 = KBD_KEY_NONE, KEYBOARD_CODE_F20 = KBD_KEY_NONE, KEYBOARD_CODE_F21 = KBD_KEY_NONE, KEYBOARD_CODE_F22 = KBD_KEY_NONE,
  KEYBOARD_CODE_F23 = KBD_KEY_NONE, KEYBOARD_CODE_F24 = KBD_KEY_NONE, KEYBOARD_CODE_EXECUTE = KBD_KEY_NONE, KEYBOARD_CODE_HELP = KBD_KEY_NONE,
  KEYBOARD_CODE_MENU = KBD_KEY_NONE, KEYBOARD_CODE_SELECT = KBD_KEY_NONE, KEYBOARD_CODE_STOP = KBD_KEY_NONE, KEYBOARD_CODE_AGAIN = KBD_KEY_NONE,
  KEYBOARD_CODE_UNDO = KBD_KEY_NONE, KEYBOARD_CODE_CUT = KBD_KEY_NONE, KEYBOARD_CODE_COPY = KBD_KEY_NONE, KEYBOARD_CODE_PASTE = KBD_KEY_NONE,
  KEYBOARD_CODE_FIND = KBD_KEY_NONE, KEYBOARD_CODE_MUTE = KBD_KEY_NONE, KEYBOARD_CODE_VOLUMEUP = KBD_KEY_NONE, KEYBOARD_CODE_VOLUMEDOWN = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_COMMA = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALSAS400 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL1 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL2 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL3 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL4 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL5 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL6 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL7 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL8 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL9 = KBD_KEY_NONE, KEYBOARD_CODE_LANG1 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG2 = KBD_KEY_NONE, KEYBOARD_CODE_LANG3 = KBD_KEY_NONE, KEYBOARD_CODE_LANG4 = KBD_KEY_NONE, KEYBOARD_CODE_LANG5 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG6 = KBD_KEY_NONE, KEYBOARD_CODE_LANG7 = KBD_KEY_NONE, KEYBOARD_CODE_LANG8 = KBD_KEY_NONE, KEYBOARD_CODE_LANG9 = KBD_KEY_NONE,
  KEYBOARD_CODE_ALTERASE = KBD_KEY_NONE, KEYBOARD_CODE_SYSREQ = KBD_KEY_NONE, KEYBOARD_CODE_CANCEL = KBD_KEY_NONE, KEYBOARD_CODE_CLEAR = KBD_KEY_NONE,
  KEYBOARD_CODE_PRIOR = KBD_KEY_NONE, KEYBOARD_CODE_RETURN2 = KBD_KEY_NONE, KEYBOARD_CODE_SEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_OUT = KBD_KEY_NONE,
  KEYBOARD_CODE_OPER = KBD_KEY_NONE, KEYBOARD_CODE_CLEARAGAIN = KBD_KEY_NONE, KEYBOARD_CODE_CRSEL = KBD_KEY_NONE, KEYBOARD_CODE_EXSEL = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_00 = KBD_KEY_NONE, KEYBOARD_CODE_KP_000 = KBD_KEY_NONE, KEYBOARD_CODE_THOUSANDSSEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_DECIMALSEPARATOR = KBD_KEY_NONE,
  KEYBOARD_CODE_CURRENCYUNIT = KBD_KEY_NONE, KEYBOARD_CODE_CURRENCYSUBUNIT = KBD_KEY_NONE, KEYBOARD_CODE_KP_LEFTPAREN = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTPAREN = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_LEFTBRACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTBRACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_TAB = KBD_KEY_NONE, KEYBOARD_CODE_KP_BACKSPACE = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_A = KBD_KEY_NONE, KEYBOARD_CODE_KP_B = KBD_KEY_NONE, KEYBOARD_CODE_KP_C = KBD_KEY_NONE, KEYBOARD_CODE_KP_D = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_E = KBD_KEY_NONE, KEYBOARD_CODE_KP_F = KBD_KEY_NONE, KEYBOARD_CODE_KP_XOR = KBD_KEY_NONE, KEYBOARD_CODE_KP_POWER = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_PERCENT = KBD_KEY_NONE, KEYBOARD_CODE_KP_LESS = KBD_KEY_NONE, KEYBOARD_CODE_KP_GREATER = KBD_KEY_NONE, KEYBOARD_CODE_KP_AMPERSAND = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_DBLAMPERSAND = KBD_KEY_NONE, KEYBOARD_CODE_KP_VERTICALBAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_DBLVERTICALBAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_COLON = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_HASH = KBD_KEY_NONE, KEYBOARD_CODE_KP_SPACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_AT = KBD_KEY_NONE, KEYBOARD_CODE_KP_EXCLAM = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMSTORE = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMRECALL = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMCLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMADD = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMSUBTRACT = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMMULTIPLY = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMDIVIDE = KBD_KEY_NONE, KEYBOARD_CODE_KP_PLUSMINUS = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_CLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_CLEARENTRY = KBD_KEY_NONE, KEYBOARD_CODE_KP_BINARY = KBD_KEY_NONE, KEYBOARD_CODE_KP_OCTAL = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_DECIMAL = KBD_KEY_NONE, KEYBOARD_CODE_KP_HEXADECIMAL = KBD_KEY_NONE, KEYBOARD_CODE_LCTRL = KBD_KEY_NONE, KEYBOARD_CODE_LSHIFT = KBD_KEY_NONE,
  KEYBOARD_CODE_LALT = KBD_KEY_NONE, KEYBOARD_CODE_LGUI = KBD_KEY_NONE, KEYBOARD_CODE_RCTRL = KBD_KEY_NONE, KEYBOARD_CODE_RSHIFT = KBD_KEY_NONE,
  KEYBOARD_CODE_RALT = KBD_KEY_NONE, KEYBOARD_CODE_RGUI = KBD_KEY_NONE, KEYBOARD_CODE_MODE = KBD_KEY_NONE, KEYBOARD_CODE_AUDIONEXT = KBD_KEY_NONE,
  KEYBOARD_CODE_AUDIOPREV = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOSTOP = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOPLAY = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOMUTE = KBD_KEY_NONE,
  KEYBOARD_CODE_MEDIASELECT = KBD_KEY_NONE, KEYBOARD_CODE_WWW = KBD_KEY_NONE, KEYBOARD_CODE_MAIL = KBD_KEY_NONE, KEYBOARD_CODE_CALCULATOR = KBD_KEY_NONE,
  KEYBOARD_CODE_COMPUTER = KBD_KEY_NONE, KEYBOARD_CODE_AC_SEARCH = KBD_KEY_NONE, KEYBOARD_CODE_AC_HOME = KBD_KEY_NONE, KEYBOARD_CODE_AC_BACK = KBD_KEY_NONE,
  KEYBOARD_CODE_AC_FORWARD = KBD_KEY_NONE, KEYBOARD_CODE_AC_STOP = KBD_KEY_NONE, KEYBOARD_CODE_AC_REFRESH = KBD_KEY_NONE, KEYBOARD_CODE_AC_BOOKMARKS = KBD_KEY_NONE,
  KEYBOARD_CODE_BRIGHTNESSDOWN = KBD_KEY_NONE, KEYBOARD_CODE_BRIGHTNESSUP = KBD_KEY_NONE, KEYBOARD_CODE_DISPLAYSWITCH = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMTOGGLE = KBD_KEY_NONE,
  KEYBOARD_CODE_KBDILLUMDOWN = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMUP = KBD_KEY_NONE, KEYBOARD_CODE_EJECT = KBD_KEY_NONE, KEYBOARD_CODE_SLEEP = KBD_KEY_NONE,
  KEYBOARD_CODE_APP1 = KBD_KEY_NONE, KEYBOARD_CODE_APP2 = KBD_KEY_NONE, MAX_KEYBOARD_CODES = 512, KEYBOARD_CODE_NONE = 0
}
 
enum  KeyboardCode {
  KEYBOARD_CODE_A = KBD_KEY_A, KEYBOARD_CODE_B = KBD_KEY_B, KEYBOARD_CODE_C = KBD_KEY_C, KEYBOARD_CODE_D = KBD_KEY_D,
  KEYBOARD_CODE_E = KBD_KEY_E, KEYBOARD_CODE_F = KBD_KEY_F, KEYBOARD_CODE_G = KBD_KEY_G, KEYBOARD_CODE_H = KBD_KEY_H,
  KEYBOARD_CODE_I = KBD_KEY_I, KEYBOARD_CODE_J = KBD_KEY_J, KEYBOARD_CODE_K = KBD_KEY_K, KEYBOARD_CODE_L = KBD_KEY_L,
  KEYBOARD_CODE_M = KBD_KEY_M, KEYBOARD_CODE_N = KBD_KEY_N, KEYBOARD_CODE_O = KBD_KEY_O, KEYBOARD_CODE_P = KBD_KEY_P,
  KEYBOARD_CODE_Q = KBD_KEY_Q, KEYBOARD_CODE_R = KBD_KEY_R, KEYBOARD_CODE_S = KBD_KEY_S, KEYBOARD_CODE_T = KBD_KEY_T,
  KEYBOARD_CODE_U = KBD_KEY_U, KEYBOARD_CODE_V = KBD_KEY_V, KEYBOARD_CODE_W = KBD_KEY_W, KEYBOARD_CODE_X = KBD_KEY_X,
  KEYBOARD_CODE_Y = KBD_KEY_Y, KEYBOARD_CODE_Z = KBD_KEY_Z, KEYBOARD_CODE_1 = KBD_KEY_1, KEYBOARD_CODE_2 = KBD_KEY_2,
  KEYBOARD_CODE_3 = KBD_KEY_3, KEYBOARD_CODE_4 = KBD_KEY_4, KEYBOARD_CODE_5 = KBD_KEY_5, KEYBOARD_CODE_6 = KBD_KEY_6,
  KEYBOARD_CODE_7 = KBD_KEY_7, KEYBOARD_CODE_8 = KBD_KEY_8, KEYBOARD_CODE_9 = KBD_KEY_9, KEYBOARD_CODE_0 = KBD_KEY_0,
  KEYBOARD_CODE_RETURN = KBD_KEY_ENTER, KEYBOARD_CODE_ESCAPE = KBD_KEY_ESCAPE, KEYBOARD_CODE_BACKSPACE = KBD_KEY_BACKSPACE, KEYBOARD_CODE_TAB = KBD_KEY_TAB,
  KEYBOARD_CODE_SPACE = KBD_KEY_SPACE, KEYBOARD_CODE_MINUS = KBD_KEY_MINUS, KEYBOARD_CODE_EQUALS = KBD_KEY_PLUS, KEYBOARD_CODE_LEFTBRACKET = KBD_KEY_LBRACKET,
  KEYBOARD_CODE_RIGHTBRACKET = KBD_KEY_RBRACKET, KEYBOARD_CODE_BACKSLASH = KBD_KEY_BACKSLASH, KEYBOARD_CODE_NONUSHASH = KBD_KEY_NONE, KEYBOARD_CODE_SEMICOLON = KBD_KEY_SEMICOLON,
  KEYBOARD_CODE_APOSTROPHE = KBD_KEY_QUOTE, KEYBOARD_CODE_GRAVE = KBD_KEY_TILDE, KEYBOARD_CODE_COMMA = KBD_KEY_COMMA, KEYBOARD_CODE_PERIOD = KBD_KEY_PERIOD,
  KEYBOARD_CODE_SLASH = KBD_KEY_SLASH, KEYBOARD_CODE_CAPSLOCK = KBD_KEY_CAPSLOCK, KEYBOARD_CODE_F1 = KBD_KEY_F1, KEYBOARD_CODE_F2 = KBD_KEY_F2,
  KEYBOARD_CODE_F3 = KBD_KEY_F3, KEYBOARD_CODE_F4 = KBD_KEY_F4, KEYBOARD_CODE_F5 = KBD_KEY_F5, KEYBOARD_CODE_F6 = KBD_KEY_F6,
  KEYBOARD_CODE_F7 = KBD_KEY_F7, KEYBOARD_CODE_F8 = KBD_KEY_F8, KEYBOARD_CODE_F9 = KBD_KEY_F9, KEYBOARD_CODE_F10 = KBD_KEY_F10,
  KEYBOARD_CODE_F11 = KBD_KEY_F11, KEYBOARD_CODE_F12 = KBD_KEY_F12, KEYBOARD_CODE_PRINTSCREEN = KBD_KEY_PRINT, KEYBOARD_CODE_SCROLLLOCK = KBD_KEY_SCRLOCK,
  KEYBOARD_CODE_PAUSE = KBD_KEY_PAUSE, KEYBOARD_CODE_INSERT = KBD_KEY_INSERT, KEYBOARD_CODE_HOME = KBD_KEY_HOME, KEYBOARD_CODE_PAGEUP = KBD_KEY_PGUP,
  KEYBOARD_CODE_DELETE = KBD_KEY_DEL, KEYBOARD_CODE_END = KBD_KEY_END, KEYBOARD_CODE_PAGEDOWN = KBD_KEY_PGDOWN, KEYBOARD_CODE_RIGHT = KBD_KEY_RIGHT,
  KEYBOARD_CODE_LEFT = KBD_KEY_LEFT, KEYBOARD_CODE_DOWN = KBD_KEY_DOWN, KEYBOARD_CODE_UP = KBD_KEY_UP, KEYBOARD_CODE_NUMLOCKCLEAR = KBD_KEY_PAD_NUMLOCK,
  KEYBOARD_CODE_KP_DIVIDE = KBD_KEY_PAD_DIVIDE, KEYBOARD_CODE_KP_MULTIPLY = KBD_KEY_PAD_MULTIPLY, KEYBOARD_CODE_KP_MINUS = KBD_KEY_PAD_MINUS, KEYBOARD_CODE_KP_PLUS = KBD_KEY_PAD_PLUS,
  KEYBOARD_CODE_KP_ENTER = KBD_KEY_PAD_ENTER, KEYBOARD_CODE_KP_1 = KBD_KEY_PAD_1, KEYBOARD_CODE_KP_2 = KBD_KEY_PAD_2, KEYBOARD_CODE_KP_3 = KBD_KEY_PAD_3,
  KEYBOARD_CODE_KP_4 = KBD_KEY_PAD_4, KEYBOARD_CODE_KP_5 = KBD_KEY_PAD_5, KEYBOARD_CODE_KP_6 = KBD_KEY_PAD_6, KEYBOARD_CODE_KP_7 = KBD_KEY_PAD_7,
  KEYBOARD_CODE_KP_8 = KBD_KEY_PAD_8, KEYBOARD_CODE_KP_9 = KBD_KEY_PAD_9, KEYBOARD_CODE_KP_0 = KBD_KEY_PAD_0, KEYBOARD_CODE_KP_PERIOD = KBD_KEY_PAD_PERIOD,
  KEYBOARD_CODE_NONUSBACKSLASH = KBD_KEY_NONE, KEYBOARD_CODE_APPLICATION = KBD_KEY_NONE, KEYBOARD_CODE_POWER = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALS = KBD_KEY_NONE,
  KEYBOARD_CODE_F13 = KBD_KEY_NONE, KEYBOARD_CODE_F14 = KBD_KEY_NONE, KEYBOARD_CODE_F15 = KBD_KEY_NONE, KEYBOARD_CODE_F16 = KBD_KEY_NONE,
  KEYBOARD_CODE_F17 = KBD_KEY_NONE, KEYBOARD_CODE_F18 = KBD_KEY_NONE, KEYBOARD_CODE_F19 = KBD_KEY_NONE, KEYBOARD_CODE_F20 = KBD_KEY_NONE,
  KEYBOARD_CODE_F21 = KBD_KEY_NONE, KEYBOARD_CODE_F22 = KBD_KEY_NONE, KEYBOARD_CODE_F23 = KBD_KEY_NONE, KEYBOARD_CODE_F24 = KBD_KEY_NONE,
  KEYBOARD_CODE_EXECUTE = KBD_KEY_NONE, KEYBOARD_CODE_HELP = KBD_KEY_NONE, KEYBOARD_CODE_MENU = KBD_KEY_NONE, KEYBOARD_CODE_SELECT = KBD_KEY_NONE,
  KEYBOARD_CODE_STOP = KBD_KEY_NONE, KEYBOARD_CODE_AGAIN = KBD_KEY_NONE, KEYBOARD_CODE_UNDO = KBD_KEY_NONE, KEYBOARD_CODE_CUT = KBD_KEY_NONE,
  KEYBOARD_CODE_COPY = KBD_KEY_NONE, KEYBOARD_CODE_PASTE = KBD_KEY_NONE, KEYBOARD_CODE_FIND = KBD_KEY_NONE, KEYBOARD_CODE_MUTE = KBD_KEY_NONE,
  KEYBOARD_CODE_VOLUMEUP = KBD_KEY_NONE, KEYBOARD_CODE_VOLUMEDOWN = KBD_KEY_NONE, KEYBOARD_CODE_KP_COMMA = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALSAS400 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL1 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL2 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL3 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL4 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL5 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL6 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL7 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL8 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL9 = KBD_KEY_NONE, KEYBOARD_CODE_LANG1 = KBD_KEY_NONE, KEYBOARD_CODE_LANG2 = KBD_KEY_NONE, KEYBOARD_CODE_LANG3 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG4 = KBD_KEY_NONE, KEYBOARD_CODE_LANG5 = KBD_KEY_NONE, KEYBOARD_CODE_LANG6 = KBD_KEY_NONE, KEYBOARD_CODE_LANG7 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG8 = KBD_KEY_NONE, KEYBOARD_CODE_LANG9 = KBD_KEY_NONE, KEYBOARD_CODE_ALTERASE = KBD_KEY_NONE, KEYBOARD_CODE_SYSREQ = KBD_KEY_NONE,
  KEYBOARD_CODE_CANCEL = KBD_KEY_NONE, KEYBOARD_CODE_CLEAR = KBD_KEY_NONE, KEYBOARD_CODE_PRIOR = KBD_KEY_NONE, KEYBOARD_CODE_RETURN2 = KBD_KEY_NONE,
  KEYBOARD_CODE_SEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_OUT = KBD_KEY_NONE, KEYBOARD_CODE_OPER = KBD_KEY_NONE, KEYBOARD_CODE_CLEARAGAIN = KBD_KEY_NONE,
  KEYBOARD_CODE_CRSEL = KBD_KEY_NONE, KEYBOARD_CODE_EXSEL = KBD_KEY_NONE, KEYBOARD_CODE_KP_00 = KBD_KEY_NONE, KEYBOARD_CODE_KP_000 = KBD_KEY_NONE,
  KEYBOARD_CODE_THOUSANDSSEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_DECIMALSEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_CURRENCYUNIT = KBD_KEY_NONE, KEYBOARD_CODE_CURRENCYSUBUNIT = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_LEFTPAREN = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTPAREN = KBD_KEY_NONE, KEYBOARD_CODE_KP_LEFTBRACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTBRACE = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_TAB = KBD_KEY_NONE, KEYBOARD_CODE_KP_BACKSPACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_A = KBD_KEY_NONE, KEYBOARD_CODE_KP_B = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_C = KBD_KEY_NONE, KEYBOARD_CODE_KP_D = KBD_KEY_NONE, KEYBOARD_CODE_KP_E = KBD_KEY_NONE, KEYBOARD_CODE_KP_F = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_XOR = KBD_KEY_NONE, KEYBOARD_CODE_KP_POWER = KBD_KEY_NONE, KEYBOARD_CODE_KP_PERCENT = KBD_KEY_NONE, KEYBOARD_CODE_KP_LESS = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_GREATER = KBD_KEY_NONE, KEYBOARD_CODE_KP_AMPERSAND = KBD_KEY_NONE, KEYBOARD_CODE_KP_DBLAMPERSAND = KBD_KEY_NONE, KEYBOARD_CODE_KP_VERTICALBAR = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_DBLVERTICALBAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_COLON = KBD_KEY_NONE, KEYBOARD_CODE_KP_HASH = KBD_KEY_NONE, KEYBOARD_CODE_KP_SPACE = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_AT = KBD_KEY_NONE, KEYBOARD_CODE_KP_EXCLAM = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMSTORE = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMRECALL = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMCLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMADD = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMSUBTRACT = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMMULTIPLY = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMDIVIDE = KBD_KEY_NONE, KEYBOARD_CODE_KP_PLUSMINUS = KBD_KEY_NONE, KEYBOARD_CODE_KP_CLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_CLEARENTRY = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_BINARY = KBD_KEY_NONE, KEYBOARD_CODE_KP_OCTAL = KBD_KEY_NONE, KEYBOARD_CODE_KP_DECIMAL = KBD_KEY_NONE, KEYBOARD_CODE_KP_HEXADECIMAL = KBD_KEY_NONE,
  KEYBOARD_CODE_LCTRL = KBD_KEY_NONE, KEYBOARD_CODE_LSHIFT = KBD_KEY_NONE, KEYBOARD_CODE_LALT = KBD_KEY_NONE, KEYBOARD_CODE_LGUI = KBD_KEY_NONE,
  KEYBOARD_CODE_RCTRL = KBD_KEY_NONE, KEYBOARD_CODE_RSHIFT = KBD_KEY_NONE, KEYBOARD_CODE_RALT = KBD_KEY_NONE, KEYBOARD_CODE_RGUI = KBD_KEY_NONE,
  KEYBOARD_CODE_MODE = KBD_KEY_NONE, KEYBOARD_CODE_AUDIONEXT = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOPREV = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOSTOP = KBD_KEY_NONE,
  KEYBOARD_CODE_AUDIOPLAY = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOMUTE = KBD_KEY_NONE, KEYBOARD_CODE_MEDIASELECT = KBD_KEY_NONE, KEYBOARD_CODE_WWW = KBD_KEY_NONE,
  KEYBOARD_CODE_MAIL = KBD_KEY_NONE, KEYBOARD_CODE_CALCULATOR = KBD_KEY_NONE, KEYBOARD_CODE_COMPUTER = KBD_KEY_NONE, KEYBOARD_CODE_AC_SEARCH = KBD_KEY_NONE,
  KEYBOARD_CODE_AC_HOME = KBD_KEY_NONE, KEYBOARD_CODE_AC_BACK = KBD_KEY_NONE, KEYBOARD_CODE_AC_FORWARD = KBD_KEY_NONE, KEYBOARD_CODE_AC_STOP = KBD_KEY_NONE,
  KEYBOARD_CODE_AC_REFRESH = KBD_KEY_NONE, KEYBOARD_CODE_AC_BOOKMARKS = KBD_KEY_NONE, KEYBOARD_CODE_BRIGHTNESSDOWN = KBD_KEY_NONE, KEYBOARD_CODE_BRIGHTNESSUP = KBD_KEY_NONE,
  KEYBOARD_CODE_DISPLAYSWITCH = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMTOGGLE = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMDOWN = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMUP = KBD_KEY_NONE,
  KEYBOARD_CODE_EJECT = KBD_KEY_NONE, KEYBOARD_CODE_SLEEP = KBD_KEY_NONE, KEYBOARD_CODE_APP1 = KBD_KEY_NONE, KEYBOARD_CODE_APP2 = KBD_KEY_NONE,
  MAX_KEYBOARD_CODES = 512, KEYBOARD_CODE_NONE = 0, KEYBOARD_CODE_A = KBD_KEY_A, KEYBOARD_CODE_B = KBD_KEY_B,
  KEYBOARD_CODE_C = KBD_KEY_C, KEYBOARD_CODE_D = KBD_KEY_D, KEYBOARD_CODE_E = KBD_KEY_E, KEYBOARD_CODE_F = KBD_KEY_F,
  KEYBOARD_CODE_G = KBD_KEY_G, KEYBOARD_CODE_H = KBD_KEY_H, KEYBOARD_CODE_I = KBD_KEY_I, KEYBOARD_CODE_J = KBD_KEY_J,
  KEYBOARD_CODE_K = KBD_KEY_K, KEYBOARD_CODE_L = KBD_KEY_L, KEYBOARD_CODE_M = KBD_KEY_M, KEYBOARD_CODE_N = KBD_KEY_N,
  KEYBOARD_CODE_O = KBD_KEY_O, KEYBOARD_CODE_P = KBD_KEY_P, KEYBOARD_CODE_Q = KBD_KEY_Q, KEYBOARD_CODE_R = KBD_KEY_R,
  KEYBOARD_CODE_S = KBD_KEY_S, KEYBOARD_CODE_T = KBD_KEY_T, KEYBOARD_CODE_U = KBD_KEY_U, KEYBOARD_CODE_V = KBD_KEY_V,
  KEYBOARD_CODE_W = KBD_KEY_W, KEYBOARD_CODE_X = KBD_KEY_X, KEYBOARD_CODE_Y = KBD_KEY_Y, KEYBOARD_CODE_Z = KBD_KEY_Z,
  KEYBOARD_CODE_1 = KBD_KEY_1, KEYBOARD_CODE_2 = KBD_KEY_2, KEYBOARD_CODE_3 = KBD_KEY_3, KEYBOARD_CODE_4 = KBD_KEY_4,
  KEYBOARD_CODE_5 = KBD_KEY_5, KEYBOARD_CODE_6 = KBD_KEY_6, KEYBOARD_CODE_7 = KBD_KEY_7, KEYBOARD_CODE_8 = KBD_KEY_8,
  KEYBOARD_CODE_9 = KBD_KEY_9, KEYBOARD_CODE_0 = KBD_KEY_0, KEYBOARD_CODE_RETURN = KBD_KEY_ENTER, KEYBOARD_CODE_ESCAPE = KBD_KEY_ESCAPE,
  KEYBOARD_CODE_BACKSPACE = KBD_KEY_BACKSPACE, KEYBOARD_CODE_TAB = KBD_KEY_TAB, KEYBOARD_CODE_SPACE = KBD_KEY_SPACE, KEYBOARD_CODE_MINUS = KBD_KEY_MINUS,
  KEYBOARD_CODE_EQUALS = KBD_KEY_PLUS, KEYBOARD_CODE_LEFTBRACKET = KBD_KEY_LBRACKET, KEYBOARD_CODE_RIGHTBRACKET = KBD_KEY_RBRACKET, KEYBOARD_CODE_BACKSLASH = KBD_KEY_BACKSLASH,
  KEYBOARD_CODE_NONUSHASH = KBD_KEY_NONE, KEYBOARD_CODE_SEMICOLON = KBD_KEY_SEMICOLON, KEYBOARD_CODE_APOSTROPHE = KBD_KEY_QUOTE, KEYBOARD_CODE_GRAVE = KBD_KEY_TILDE,
  KEYBOARD_CODE_COMMA = KBD_KEY_COMMA, KEYBOARD_CODE_PERIOD = KBD_KEY_PERIOD, KEYBOARD_CODE_SLASH = KBD_KEY_SLASH, KEYBOARD_CODE_CAPSLOCK = KBD_KEY_CAPSLOCK,
  KEYBOARD_CODE_F1 = KBD_KEY_F1, KEYBOARD_CODE_F2 = KBD_KEY_F2, KEYBOARD_CODE_F3 = KBD_KEY_F3, KEYBOARD_CODE_F4 = KBD_KEY_F4,
  KEYBOARD_CODE_F5 = KBD_KEY_F5, KEYBOARD_CODE_F6 = KBD_KEY_F6, KEYBOARD_CODE_F7 = KBD_KEY_F7, KEYBOARD_CODE_F8 = KBD_KEY_F8,
  KEYBOARD_CODE_F9 = KBD_KEY_F9, KEYBOARD_CODE_F10 = KBD_KEY_F10, KEYBOARD_CODE_F11 = KBD_KEY_F11, KEYBOARD_CODE_F12 = KBD_KEY_F12,
  KEYBOARD_CODE_PRINTSCREEN = KBD_KEY_PRINT, KEYBOARD_CODE_SCROLLLOCK = KBD_KEY_SCRLOCK, KEYBOARD_CODE_PAUSE = KBD_KEY_PAUSE, KEYBOARD_CODE_INSERT = KBD_KEY_INSERT,
  KEYBOARD_CODE_HOME = KBD_KEY_HOME, KEYBOARD_CODE_PAGEUP = KBD_KEY_PGUP, KEYBOARD_CODE_DELETE = KBD_KEY_DEL, KEYBOARD_CODE_END = KBD_KEY_END,
  KEYBOARD_CODE_PAGEDOWN = KBD_KEY_PGDOWN, KEYBOARD_CODE_RIGHT = KBD_KEY_RIGHT, KEYBOARD_CODE_LEFT = KBD_KEY_LEFT, KEYBOARD_CODE_DOWN = KBD_KEY_DOWN,
  KEYBOARD_CODE_UP = KBD_KEY_UP, KEYBOARD_CODE_NUMLOCKCLEAR = KBD_KEY_PAD_NUMLOCK, KEYBOARD_CODE_KP_DIVIDE = KBD_KEY_PAD_DIVIDE, KEYBOARD_CODE_KP_MULTIPLY = KBD_KEY_PAD_MULTIPLY,
  KEYBOARD_CODE_KP_MINUS = KBD_KEY_PAD_MINUS, KEYBOARD_CODE_KP_PLUS = KBD_KEY_PAD_PLUS, KEYBOARD_CODE_KP_ENTER = KBD_KEY_PAD_ENTER, KEYBOARD_CODE_KP_1 = KBD_KEY_PAD_1,
  KEYBOARD_CODE_KP_2 = KBD_KEY_PAD_2, KEYBOARD_CODE_KP_3 = KBD_KEY_PAD_3, KEYBOARD_CODE_KP_4 = KBD_KEY_PAD_4, KEYBOARD_CODE_KP_5 = KBD_KEY_PAD_5,
  KEYBOARD_CODE_KP_6 = KBD_KEY_PAD_6, KEYBOARD_CODE_KP_7 = KBD_KEY_PAD_7, KEYBOARD_CODE_KP_8 = KBD_KEY_PAD_8, KEYBOARD_CODE_KP_9 = KBD_KEY_PAD_9,
  KEYBOARD_CODE_KP_0 = KBD_KEY_PAD_0, KEYBOARD_CODE_KP_PERIOD = KBD_KEY_PAD_PERIOD, KEYBOARD_CODE_NONUSBACKSLASH = KBD_KEY_NONE, KEYBOARD_CODE_APPLICATION = KBD_KEY_NONE,
  KEYBOARD_CODE_POWER = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALS = KBD_KEY_NONE, KEYBOARD_CODE_F13 = KBD_KEY_NONE, KEYBOARD_CODE_F14 = KBD_KEY_NONE,
  KEYBOARD_CODE_F15 = KBD_KEY_NONE, KEYBOARD_CODE_F16 = KBD_KEY_NONE, KEYBOARD_CODE_F17 = KBD_KEY_NONE, KEYBOARD_CODE_F18 = KBD_KEY_NONE,
  KEYBOARD_CODE_F19 = KBD_KEY_NONE, KEYBOARD_CODE_F20 = KBD_KEY_NONE, KEYBOARD_CODE_F21 = KBD_KEY_NONE, KEYBOARD_CODE_F22 = KBD_KEY_NONE,
  KEYBOARD_CODE_F23 = KBD_KEY_NONE, KEYBOARD_CODE_F24 = KBD_KEY_NONE, KEYBOARD_CODE_EXECUTE = KBD_KEY_NONE, KEYBOARD_CODE_HELP = KBD_KEY_NONE,
  KEYBOARD_CODE_MENU = KBD_KEY_NONE, KEYBOARD_CODE_SELECT = KBD_KEY_NONE, KEYBOARD_CODE_STOP = KBD_KEY_NONE, KEYBOARD_CODE_AGAIN = KBD_KEY_NONE,
  KEYBOARD_CODE_UNDO = KBD_KEY_NONE, KEYBOARD_CODE_CUT = KBD_KEY_NONE, KEYBOARD_CODE_COPY = KBD_KEY_NONE, KEYBOARD_CODE_PASTE = KBD_KEY_NONE,
  KEYBOARD_CODE_FIND = KBD_KEY_NONE, KEYBOARD_CODE_MUTE = KBD_KEY_NONE, KEYBOARD_CODE_VOLUMEUP = KBD_KEY_NONE, KEYBOARD_CODE_VOLUMEDOWN = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_COMMA = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALSAS400 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL1 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL2 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL3 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL4 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL5 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL6 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL7 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL8 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL9 = KBD_KEY_NONE, KEYBOARD_CODE_LANG1 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG2 = KBD_KEY_NONE, KEYBOARD_CODE_LANG3 = KBD_KEY_NONE, KEYBOARD_CODE_LANG4 = KBD_KEY_NONE, KEYBOARD_CODE_LANG5 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG6 = KBD_KEY_NONE, KEYBOARD_CODE_LANG7 = KBD_KEY_NONE, KEYBOARD_CODE_LANG8 = KBD_KEY_NONE, KEYBOARD_CODE_LANG9 = KBD_KEY_NONE,
  KEYBOARD_CODE_ALTERASE = KBD_KEY_NONE, KEYBOARD_CODE_SYSREQ = KBD_KEY_NONE, KEYBOARD_CODE_CANCEL = KBD_KEY_NONE, KEYBOARD_CODE_CLEAR = KBD_KEY_NONE,
  KEYBOARD_CODE_PRIOR = KBD_KEY_NONE, KEYBOARD_CODE_RETURN2 = KBD_KEY_NONE, KEYBOARD_CODE_SEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_OUT = KBD_KEY_NONE,
  KEYBOARD_CODE_OPER = KBD_KEY_NONE, KEYBOARD_CODE_CLEARAGAIN = KBD_KEY_NONE, KEYBOARD_CODE_CRSEL = KBD_KEY_NONE, KEYBOARD_CODE_EXSEL = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_00 = KBD_KEY_NONE, KEYBOARD_CODE_KP_000 = KBD_KEY_NONE, KEYBOARD_CODE_THOUSANDSSEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_DECIMALSEPARATOR = KBD_KEY_NONE,
  KEYBOARD_CODE_CURRENCYUNIT = KBD_KEY_NONE, KEYBOARD_CODE_CURRENCYSUBUNIT = KBD_KEY_NONE, KEYBOARD_CODE_KP_LEFTPAREN = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTPAREN = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_LEFTBRACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTBRACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_TAB = KBD_KEY_NONE, KEYBOARD_CODE_KP_BACKSPACE = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_A = KBD_KEY_NONE, KEYBOARD_CODE_KP_B = KBD_KEY_NONE, KEYBOARD_CODE_KP_C = KBD_KEY_NONE, KEYBOARD_CODE_KP_D = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_E = KBD_KEY_NONE, KEYBOARD_CODE_KP_F = KBD_KEY_NONE, KEYBOARD_CODE_KP_XOR = KBD_KEY_NONE, KEYBOARD_CODE_KP_POWER = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_PERCENT = KBD_KEY_NONE, KEYBOARD_CODE_KP_LESS = KBD_KEY_NONE, KEYBOARD_CODE_KP_GREATER = KBD_KEY_NONE, KEYBOARD_CODE_KP_AMPERSAND = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_DBLAMPERSAND = KBD_KEY_NONE, KEYBOARD_CODE_KP_VERTICALBAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_DBLVERTICALBAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_COLON = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_HASH = KBD_KEY_NONE, KEYBOARD_CODE_KP_SPACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_AT = KBD_KEY_NONE, KEYBOARD_CODE_KP_EXCLAM = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMSTORE = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMRECALL = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMCLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMADD = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMSUBTRACT = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMMULTIPLY = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMDIVIDE = KBD_KEY_NONE, KEYBOARD_CODE_KP_PLUSMINUS = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_CLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_CLEARENTRY = KBD_KEY_NONE, KEYBOARD_CODE_KP_BINARY = KBD_KEY_NONE, KEYBOARD_CODE_KP_OCTAL = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_DECIMAL = KBD_KEY_NONE, KEYBOARD_CODE_KP_HEXADECIMAL = KBD_KEY_NONE, KEYBOARD_CODE_LCTRL = KBD_KEY_NONE, KEYBOARD_CODE_LSHIFT = KBD_KEY_NONE,
  KEYBOARD_CODE_LALT = KBD_KEY_NONE, KEYBOARD_CODE_LGUI = KBD_KEY_NONE, KEYBOARD_CODE_RCTRL = KBD_KEY_NONE, KEYBOARD_CODE_RSHIFT = KBD_KEY_NONE,
  KEYBOARD_CODE_RALT = KBD_KEY_NONE, KEYBOARD_CODE_RGUI = KBD_KEY_NONE, KEYBOARD_CODE_MODE = KBD_KEY_NONE, KEYBOARD_CODE_AUDIONEXT = KBD_KEY_NONE,
  KEYBOARD_CODE_AUDIOPREV = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOSTOP = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOPLAY = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOMUTE = KBD_KEY_NONE,
  KEYBOARD_CODE_MEDIASELECT = KBD_KEY_NONE, KEYBOARD_CODE_WWW = KBD_KEY_NONE, KEYBOARD_CODE_MAIL = KBD_KEY_NONE, KEYBOARD_CODE_CALCULATOR = KBD_KEY_NONE,
  KEYBOARD_CODE_COMPUTER = KBD_KEY_NONE, KEYBOARD_CODE_AC_SEARCH = KBD_KEY_NONE, KEYBOARD_CODE_AC_HOME = KBD_KEY_NONE, KEYBOARD_CODE_AC_BACK = KBD_KEY_NONE,
  KEYBOARD_CODE_AC_FORWARD = KBD_KEY_NONE, KEYBOARD_CODE_AC_STOP = KBD_KEY_NONE, KEYBOARD_CODE_AC_REFRESH = KBD_KEY_NONE, KEYBOARD_CODE_AC_BOOKMARKS = KBD_KEY_NONE,
  KEYBOARD_CODE_BRIGHTNESSDOWN = KBD_KEY_NONE, KEYBOARD_CODE_BRIGHTNESSUP = KBD_KEY_NONE, KEYBOARD_CODE_DISPLAYSWITCH = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMTOGGLE = KBD_KEY_NONE,
  KEYBOARD_CODE_KBDILLUMDOWN = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMUP = KBD_KEY_NONE, KEYBOARD_CODE_EJECT = KBD_KEY_NONE, KEYBOARD_CODE_SLEEP = KBD_KEY_NONE,
  KEYBOARD_CODE_APP1 = KBD_KEY_NONE, KEYBOARD_CODE_APP2 = KBD_KEY_NONE, MAX_KEYBOARD_CODES = 512, KEYBOARD_CODE_NONE = 0,
  KEYBOARD_CODE_A = KBD_KEY_A, KEYBOARD_CODE_B = KBD_KEY_B, KEYBOARD_CODE_C = KBD_KEY_C, KEYBOARD_CODE_D = KBD_KEY_D,
  KEYBOARD_CODE_E = KBD_KEY_E, KEYBOARD_CODE_F = KBD_KEY_F, KEYBOARD_CODE_G = KBD_KEY_G, KEYBOARD_CODE_H = KBD_KEY_H,
  KEYBOARD_CODE_I = KBD_KEY_I, KEYBOARD_CODE_J = KBD_KEY_J, KEYBOARD_CODE_K = KBD_KEY_K, KEYBOARD_CODE_L = KBD_KEY_L,
  KEYBOARD_CODE_M = KBD_KEY_M, KEYBOARD_CODE_N = KBD_KEY_N, KEYBOARD_CODE_O = KBD_KEY_O, KEYBOARD_CODE_P = KBD_KEY_P,
  KEYBOARD_CODE_Q = KBD_KEY_Q, KEYBOARD_CODE_R = KBD_KEY_R, KEYBOARD_CODE_S = KBD_KEY_S, KEYBOARD_CODE_T = KBD_KEY_T,
  KEYBOARD_CODE_U = KBD_KEY_U, KEYBOARD_CODE_V = KBD_KEY_V, KEYBOARD_CODE_W = KBD_KEY_W, KEYBOARD_CODE_X = KBD_KEY_X,
  KEYBOARD_CODE_Y = KBD_KEY_Y, KEYBOARD_CODE_Z = KBD_KEY_Z, KEYBOARD_CODE_1 = KBD_KEY_1, KEYBOARD_CODE_2 = KBD_KEY_2,
  KEYBOARD_CODE_3 = KBD_KEY_3, KEYBOARD_CODE_4 = KBD_KEY_4, KEYBOARD_CODE_5 = KBD_KEY_5, KEYBOARD_CODE_6 = KBD_KEY_6,
  KEYBOARD_CODE_7 = KBD_KEY_7, KEYBOARD_CODE_8 = KBD_KEY_8, KEYBOARD_CODE_9 = KBD_KEY_9, KEYBOARD_CODE_0 = KBD_KEY_0,
  KEYBOARD_CODE_RETURN = KBD_KEY_ENTER, KEYBOARD_CODE_ESCAPE = KBD_KEY_ESCAPE, KEYBOARD_CODE_BACKSPACE = KBD_KEY_BACKSPACE, KEYBOARD_CODE_TAB = KBD_KEY_TAB,
  KEYBOARD_CODE_SPACE = KBD_KEY_SPACE, KEYBOARD_CODE_MINUS = KBD_KEY_MINUS, KEYBOARD_CODE_EQUALS = KBD_KEY_PLUS, KEYBOARD_CODE_LEFTBRACKET = KBD_KEY_LBRACKET,
  KEYBOARD_CODE_RIGHTBRACKET = KBD_KEY_RBRACKET, KEYBOARD_CODE_BACKSLASH = KBD_KEY_BACKSLASH, KEYBOARD_CODE_NONUSHASH = KBD_KEY_NONE, KEYBOARD_CODE_SEMICOLON = KBD_KEY_SEMICOLON,
  KEYBOARD_CODE_APOSTROPHE = KBD_KEY_QUOTE, KEYBOARD_CODE_GRAVE = KBD_KEY_TILDE, KEYBOARD_CODE_COMMA = KBD_KEY_COMMA, KEYBOARD_CODE_PERIOD = KBD_KEY_PERIOD,
  KEYBOARD_CODE_SLASH = KBD_KEY_SLASH, KEYBOARD_CODE_CAPSLOCK = KBD_KEY_CAPSLOCK, KEYBOARD_CODE_F1 = KBD_KEY_F1, KEYBOARD_CODE_F2 = KBD_KEY_F2,
  KEYBOARD_CODE_F3 = KBD_KEY_F3, KEYBOARD_CODE_F4 = KBD_KEY_F4, KEYBOARD_CODE_F5 = KBD_KEY_F5, KEYBOARD_CODE_F6 = KBD_KEY_F6,
  KEYBOARD_CODE_F7 = KBD_KEY_F7, KEYBOARD_CODE_F8 = KBD_KEY_F8, KEYBOARD_CODE_F9 = KBD_KEY_F9, KEYBOARD_CODE_F10 = KBD_KEY_F10,
  KEYBOARD_CODE_F11 = KBD_KEY_F11, KEYBOARD_CODE_F12 = KBD_KEY_F12, KEYBOARD_CODE_PRINTSCREEN = KBD_KEY_PRINT, KEYBOARD_CODE_SCROLLLOCK = KBD_KEY_SCRLOCK,
  KEYBOARD_CODE_PAUSE = KBD_KEY_PAUSE, KEYBOARD_CODE_INSERT = KBD_KEY_INSERT, KEYBOARD_CODE_HOME = KBD_KEY_HOME, KEYBOARD_CODE_PAGEUP = KBD_KEY_PGUP,
  KEYBOARD_CODE_DELETE = KBD_KEY_DEL, KEYBOARD_CODE_END = KBD_KEY_END, KEYBOARD_CODE_PAGEDOWN = KBD_KEY_PGDOWN, KEYBOARD_CODE_RIGHT = KBD_KEY_RIGHT,
  KEYBOARD_CODE_LEFT = KBD_KEY_LEFT, KEYBOARD_CODE_DOWN = KBD_KEY_DOWN, KEYBOARD_CODE_UP = KBD_KEY_UP, KEYBOARD_CODE_NUMLOCKCLEAR = KBD_KEY_PAD_NUMLOCK,
  KEYBOARD_CODE_KP_DIVIDE = KBD_KEY_PAD_DIVIDE, KEYBOARD_CODE_KP_MULTIPLY = KBD_KEY_PAD_MULTIPLY, KEYBOARD_CODE_KP_MINUS = KBD_KEY_PAD_MINUS, KEYBOARD_CODE_KP_PLUS = KBD_KEY_PAD_PLUS,
  KEYBOARD_CODE_KP_ENTER = KBD_KEY_PAD_ENTER, KEYBOARD_CODE_KP_1 = KBD_KEY_PAD_1, KEYBOARD_CODE_KP_2 = KBD_KEY_PAD_2, KEYBOARD_CODE_KP_3 = KBD_KEY_PAD_3,
  KEYBOARD_CODE_KP_4 = KBD_KEY_PAD_4, KEYBOARD_CODE_KP_5 = KBD_KEY_PAD_5, KEYBOARD_CODE_KP_6 = KBD_KEY_PAD_6, KEYBOARD_CODE_KP_7 = KBD_KEY_PAD_7,
  KEYBOARD_CODE_KP_8 = KBD_KEY_PAD_8, KEYBOARD_CODE_KP_9 = KBD_KEY_PAD_9, KEYBOARD_CODE_KP_0 = KBD_KEY_PAD_0, KEYBOARD_CODE_KP_PERIOD = KBD_KEY_PAD_PERIOD,
  KEYBOARD_CODE_NONUSBACKSLASH = KBD_KEY_NONE, KEYBOARD_CODE_APPLICATION = KBD_KEY_NONE, KEYBOARD_CODE_POWER = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALS = KBD_KEY_NONE,
  KEYBOARD_CODE_F13 = KBD_KEY_NONE, KEYBOARD_CODE_F14 = KBD_KEY_NONE, KEYBOARD_CODE_F15 = KBD_KEY_NONE, KEYBOARD_CODE_F16 = KBD_KEY_NONE,
  KEYBOARD_CODE_F17 = KBD_KEY_NONE, KEYBOARD_CODE_F18 = KBD_KEY_NONE, KEYBOARD_CODE_F19 = KBD_KEY_NONE, KEYBOARD_CODE_F20 = KBD_KEY_NONE,
  KEYBOARD_CODE_F21 = KBD_KEY_NONE, KEYBOARD_CODE_F22 = KBD_KEY_NONE, KEYBOARD_CODE_F23 = KBD_KEY_NONE, KEYBOARD_CODE_F24 = KBD_KEY_NONE,
  KEYBOARD_CODE_EXECUTE = KBD_KEY_NONE, KEYBOARD_CODE_HELP = KBD_KEY_NONE, KEYBOARD_CODE_MENU = KBD_KEY_NONE, KEYBOARD_CODE_SELECT = KBD_KEY_NONE,
  KEYBOARD_CODE_STOP = KBD_KEY_NONE, KEYBOARD_CODE_AGAIN = KBD_KEY_NONE, KEYBOARD_CODE_UNDO = KBD_KEY_NONE, KEYBOARD_CODE_CUT = KBD_KEY_NONE,
  KEYBOARD_CODE_COPY = KBD_KEY_NONE, KEYBOARD_CODE_PASTE = KBD_KEY_NONE, KEYBOARD_CODE_FIND = KBD_KEY_NONE, KEYBOARD_CODE_MUTE = KBD_KEY_NONE,
  KEYBOARD_CODE_VOLUMEUP = KBD_KEY_NONE, KEYBOARD_CODE_VOLUMEDOWN = KBD_KEY_NONE, KEYBOARD_CODE_KP_COMMA = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALSAS400 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL1 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL2 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL3 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL4 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL5 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL6 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL7 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL8 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL9 = KBD_KEY_NONE, KEYBOARD_CODE_LANG1 = KBD_KEY_NONE, KEYBOARD_CODE_LANG2 = KBD_KEY_NONE, KEYBOARD_CODE_LANG3 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG4 = KBD_KEY_NONE, KEYBOARD_CODE_LANG5 = KBD_KEY_NONE, KEYBOARD_CODE_LANG6 = KBD_KEY_NONE, KEYBOARD_CODE_LANG7 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG8 = KBD_KEY_NONE, KEYBOARD_CODE_LANG9 = KBD_KEY_NONE, KEYBOARD_CODE_ALTERASE = KBD_KEY_NONE, KEYBOARD_CODE_SYSREQ = KBD_KEY_NONE,
  KEYBOARD_CODE_CANCEL = KBD_KEY_NONE, KEYBOARD_CODE_CLEAR = KBD_KEY_NONE, KEYBOARD_CODE_PRIOR = KBD_KEY_NONE, KEYBOARD_CODE_RETURN2 = KBD_KEY_NONE,
  KEYBOARD_CODE_SEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_OUT = KBD_KEY_NONE, KEYBOARD_CODE_OPER = KBD_KEY_NONE, KEYBOARD_CODE_CLEARAGAIN = KBD_KEY_NONE,
  KEYBOARD_CODE_CRSEL = KBD_KEY_NONE, KEYBOARD_CODE_EXSEL = KBD_KEY_NONE, KEYBOARD_CODE_KP_00 = KBD_KEY_NONE, KEYBOARD_CODE_KP_000 = KBD_KEY_NONE,
  KEYBOARD_CODE_THOUSANDSSEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_DECIMALSEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_CURRENCYUNIT = KBD_KEY_NONE, KEYBOARD_CODE_CURRENCYSUBUNIT = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_LEFTPAREN = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTPAREN = KBD_KEY_NONE, KEYBOARD_CODE_KP_LEFTBRACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTBRACE = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_TAB = KBD_KEY_NONE, KEYBOARD_CODE_KP_BACKSPACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_A = KBD_KEY_NONE, KEYBOARD_CODE_KP_B = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_C = KBD_KEY_NONE, KEYBOARD_CODE_KP_D = KBD_KEY_NONE, KEYBOARD_CODE_KP_E = KBD_KEY_NONE, KEYBOARD_CODE_KP_F = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_XOR = KBD_KEY_NONE, KEYBOARD_CODE_KP_POWER = KBD_KEY_NONE, KEYBOARD_CODE_KP_PERCENT = KBD_KEY_NONE, KEYBOARD_CODE_KP_LESS = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_GREATER = KBD_KEY_NONE, KEYBOARD_CODE_KP_AMPERSAND = KBD_KEY_NONE, KEYBOARD_CODE_KP_DBLAMPERSAND = KBD_KEY_NONE, KEYBOARD_CODE_KP_VERTICALBAR = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_DBLVERTICALBAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_COLON = KBD_KEY_NONE, KEYBOARD_CODE_KP_HASH = KBD_KEY_NONE, KEYBOARD_CODE_KP_SPACE = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_AT = KBD_KEY_NONE, KEYBOARD_CODE_KP_EXCLAM = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMSTORE = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMRECALL = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMCLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMADD = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMSUBTRACT = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMMULTIPLY = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMDIVIDE = KBD_KEY_NONE, KEYBOARD_CODE_KP_PLUSMINUS = KBD_KEY_NONE, KEYBOARD_CODE_KP_CLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_CLEARENTRY = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_BINARY = KBD_KEY_NONE, KEYBOARD_CODE_KP_OCTAL = KBD_KEY_NONE, KEYBOARD_CODE_KP_DECIMAL = KBD_KEY_NONE, KEYBOARD_CODE_KP_HEXADECIMAL = KBD_KEY_NONE,
  KEYBOARD_CODE_LCTRL = KBD_KEY_NONE, KEYBOARD_CODE_LSHIFT = KBD_KEY_NONE, KEYBOARD_CODE_LALT = KBD_KEY_NONE, KEYBOARD_CODE_LGUI = KBD_KEY_NONE,
  KEYBOARD_CODE_RCTRL = KBD_KEY_NONE, KEYBOARD_CODE_RSHIFT = KBD_KEY_NONE, KEYBOARD_CODE_RALT = KBD_KEY_NONE, KEYBOARD_CODE_RGUI = KBD_KEY_NONE,
  KEYBOARD_CODE_MODE = KBD_KEY_NONE, KEYBOARD_CODE_AUDIONEXT = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOPREV = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOSTOP = KBD_KEY_NONE,
  KEYBOARD_CODE_AUDIOPLAY = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOMUTE = KBD_KEY_NONE, KEYBOARD_CODE_MEDIASELECT = KBD_KEY_NONE, KEYBOARD_CODE_WWW = KBD_KEY_NONE,
  KEYBOARD_CODE_MAIL = KBD_KEY_NONE, KEYBOARD_CODE_CALCULATOR = KBD_KEY_NONE, KEYBOARD_CODE_COMPUTER = KBD_KEY_NONE, KEYBOARD_CODE_AC_SEARCH = KBD_KEY_NONE,
  KEYBOARD_CODE_AC_HOME = KBD_KEY_NONE, KEYBOARD_CODE_AC_BACK = KBD_KEY_NONE, KEYBOARD_CODE_AC_FORWARD = KBD_KEY_NONE, KEYBOARD_CODE_AC_STOP = KBD_KEY_NONE,
  KEYBOARD_CODE_AC_REFRESH = KBD_KEY_NONE, KEYBOARD_CODE_AC_BOOKMARKS = KBD_KEY_NONE, KEYBOARD_CODE_BRIGHTNESSDOWN = KBD_KEY_NONE, KEYBOARD_CODE_BRIGHTNESSUP = KBD_KEY_NONE,
  KEYBOARD_CODE_DISPLAYSWITCH = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMTOGGLE = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMDOWN = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMUP = KBD_KEY_NONE,
  KEYBOARD_CODE_EJECT = KBD_KEY_NONE, KEYBOARD_CODE_SLEEP = KBD_KEY_NONE, KEYBOARD_CODE_APP1 = KBD_KEY_NONE, KEYBOARD_CODE_APP2 = KBD_KEY_NONE,
  MAX_KEYBOARD_CODES = 512, KEYBOARD_CODE_NONE = 0, KEYBOARD_CODE_A = KBD_KEY_A, KEYBOARD_CODE_B = KBD_KEY_B,
  KEYBOARD_CODE_C = KBD_KEY_C, KEYBOARD_CODE_D = KBD_KEY_D, KEYBOARD_CODE_E = KBD_KEY_E, KEYBOARD_CODE_F = KBD_KEY_F,
  KEYBOARD_CODE_G = KBD_KEY_G, KEYBOARD_CODE_H = KBD_KEY_H, KEYBOARD_CODE_I = KBD_KEY_I, KEYBOARD_CODE_J = KBD_KEY_J,
  KEYBOARD_CODE_K = KBD_KEY_K, KEYBOARD_CODE_L = KBD_KEY_L, KEYBOARD_CODE_M = KBD_KEY_M, KEYBOARD_CODE_N = KBD_KEY_N,
  KEYBOARD_CODE_O = KBD_KEY_O, KEYBOARD_CODE_P = KBD_KEY_P, KEYBOARD_CODE_Q = KBD_KEY_Q, KEYBOARD_CODE_R = KBD_KEY_R,
  KEYBOARD_CODE_S = KBD_KEY_S, KEYBOARD_CODE_T = KBD_KEY_T, KEYBOARD_CODE_U = KBD_KEY_U, KEYBOARD_CODE_V = KBD_KEY_V,
  KEYBOARD_CODE_W = KBD_KEY_W, KEYBOARD_CODE_X = KBD_KEY_X, KEYBOARD_CODE_Y = KBD_KEY_Y, KEYBOARD_CODE_Z = KBD_KEY_Z,
  KEYBOARD_CODE_1 = KBD_KEY_1, KEYBOARD_CODE_2 = KBD_KEY_2, KEYBOARD_CODE_3 = KBD_KEY_3, KEYBOARD_CODE_4 = KBD_KEY_4,
  KEYBOARD_CODE_5 = KBD_KEY_5, KEYBOARD_CODE_6 = KBD_KEY_6, KEYBOARD_CODE_7 = KBD_KEY_7, KEYBOARD_CODE_8 = KBD_KEY_8,
  KEYBOARD_CODE_9 = KBD_KEY_9, KEYBOARD_CODE_0 = KBD_KEY_0, KEYBOARD_CODE_RETURN = KBD_KEY_ENTER, KEYBOARD_CODE_ESCAPE = KBD_KEY_ESCAPE,
  KEYBOARD_CODE_BACKSPACE = KBD_KEY_BACKSPACE, KEYBOARD_CODE_TAB = KBD_KEY_TAB, KEYBOARD_CODE_SPACE = KBD_KEY_SPACE, KEYBOARD_CODE_MINUS = KBD_KEY_MINUS,
  KEYBOARD_CODE_EQUALS = KBD_KEY_PLUS, KEYBOARD_CODE_LEFTBRACKET = KBD_KEY_LBRACKET, KEYBOARD_CODE_RIGHTBRACKET = KBD_KEY_RBRACKET, KEYBOARD_CODE_BACKSLASH = KBD_KEY_BACKSLASH,
  KEYBOARD_CODE_NONUSHASH = KBD_KEY_NONE, KEYBOARD_CODE_SEMICOLON = KBD_KEY_SEMICOLON, KEYBOARD_CODE_APOSTROPHE = KBD_KEY_QUOTE, KEYBOARD_CODE_GRAVE = KBD_KEY_TILDE,
  KEYBOARD_CODE_COMMA = KBD_KEY_COMMA, KEYBOARD_CODE_PERIOD = KBD_KEY_PERIOD, KEYBOARD_CODE_SLASH = KBD_KEY_SLASH, KEYBOARD_CODE_CAPSLOCK = KBD_KEY_CAPSLOCK,
  KEYBOARD_CODE_F1 = KBD_KEY_F1, KEYBOARD_CODE_F2 = KBD_KEY_F2, KEYBOARD_CODE_F3 = KBD_KEY_F3, KEYBOARD_CODE_F4 = KBD_KEY_F4,
  KEYBOARD_CODE_F5 = KBD_KEY_F5, KEYBOARD_CODE_F6 = KBD_KEY_F6, KEYBOARD_CODE_F7 = KBD_KEY_F7, KEYBOARD_CODE_F8 = KBD_KEY_F8,
  KEYBOARD_CODE_F9 = KBD_KEY_F9, KEYBOARD_CODE_F10 = KBD_KEY_F10, KEYBOARD_CODE_F11 = KBD_KEY_F11, KEYBOARD_CODE_F12 = KBD_KEY_F12,
  KEYBOARD_CODE_PRINTSCREEN = KBD_KEY_PRINT, KEYBOARD_CODE_SCROLLLOCK = KBD_KEY_SCRLOCK, KEYBOARD_CODE_PAUSE = KBD_KEY_PAUSE, KEYBOARD_CODE_INSERT = KBD_KEY_INSERT,
  KEYBOARD_CODE_HOME = KBD_KEY_HOME, KEYBOARD_CODE_PAGEUP = KBD_KEY_PGUP, KEYBOARD_CODE_DELETE = KBD_KEY_DEL, KEYBOARD_CODE_END = KBD_KEY_END,
  KEYBOARD_CODE_PAGEDOWN = KBD_KEY_PGDOWN, KEYBOARD_CODE_RIGHT = KBD_KEY_RIGHT, KEYBOARD_CODE_LEFT = KBD_KEY_LEFT, KEYBOARD_CODE_DOWN = KBD_KEY_DOWN,
  KEYBOARD_CODE_UP = KBD_KEY_UP, KEYBOARD_CODE_NUMLOCKCLEAR = KBD_KEY_PAD_NUMLOCK, KEYBOARD_CODE_KP_DIVIDE = KBD_KEY_PAD_DIVIDE, KEYBOARD_CODE_KP_MULTIPLY = KBD_KEY_PAD_MULTIPLY,
  KEYBOARD_CODE_KP_MINUS = KBD_KEY_PAD_MINUS, KEYBOARD_CODE_KP_PLUS = KBD_KEY_PAD_PLUS, KEYBOARD_CODE_KP_ENTER = KBD_KEY_PAD_ENTER, KEYBOARD_CODE_KP_1 = KBD_KEY_PAD_1,
  KEYBOARD_CODE_KP_2 = KBD_KEY_PAD_2, KEYBOARD_CODE_KP_3 = KBD_KEY_PAD_3, KEYBOARD_CODE_KP_4 = KBD_KEY_PAD_4, KEYBOARD_CODE_KP_5 = KBD_KEY_PAD_5,
  KEYBOARD_CODE_KP_6 = KBD_KEY_PAD_6, KEYBOARD_CODE_KP_7 = KBD_KEY_PAD_7, KEYBOARD_CODE_KP_8 = KBD_KEY_PAD_8, KEYBOARD_CODE_KP_9 = KBD_KEY_PAD_9,
  KEYBOARD_CODE_KP_0 = KBD_KEY_PAD_0, KEYBOARD_CODE_KP_PERIOD = KBD_KEY_PAD_PERIOD, KEYBOARD_CODE_NONUSBACKSLASH = KBD_KEY_NONE, KEYBOARD_CODE_APPLICATION = KBD_KEY_NONE,
  KEYBOARD_CODE_POWER = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALS = KBD_KEY_NONE, KEYBOARD_CODE_F13 = KBD_KEY_NONE, KEYBOARD_CODE_F14 = KBD_KEY_NONE,
  KEYBOARD_CODE_F15 = KBD_KEY_NONE, KEYBOARD_CODE_F16 = KBD_KEY_NONE, KEYBOARD_CODE_F17 = KBD_KEY_NONE, KEYBOARD_CODE_F18 = KBD_KEY_NONE,
  KEYBOARD_CODE_F19 = KBD_KEY_NONE, KEYBOARD_CODE_F20 = KBD_KEY_NONE, KEYBOARD_CODE_F21 = KBD_KEY_NONE, KEYBOARD_CODE_F22 = KBD_KEY_NONE,
  KEYBOARD_CODE_F23 = KBD_KEY_NONE, KEYBOARD_CODE_F24 = KBD_KEY_NONE, KEYBOARD_CODE_EXECUTE = KBD_KEY_NONE, KEYBOARD_CODE_HELP = KBD_KEY_NONE,
  KEYBOARD_CODE_MENU = KBD_KEY_NONE, KEYBOARD_CODE_SELECT = KBD_KEY_NONE, KEYBOARD_CODE_STOP = KBD_KEY_NONE, KEYBOARD_CODE_AGAIN = KBD_KEY_NONE,
  KEYBOARD_CODE_UNDO = KBD_KEY_NONE, KEYBOARD_CODE_CUT = KBD_KEY_NONE, KEYBOARD_CODE_COPY = KBD_KEY_NONE, KEYBOARD_CODE_PASTE = KBD_KEY_NONE,
  KEYBOARD_CODE_FIND = KBD_KEY_NONE, KEYBOARD_CODE_MUTE = KBD_KEY_NONE, KEYBOARD_CODE_VOLUMEUP = KBD_KEY_NONE, KEYBOARD_CODE_VOLUMEDOWN = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_COMMA = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALSAS400 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL1 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL2 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL3 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL4 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL5 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL6 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL7 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL8 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL9 = KBD_KEY_NONE, KEYBOARD_CODE_LANG1 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG2 = KBD_KEY_NONE, KEYBOARD_CODE_LANG3 = KBD_KEY_NONE, KEYBOARD_CODE_LANG4 = KBD_KEY_NONE, KEYBOARD_CODE_LANG5 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG6 = KBD_KEY_NONE, KEYBOARD_CODE_LANG7 = KBD_KEY_NONE, KEYBOARD_CODE_LANG8 = KBD_KEY_NONE, KEYBOARD_CODE_LANG9 = KBD_KEY_NONE,
  KEYBOARD_CODE_ALTERASE = KBD_KEY_NONE, KEYBOARD_CODE_SYSREQ = KBD_KEY_NONE, KEYBOARD_CODE_CANCEL = KBD_KEY_NONE, KEYBOARD_CODE_CLEAR = KBD_KEY_NONE,
  KEYBOARD_CODE_PRIOR = KBD_KEY_NONE, KEYBOARD_CODE_RETURN2 = KBD_KEY_NONE, KEYBOARD_CODE_SEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_OUT = KBD_KEY_NONE,
  KEYBOARD_CODE_OPER = KBD_KEY_NONE, KEYBOARD_CODE_CLEARAGAIN = KBD_KEY_NONE, KEYBOARD_CODE_CRSEL = KBD_KEY_NONE, KEYBOARD_CODE_EXSEL = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_00 = KBD_KEY_NONE, KEYBOARD_CODE_KP_000 = KBD_KEY_NONE, KEYBOARD_CODE_THOUSANDSSEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_DECIMALSEPARATOR = KBD_KEY_NONE,
  KEYBOARD_CODE_CURRENCYUNIT = KBD_KEY_NONE, KEYBOARD_CODE_CURRENCYSUBUNIT = KBD_KEY_NONE, KEYBOARD_CODE_KP_LEFTPAREN = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTPAREN = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_LEFTBRACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTBRACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_TAB = KBD_KEY_NONE, KEYBOARD_CODE_KP_BACKSPACE = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_A = KBD_KEY_NONE, KEYBOARD_CODE_KP_B = KBD_KEY_NONE, KEYBOARD_CODE_KP_C = KBD_KEY_NONE, KEYBOARD_CODE_KP_D = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_E = KBD_KEY_NONE, KEYBOARD_CODE_KP_F = KBD_KEY_NONE, KEYBOARD_CODE_KP_XOR = KBD_KEY_NONE, KEYBOARD_CODE_KP_POWER = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_PERCENT = KBD_KEY_NONE, KEYBOARD_CODE_KP_LESS = KBD_KEY_NONE, KEYBOARD_CODE_KP_GREATER = KBD_KEY_NONE, KEYBOARD_CODE_KP_AMPERSAND = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_DBLAMPERSAND = KBD_KEY_NONE, KEYBOARD_CODE_KP_VERTICALBAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_DBLVERTICALBAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_COLON = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_HASH = KBD_KEY_NONE, KEYBOARD_CODE_KP_SPACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_AT = KBD_KEY_NONE, KEYBOARD_CODE_KP_EXCLAM = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMSTORE = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMRECALL = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMCLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMADD = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMSUBTRACT = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMMULTIPLY = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMDIVIDE = KBD_KEY_NONE, KEYBOARD_CODE_KP_PLUSMINUS = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_CLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_CLEARENTRY = KBD_KEY_NONE, KEYBOARD_CODE_KP_BINARY = KBD_KEY_NONE, KEYBOARD_CODE_KP_OCTAL = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_DECIMAL = KBD_KEY_NONE, KEYBOARD_CODE_KP_HEXADECIMAL = KBD_KEY_NONE, KEYBOARD_CODE_LCTRL = KBD_KEY_NONE, KEYBOARD_CODE_LSHIFT = KBD_KEY_NONE,
  KEYBOARD_CODE_LALT = KBD_KEY_NONE, KEYBOARD_CODE_LGUI = KBD_KEY_NONE, KEYBOARD_CODE_RCTRL = KBD_KEY_NONE, KEYBOARD_CODE_RSHIFT = KBD_KEY_NONE,
  KEYBOARD_CODE_RALT = KBD_KEY_NONE, KEYBOARD_CODE_RGUI = KBD_KEY_NONE, KEYBOARD_CODE_MODE = KBD_KEY_NONE, KEYBOARD_CODE_AUDIONEXT = KBD_KEY_NONE,
  KEYBOARD_CODE_AUDIOPREV = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOSTOP = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOPLAY = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOMUTE = KBD_KEY_NONE,
  KEYBOARD_CODE_MEDIASELECT = KBD_KEY_NONE, KEYBOARD_CODE_WWW = KBD_KEY_NONE, KEYBOARD_CODE_MAIL = KBD_KEY_NONE, KEYBOARD_CODE_CALCULATOR = KBD_KEY_NONE,
  KEYBOARD_CODE_COMPUTER = KBD_KEY_NONE, KEYBOARD_CODE_AC_SEARCH = KBD_KEY_NONE, KEYBOARD_CODE_AC_HOME = KBD_KEY_NONE, KEYBOARD_CODE_AC_BACK = KBD_KEY_NONE,
  KEYBOARD_CODE_AC_FORWARD = KBD_KEY_NONE, KEYBOARD_CODE_AC_STOP = KBD_KEY_NONE, KEYBOARD_CODE_AC_REFRESH = KBD_KEY_NONE, KEYBOARD_CODE_AC_BOOKMARKS = KBD_KEY_NONE,
  KEYBOARD_CODE_BRIGHTNESSDOWN = KBD_KEY_NONE, KEYBOARD_CODE_BRIGHTNESSUP = KBD_KEY_NONE, KEYBOARD_CODE_DISPLAYSWITCH = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMTOGGLE = KBD_KEY_NONE,
  KEYBOARD_CODE_KBDILLUMDOWN = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMUP = KBD_KEY_NONE, KEYBOARD_CODE_EJECT = KBD_KEY_NONE, KEYBOARD_CODE_SLEEP = KBD_KEY_NONE,
  KEYBOARD_CODE_APP1 = KBD_KEY_NONE, KEYBOARD_CODE_APP2 = KBD_KEY_NONE, MAX_KEYBOARD_CODES = 512, KEYBOARD_CODE_NONE = 0
}
 
enum  VBOSlotSize {
  VBO_SLOT_SIZE_1K = (1 << 10), VBO_SLOT_SIZE_2K = (1 << 11), VBO_SLOT_SIZE_4K = (1 << 12), VBO_SLOT_SIZE_8K = (1 << 13),
  VBO_SLOT_SIZE_16K = (1 << 14), VBO_SLOT_SIZE_32K = (1 << 15), VBO_SLOT_SIZE_64K = (1 << 16), VBO_SLOT_SIZE_128K = (1 << 17),
  VBO_SLOT_SIZE_256K = (1 << 18), VBO_SLOT_SIZE_512K = (1 << 19)
}
 
enum  ActivateBehaviour { ACTIVATE_BEHAVIOUR_UNLOAD_FIRST, ACTIVATE_BEHAVIOUR_UNLOAD_AFTER }
 
enum  ScreenFormat { SCREEN_FORMAT_G1, SCREEN_FORMAT_MAX }
 
enum  KeyboardCode {
  KEYBOARD_CODE_A = KBD_KEY_A, KEYBOARD_CODE_B = KBD_KEY_B, KEYBOARD_CODE_C = KBD_KEY_C, KEYBOARD_CODE_D = KBD_KEY_D,
  KEYBOARD_CODE_E = KBD_KEY_E, KEYBOARD_CODE_F = KBD_KEY_F, KEYBOARD_CODE_G = KBD_KEY_G, KEYBOARD_CODE_H = KBD_KEY_H,
  KEYBOARD_CODE_I = KBD_KEY_I, KEYBOARD_CODE_J = KBD_KEY_J, KEYBOARD_CODE_K = KBD_KEY_K, KEYBOARD_CODE_L = KBD_KEY_L,
  KEYBOARD_CODE_M = KBD_KEY_M, KEYBOARD_CODE_N = KBD_KEY_N, KEYBOARD_CODE_O = KBD_KEY_O, KEYBOARD_CODE_P = KBD_KEY_P,
  KEYBOARD_CODE_Q = KBD_KEY_Q, KEYBOARD_CODE_R = KBD_KEY_R, KEYBOARD_CODE_S = KBD_KEY_S, KEYBOARD_CODE_T = KBD_KEY_T,
  KEYBOARD_CODE_U = KBD_KEY_U, KEYBOARD_CODE_V = KBD_KEY_V, KEYBOARD_CODE_W = KBD_KEY_W, KEYBOARD_CODE_X = KBD_KEY_X,
  KEYBOARD_CODE_Y = KBD_KEY_Y, KEYBOARD_CODE_Z = KBD_KEY_Z, KEYBOARD_CODE_1 = KBD_KEY_1, KEYBOARD_CODE_2 = KBD_KEY_2,
  KEYBOARD_CODE_3 = KBD_KEY_3, KEYBOARD_CODE_4 = KBD_KEY_4, KEYBOARD_CODE_5 = KBD_KEY_5, KEYBOARD_CODE_6 = KBD_KEY_6,
  KEYBOARD_CODE_7 = KBD_KEY_7, KEYBOARD_CODE_8 = KBD_KEY_8, KEYBOARD_CODE_9 = KBD_KEY_9, KEYBOARD_CODE_0 = KBD_KEY_0,
  KEYBOARD_CODE_RETURN = KBD_KEY_ENTER, KEYBOARD_CODE_ESCAPE = KBD_KEY_ESCAPE, KEYBOARD_CODE_BACKSPACE = KBD_KEY_BACKSPACE, KEYBOARD_CODE_TAB = KBD_KEY_TAB,
  KEYBOARD_CODE_SPACE = KBD_KEY_SPACE, KEYBOARD_CODE_MINUS = KBD_KEY_MINUS, KEYBOARD_CODE_EQUALS = KBD_KEY_PLUS, KEYBOARD_CODE_LEFTBRACKET = KBD_KEY_LBRACKET,
  KEYBOARD_CODE_RIGHTBRACKET = KBD_KEY_RBRACKET, KEYBOARD_CODE_BACKSLASH = KBD_KEY_BACKSLASH, KEYBOARD_CODE_NONUSHASH = KBD_KEY_NONE, KEYBOARD_CODE_SEMICOLON = KBD_KEY_SEMICOLON,
  KEYBOARD_CODE_APOSTROPHE = KBD_KEY_QUOTE, KEYBOARD_CODE_GRAVE = KBD_KEY_TILDE, KEYBOARD_CODE_COMMA = KBD_KEY_COMMA, KEYBOARD_CODE_PERIOD = KBD_KEY_PERIOD,
  KEYBOARD_CODE_SLASH = KBD_KEY_SLASH, KEYBOARD_CODE_CAPSLOCK = KBD_KEY_CAPSLOCK, KEYBOARD_CODE_F1 = KBD_KEY_F1, KEYBOARD_CODE_F2 = KBD_KEY_F2,
  KEYBOARD_CODE_F3 = KBD_KEY_F3, KEYBOARD_CODE_F4 = KBD_KEY_F4, KEYBOARD_CODE_F5 = KBD_KEY_F5, KEYBOARD_CODE_F6 = KBD_KEY_F6,
  KEYBOARD_CODE_F7 = KBD_KEY_F7, KEYBOARD_CODE_F8 = KBD_KEY_F8, KEYBOARD_CODE_F9 = KBD_KEY_F9, KEYBOARD_CODE_F10 = KBD_KEY_F10,
  KEYBOARD_CODE_F11 = KBD_KEY_F11, KEYBOARD_CODE_F12 = KBD_KEY_F12, KEYBOARD_CODE_PRINTSCREEN = KBD_KEY_PRINT, KEYBOARD_CODE_SCROLLLOCK = KBD_KEY_SCRLOCK,
  KEYBOARD_CODE_PAUSE = KBD_KEY_PAUSE, KEYBOARD_CODE_INSERT = KBD_KEY_INSERT, KEYBOARD_CODE_HOME = KBD_KEY_HOME, KEYBOARD_CODE_PAGEUP = KBD_KEY_PGUP,
  KEYBOARD_CODE_DELETE = KBD_KEY_DEL, KEYBOARD_CODE_END = KBD_KEY_END, KEYBOARD_CODE_PAGEDOWN = KBD_KEY_PGDOWN, KEYBOARD_CODE_RIGHT = KBD_KEY_RIGHT,
  KEYBOARD_CODE_LEFT = KBD_KEY_LEFT, KEYBOARD_CODE_DOWN = KBD_KEY_DOWN, KEYBOARD_CODE_UP = KBD_KEY_UP, KEYBOARD_CODE_NUMLOCKCLEAR = KBD_KEY_PAD_NUMLOCK,
  KEYBOARD_CODE_KP_DIVIDE = KBD_KEY_PAD_DIVIDE, KEYBOARD_CODE_KP_MULTIPLY = KBD_KEY_PAD_MULTIPLY, KEYBOARD_CODE_KP_MINUS = KBD_KEY_PAD_MINUS, KEYBOARD_CODE_KP_PLUS = KBD_KEY_PAD_PLUS,
  KEYBOARD_CODE_KP_ENTER = KBD_KEY_PAD_ENTER, KEYBOARD_CODE_KP_1 = KBD_KEY_PAD_1, KEYBOARD_CODE_KP_2 = KBD_KEY_PAD_2, KEYBOARD_CODE_KP_3 = KBD_KEY_PAD_3,
  KEYBOARD_CODE_KP_4 = KBD_KEY_PAD_4, KEYBOARD_CODE_KP_5 = KBD_KEY_PAD_5, KEYBOARD_CODE_KP_6 = KBD_KEY_PAD_6, KEYBOARD_CODE_KP_7 = KBD_KEY_PAD_7,
  KEYBOARD_CODE_KP_8 = KBD_KEY_PAD_8, KEYBOARD_CODE_KP_9 = KBD_KEY_PAD_9, KEYBOARD_CODE_KP_0 = KBD_KEY_PAD_0, KEYBOARD_CODE_KP_PERIOD = KBD_KEY_PAD_PERIOD,
  KEYBOARD_CODE_NONUSBACKSLASH = KBD_KEY_NONE, KEYBOARD_CODE_APPLICATION = KBD_KEY_NONE, KEYBOARD_CODE_POWER = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALS = KBD_KEY_NONE,
  KEYBOARD_CODE_F13 = KBD_KEY_NONE, KEYBOARD_CODE_F14 = KBD_KEY_NONE, KEYBOARD_CODE_F15 = KBD_KEY_NONE, KEYBOARD_CODE_F16 = KBD_KEY_NONE,
  KEYBOARD_CODE_F17 = KBD_KEY_NONE, KEYBOARD_CODE_F18 = KBD_KEY_NONE, KEYBOARD_CODE_F19 = KBD_KEY_NONE, KEYBOARD_CODE_F20 = KBD_KEY_NONE,
  KEYBOARD_CODE_F21 = KBD_KEY_NONE, KEYBOARD_CODE_F22 = KBD_KEY_NONE, KEYBOARD_CODE_F23 = KBD_KEY_NONE, KEYBOARD_CODE_F24 = KBD_KEY_NONE,
  KEYBOARD_CODE_EXECUTE = KBD_KEY_NONE, KEYBOARD_CODE_HELP = KBD_KEY_NONE, KEYBOARD_CODE_MENU = KBD_KEY_NONE, KEYBOARD_CODE_SELECT = KBD_KEY_NONE,
  KEYBOARD_CODE_STOP = KBD_KEY_NONE, KEYBOARD_CODE_AGAIN = KBD_KEY_NONE, KEYBOARD_CODE_UNDO = KBD_KEY_NONE, KEYBOARD_CODE_CUT = KBD_KEY_NONE,
  KEYBOARD_CODE_COPY = KBD_KEY_NONE, KEYBOARD_CODE_PASTE = KBD_KEY_NONE, KEYBOARD_CODE_FIND = KBD_KEY_NONE, KEYBOARD_CODE_MUTE = KBD_KEY_NONE,
  KEYBOARD_CODE_VOLUMEUP = KBD_KEY_NONE, KEYBOARD_CODE_VOLUMEDOWN = KBD_KEY_NONE, KEYBOARD_CODE_KP_COMMA = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALSAS400 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL1 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL2 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL3 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL4 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL5 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL6 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL7 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL8 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL9 = KBD_KEY_NONE, KEYBOARD_CODE_LANG1 = KBD_KEY_NONE, KEYBOARD_CODE_LANG2 = KBD_KEY_NONE, KEYBOARD_CODE_LANG3 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG4 = KBD_KEY_NONE, KEYBOARD_CODE_LANG5 = KBD_KEY_NONE, KEYBOARD_CODE_LANG6 = KBD_KEY_NONE, KEYBOARD_CODE_LANG7 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG8 = KBD_KEY_NONE, KEYBOARD_CODE_LANG9 = KBD_KEY_NONE, KEYBOARD_CODE_ALTERASE = KBD_KEY_NONE, KEYBOARD_CODE_SYSREQ = KBD_KEY_NONE,
  KEYBOARD_CODE_CANCEL = KBD_KEY_NONE, KEYBOARD_CODE_CLEAR = KBD_KEY_NONE, KEYBOARD_CODE_PRIOR = KBD_KEY_NONE, KEYBOARD_CODE_RETURN2 = KBD_KEY_NONE,
  KEYBOARD_CODE_SEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_OUT = KBD_KEY_NONE, KEYBOARD_CODE_OPER = KBD_KEY_NONE, KEYBOARD_CODE_CLEARAGAIN = KBD_KEY_NONE,
  KEYBOARD_CODE_CRSEL = KBD_KEY_NONE, KEYBOARD_CODE_EXSEL = KBD_KEY_NONE, KEYBOARD_CODE_KP_00 = KBD_KEY_NONE, KEYBOARD_CODE_KP_000 = KBD_KEY_NONE,
  KEYBOARD_CODE_THOUSANDSSEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_DECIMALSEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_CURRENCYUNIT = KBD_KEY_NONE, KEYBOARD_CODE_CURRENCYSUBUNIT = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_LEFTPAREN = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTPAREN = KBD_KEY_NONE, KEYBOARD_CODE_KP_LEFTBRACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTBRACE = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_TAB = KBD_KEY_NONE, KEYBOARD_CODE_KP_BACKSPACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_A = KBD_KEY_NONE, KEYBOARD_CODE_KP_B = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_C = KBD_KEY_NONE, KEYBOARD_CODE_KP_D = KBD_KEY_NONE, KEYBOARD_CODE_KP_E = KBD_KEY_NONE, KEYBOARD_CODE_KP_F = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_XOR = KBD_KEY_NONE, KEYBOARD_CODE_KP_POWER = KBD_KEY_NONE, KEYBOARD_CODE_KP_PERCENT = KBD_KEY_NONE, KEYBOARD_CODE_KP_LESS = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_GREATER = KBD_KEY_NONE, KEYBOARD_CODE_KP_AMPERSAND = KBD_KEY_NONE, KEYBOARD_CODE_KP_DBLAMPERSAND = KBD_KEY_NONE, KEYBOARD_CODE_KP_VERTICALBAR = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_DBLVERTICALBAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_COLON = KBD_KEY_NONE, KEYBOARD_CODE_KP_HASH = KBD_KEY_NONE, KEYBOARD_CODE_KP_SPACE = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_AT = KBD_KEY_NONE, KEYBOARD_CODE_KP_EXCLAM = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMSTORE = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMRECALL = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMCLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMADD = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMSUBTRACT = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMMULTIPLY = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMDIVIDE = KBD_KEY_NONE, KEYBOARD_CODE_KP_PLUSMINUS = KBD_KEY_NONE, KEYBOARD_CODE_KP_CLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_CLEARENTRY = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_BINARY = KBD_KEY_NONE, KEYBOARD_CODE_KP_OCTAL = KBD_KEY_NONE, KEYBOARD_CODE_KP_DECIMAL = KBD_KEY_NONE, KEYBOARD_CODE_KP_HEXADECIMAL = KBD_KEY_NONE,
  KEYBOARD_CODE_LCTRL = KBD_KEY_NONE, KEYBOARD_CODE_LSHIFT = KBD_KEY_NONE, KEYBOARD_CODE_LALT = KBD_KEY_NONE, KEYBOARD_CODE_LGUI = KBD_KEY_NONE,
  KEYBOARD_CODE_RCTRL = KBD_KEY_NONE, KEYBOARD_CODE_RSHIFT = KBD_KEY_NONE, KEYBOARD_CODE_RALT = KBD_KEY_NONE, KEYBOARD_CODE_RGUI = KBD_KEY_NONE,
  KEYBOARD_CODE_MODE = KBD_KEY_NONE, KEYBOARD_CODE_AUDIONEXT = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOPREV = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOSTOP = KBD_KEY_NONE,
  KEYBOARD_CODE_AUDIOPLAY = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOMUTE = KBD_KEY_NONE, KEYBOARD_CODE_MEDIASELECT = KBD_KEY_NONE, KEYBOARD_CODE_WWW = KBD_KEY_NONE,
  KEYBOARD_CODE_MAIL = KBD_KEY_NONE, KEYBOARD_CODE_CALCULATOR = KBD_KEY_NONE, KEYBOARD_CODE_COMPUTER = KBD_KEY_NONE, KEYBOARD_CODE_AC_SEARCH = KBD_KEY_NONE,
  KEYBOARD_CODE_AC_HOME = KBD_KEY_NONE, KEYBOARD_CODE_AC_BACK = KBD_KEY_NONE, KEYBOARD_CODE_AC_FORWARD = KBD_KEY_NONE, KEYBOARD_CODE_AC_STOP = KBD_KEY_NONE,
  KEYBOARD_CODE_AC_REFRESH = KBD_KEY_NONE, KEYBOARD_CODE_AC_BOOKMARKS = KBD_KEY_NONE, KEYBOARD_CODE_BRIGHTNESSDOWN = KBD_KEY_NONE, KEYBOARD_CODE_BRIGHTNESSUP = KBD_KEY_NONE,
  KEYBOARD_CODE_DISPLAYSWITCH = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMTOGGLE = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMDOWN = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMUP = KBD_KEY_NONE,
  KEYBOARD_CODE_EJECT = KBD_KEY_NONE, KEYBOARD_CODE_SLEEP = KBD_KEY_NONE, KEYBOARD_CODE_APP1 = KBD_KEY_NONE, KEYBOARD_CODE_APP2 = KBD_KEY_NONE,
  MAX_KEYBOARD_CODES = 512, KEYBOARD_CODE_NONE = 0, KEYBOARD_CODE_A = KBD_KEY_A, KEYBOARD_CODE_B = KBD_KEY_B,
  KEYBOARD_CODE_C = KBD_KEY_C, KEYBOARD_CODE_D = KBD_KEY_D, KEYBOARD_CODE_E = KBD_KEY_E, KEYBOARD_CODE_F = KBD_KEY_F,
  KEYBOARD_CODE_G = KBD_KEY_G, KEYBOARD_CODE_H = KBD_KEY_H, KEYBOARD_CODE_I = KBD_KEY_I, KEYBOARD_CODE_J = KBD_KEY_J,
  KEYBOARD_CODE_K = KBD_KEY_K, KEYBOARD_CODE_L = KBD_KEY_L, KEYBOARD_CODE_M = KBD_KEY_M, KEYBOARD_CODE_N = KBD_KEY_N,
  KEYBOARD_CODE_O = KBD_KEY_O, KEYBOARD_CODE_P = KBD_KEY_P, KEYBOARD_CODE_Q = KBD_KEY_Q, KEYBOARD_CODE_R = KBD_KEY_R,
  KEYBOARD_CODE_S = KBD_KEY_S, KEYBOARD_CODE_T = KBD_KEY_T, KEYBOARD_CODE_U = KBD_KEY_U, KEYBOARD_CODE_V = KBD_KEY_V,
  KEYBOARD_CODE_W = KBD_KEY_W, KEYBOARD_CODE_X = KBD_KEY_X, KEYBOARD_CODE_Y = KBD_KEY_Y, KEYBOARD_CODE_Z = KBD_KEY_Z,
  KEYBOARD_CODE_1 = KBD_KEY_1, KEYBOARD_CODE_2 = KBD_KEY_2, KEYBOARD_CODE_3 = KBD_KEY_3, KEYBOARD_CODE_4 = KBD_KEY_4,
  KEYBOARD_CODE_5 = KBD_KEY_5, KEYBOARD_CODE_6 = KBD_KEY_6, KEYBOARD_CODE_7 = KBD_KEY_7, KEYBOARD_CODE_8 = KBD_KEY_8,
  KEYBOARD_CODE_9 = KBD_KEY_9, KEYBOARD_CODE_0 = KBD_KEY_0, KEYBOARD_CODE_RETURN = KBD_KEY_ENTER, KEYBOARD_CODE_ESCAPE = KBD_KEY_ESCAPE,
  KEYBOARD_CODE_BACKSPACE = KBD_KEY_BACKSPACE, KEYBOARD_CODE_TAB = KBD_KEY_TAB, KEYBOARD_CODE_SPACE = KBD_KEY_SPACE, KEYBOARD_CODE_MINUS = KBD_KEY_MINUS,
  KEYBOARD_CODE_EQUALS = KBD_KEY_PLUS, KEYBOARD_CODE_LEFTBRACKET = KBD_KEY_LBRACKET, KEYBOARD_CODE_RIGHTBRACKET = KBD_KEY_RBRACKET, KEYBOARD_CODE_BACKSLASH = KBD_KEY_BACKSLASH,
  KEYBOARD_CODE_NONUSHASH = KBD_KEY_NONE, KEYBOARD_CODE_SEMICOLON = KBD_KEY_SEMICOLON, KEYBOARD_CODE_APOSTROPHE = KBD_KEY_QUOTE, KEYBOARD_CODE_GRAVE = KBD_KEY_TILDE,
  KEYBOARD_CODE_COMMA = KBD_KEY_COMMA, KEYBOARD_CODE_PERIOD = KBD_KEY_PERIOD, KEYBOARD_CODE_SLASH = KBD_KEY_SLASH, KEYBOARD_CODE_CAPSLOCK = KBD_KEY_CAPSLOCK,
  KEYBOARD_CODE_F1 = KBD_KEY_F1, KEYBOARD_CODE_F2 = KBD_KEY_F2, KEYBOARD_CODE_F3 = KBD_KEY_F3, KEYBOARD_CODE_F4 = KBD_KEY_F4,
  KEYBOARD_CODE_F5 = KBD_KEY_F5, KEYBOARD_CODE_F6 = KBD_KEY_F6, KEYBOARD_CODE_F7 = KBD_KEY_F7, KEYBOARD_CODE_F8 = KBD_KEY_F8,
  KEYBOARD_CODE_F9 = KBD_KEY_F9, KEYBOARD_CODE_F10 = KBD_KEY_F10, KEYBOARD_CODE_F11 = KBD_KEY_F11, KEYBOARD_CODE_F12 = KBD_KEY_F12,
  KEYBOARD_CODE_PRINTSCREEN = KBD_KEY_PRINT, KEYBOARD_CODE_SCROLLLOCK = KBD_KEY_SCRLOCK, KEYBOARD_CODE_PAUSE = KBD_KEY_PAUSE, KEYBOARD_CODE_INSERT = KBD_KEY_INSERT,
  KEYBOARD_CODE_HOME = KBD_KEY_HOME, KEYBOARD_CODE_PAGEUP = KBD_KEY_PGUP, KEYBOARD_CODE_DELETE = KBD_KEY_DEL, KEYBOARD_CODE_END = KBD_KEY_END,
  KEYBOARD_CODE_PAGEDOWN = KBD_KEY_PGDOWN, KEYBOARD_CODE_RIGHT = KBD_KEY_RIGHT, KEYBOARD_CODE_LEFT = KBD_KEY_LEFT, KEYBOARD_CODE_DOWN = KBD_KEY_DOWN,
  KEYBOARD_CODE_UP = KBD_KEY_UP, KEYBOARD_CODE_NUMLOCKCLEAR = KBD_KEY_PAD_NUMLOCK, KEYBOARD_CODE_KP_DIVIDE = KBD_KEY_PAD_DIVIDE, KEYBOARD_CODE_KP_MULTIPLY = KBD_KEY_PAD_MULTIPLY,
  KEYBOARD_CODE_KP_MINUS = KBD_KEY_PAD_MINUS, KEYBOARD_CODE_KP_PLUS = KBD_KEY_PAD_PLUS, KEYBOARD_CODE_KP_ENTER = KBD_KEY_PAD_ENTER, KEYBOARD_CODE_KP_1 = KBD_KEY_PAD_1,
  KEYBOARD_CODE_KP_2 = KBD_KEY_PAD_2, KEYBOARD_CODE_KP_3 = KBD_KEY_PAD_3, KEYBOARD_CODE_KP_4 = KBD_KEY_PAD_4, KEYBOARD_CODE_KP_5 = KBD_KEY_PAD_5,
  KEYBOARD_CODE_KP_6 = KBD_KEY_PAD_6, KEYBOARD_CODE_KP_7 = KBD_KEY_PAD_7, KEYBOARD_CODE_KP_8 = KBD_KEY_PAD_8, KEYBOARD_CODE_KP_9 = KBD_KEY_PAD_9,
  KEYBOARD_CODE_KP_0 = KBD_KEY_PAD_0, KEYBOARD_CODE_KP_PERIOD = KBD_KEY_PAD_PERIOD, KEYBOARD_CODE_NONUSBACKSLASH = KBD_KEY_NONE, KEYBOARD_CODE_APPLICATION = KBD_KEY_NONE,
  KEYBOARD_CODE_POWER = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALS = KBD_KEY_NONE, KEYBOARD_CODE_F13 = KBD_KEY_NONE, KEYBOARD_CODE_F14 = KBD_KEY_NONE,
  KEYBOARD_CODE_F15 = KBD_KEY_NONE, KEYBOARD_CODE_F16 = KBD_KEY_NONE, KEYBOARD_CODE_F17 = KBD_KEY_NONE, KEYBOARD_CODE_F18 = KBD_KEY_NONE,
  KEYBOARD_CODE_F19 = KBD_KEY_NONE, KEYBOARD_CODE_F20 = KBD_KEY_NONE, KEYBOARD_CODE_F21 = KBD_KEY_NONE, KEYBOARD_CODE_F22 = KBD_KEY_NONE,
  KEYBOARD_CODE_F23 = KBD_KEY_NONE, KEYBOARD_CODE_F24 = KBD_KEY_NONE, KEYBOARD_CODE_EXECUTE = KBD_KEY_NONE, KEYBOARD_CODE_HELP = KBD_KEY_NONE,
  KEYBOARD_CODE_MENU = KBD_KEY_NONE, KEYBOARD_CODE_SELECT = KBD_KEY_NONE, KEYBOARD_CODE_STOP = KBD_KEY_NONE, KEYBOARD_CODE_AGAIN = KBD_KEY_NONE,
  KEYBOARD_CODE_UNDO = KBD_KEY_NONE, KEYBOARD_CODE_CUT = KBD_KEY_NONE, KEYBOARD_CODE_COPY = KBD_KEY_NONE, KEYBOARD_CODE_PASTE = KBD_KEY_NONE,
  KEYBOARD_CODE_FIND = KBD_KEY_NONE, KEYBOARD_CODE_MUTE = KBD_KEY_NONE, KEYBOARD_CODE_VOLUMEUP = KBD_KEY_NONE, KEYBOARD_CODE_VOLUMEDOWN = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_COMMA = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALSAS400 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL1 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL2 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL3 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL4 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL5 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL6 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL7 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL8 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL9 = KBD_KEY_NONE, KEYBOARD_CODE_LANG1 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG2 = KBD_KEY_NONE, KEYBOARD_CODE_LANG3 = KBD_KEY_NONE, KEYBOARD_CODE_LANG4 = KBD_KEY_NONE, KEYBOARD_CODE_LANG5 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG6 = KBD_KEY_NONE, KEYBOARD_CODE_LANG7 = KBD_KEY_NONE, KEYBOARD_CODE_LANG8 = KBD_KEY_NONE, KEYBOARD_CODE_LANG9 = KBD_KEY_NONE,
  KEYBOARD_CODE_ALTERASE = KBD_KEY_NONE, KEYBOARD_CODE_SYSREQ = KBD_KEY_NONE, KEYBOARD_CODE_CANCEL = KBD_KEY_NONE, KEYBOARD_CODE_CLEAR = KBD_KEY_NONE,
  KEYBOARD_CODE_PRIOR = KBD_KEY_NONE, KEYBOARD_CODE_RETURN2 = KBD_KEY_NONE, KEYBOARD_CODE_SEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_OUT = KBD_KEY_NONE,
  KEYBOARD_CODE_OPER = KBD_KEY_NONE, KEYBOARD_CODE_CLEARAGAIN = KBD_KEY_NONE, KEYBOARD_CODE_CRSEL = KBD_KEY_NONE, KEYBOARD_CODE_EXSEL = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_00 = KBD_KEY_NONE, KEYBOARD_CODE_KP_000 = KBD_KEY_NONE, KEYBOARD_CODE_THOUSANDSSEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_DECIMALSEPARATOR = KBD_KEY_NONE,
  KEYBOARD_CODE_CURRENCYUNIT = KBD_KEY_NONE, KEYBOARD_CODE_CURRENCYSUBUNIT = KBD_KEY_NONE, KEYBOARD_CODE_KP_LEFTPAREN = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTPAREN = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_LEFTBRACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTBRACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_TAB = KBD_KEY_NONE, KEYBOARD_CODE_KP_BACKSPACE = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_A = KBD_KEY_NONE, KEYBOARD_CODE_KP_B = KBD_KEY_NONE, KEYBOARD_CODE_KP_C = KBD_KEY_NONE, KEYBOARD_CODE_KP_D = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_E = KBD_KEY_NONE, KEYBOARD_CODE_KP_F = KBD_KEY_NONE, KEYBOARD_CODE_KP_XOR = KBD_KEY_NONE, KEYBOARD_CODE_KP_POWER = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_PERCENT = KBD_KEY_NONE, KEYBOARD_CODE_KP_LESS = KBD_KEY_NONE, KEYBOARD_CODE_KP_GREATER = KBD_KEY_NONE, KEYBOARD_CODE_KP_AMPERSAND = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_DBLAMPERSAND = KBD_KEY_NONE, KEYBOARD_CODE_KP_VERTICALBAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_DBLVERTICALBAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_COLON = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_HASH = KBD_KEY_NONE, KEYBOARD_CODE_KP_SPACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_AT = KBD_KEY_NONE, KEYBOARD_CODE_KP_EXCLAM = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMSTORE = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMRECALL = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMCLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMADD = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMSUBTRACT = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMMULTIPLY = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMDIVIDE = KBD_KEY_NONE, KEYBOARD_CODE_KP_PLUSMINUS = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_CLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_CLEARENTRY = KBD_KEY_NONE, KEYBOARD_CODE_KP_BINARY = KBD_KEY_NONE, KEYBOARD_CODE_KP_OCTAL = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_DECIMAL = KBD_KEY_NONE, KEYBOARD_CODE_KP_HEXADECIMAL = KBD_KEY_NONE, KEYBOARD_CODE_LCTRL = KBD_KEY_NONE, KEYBOARD_CODE_LSHIFT = KBD_KEY_NONE,
  KEYBOARD_CODE_LALT = KBD_KEY_NONE, KEYBOARD_CODE_LGUI = KBD_KEY_NONE, KEYBOARD_CODE_RCTRL = KBD_KEY_NONE, KEYBOARD_CODE_RSHIFT = KBD_KEY_NONE,
  KEYBOARD_CODE_RALT = KBD_KEY_NONE, KEYBOARD_CODE_RGUI = KBD_KEY_NONE, KEYBOARD_CODE_MODE = KBD_KEY_NONE, KEYBOARD_CODE_AUDIONEXT = KBD_KEY_NONE,
  KEYBOARD_CODE_AUDIOPREV = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOSTOP = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOPLAY = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOMUTE = KBD_KEY_NONE,
  KEYBOARD_CODE_MEDIASELECT = KBD_KEY_NONE, KEYBOARD_CODE_WWW = KBD_KEY_NONE, KEYBOARD_CODE_MAIL = KBD_KEY_NONE, KEYBOARD_CODE_CALCULATOR = KBD_KEY_NONE,
  KEYBOARD_CODE_COMPUTER = KBD_KEY_NONE, KEYBOARD_CODE_AC_SEARCH = KBD_KEY_NONE, KEYBOARD_CODE_AC_HOME = KBD_KEY_NONE, KEYBOARD_CODE_AC_BACK = KBD_KEY_NONE,
  KEYBOARD_CODE_AC_FORWARD = KBD_KEY_NONE, KEYBOARD_CODE_AC_STOP = KBD_KEY_NONE, KEYBOARD_CODE_AC_REFRESH = KBD_KEY_NONE, KEYBOARD_CODE_AC_BOOKMARKS = KBD_KEY_NONE,
  KEYBOARD_CODE_BRIGHTNESSDOWN = KBD_KEY_NONE, KEYBOARD_CODE_BRIGHTNESSUP = KBD_KEY_NONE, KEYBOARD_CODE_DISPLAYSWITCH = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMTOGGLE = KBD_KEY_NONE,
  KEYBOARD_CODE_KBDILLUMDOWN = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMUP = KBD_KEY_NONE, KEYBOARD_CODE_EJECT = KBD_KEY_NONE, KEYBOARD_CODE_SLEEP = KBD_KEY_NONE,
  KEYBOARD_CODE_APP1 = KBD_KEY_NONE, KEYBOARD_CODE_APP2 = KBD_KEY_NONE, MAX_KEYBOARD_CODES = 512, KEYBOARD_CODE_NONE = 0,
  KEYBOARD_CODE_A = KBD_KEY_A, KEYBOARD_CODE_B = KBD_KEY_B, KEYBOARD_CODE_C = KBD_KEY_C, KEYBOARD_CODE_D = KBD_KEY_D,
  KEYBOARD_CODE_E = KBD_KEY_E, KEYBOARD_CODE_F = KBD_KEY_F, KEYBOARD_CODE_G = KBD_KEY_G, KEYBOARD_CODE_H = KBD_KEY_H,
  KEYBOARD_CODE_I = KBD_KEY_I, KEYBOARD_CODE_J = KBD_KEY_J, KEYBOARD_CODE_K = KBD_KEY_K, KEYBOARD_CODE_L = KBD_KEY_L,
  KEYBOARD_CODE_M = KBD_KEY_M, KEYBOARD_CODE_N = KBD_KEY_N, KEYBOARD_CODE_O = KBD_KEY_O, KEYBOARD_CODE_P = KBD_KEY_P,
  KEYBOARD_CODE_Q = KBD_KEY_Q, KEYBOARD_CODE_R = KBD_KEY_R, KEYBOARD_CODE_S = KBD_KEY_S, KEYBOARD_CODE_T = KBD_KEY_T,
  KEYBOARD_CODE_U = KBD_KEY_U, KEYBOARD_CODE_V = KBD_KEY_V, KEYBOARD_CODE_W = KBD_KEY_W, KEYBOARD_CODE_X = KBD_KEY_X,
  KEYBOARD_CODE_Y = KBD_KEY_Y, KEYBOARD_CODE_Z = KBD_KEY_Z, KEYBOARD_CODE_1 = KBD_KEY_1, KEYBOARD_CODE_2 = KBD_KEY_2,
  KEYBOARD_CODE_3 = KBD_KEY_3, KEYBOARD_CODE_4 = KBD_KEY_4, KEYBOARD_CODE_5 = KBD_KEY_5, KEYBOARD_CODE_6 = KBD_KEY_6,
  KEYBOARD_CODE_7 = KBD_KEY_7, KEYBOARD_CODE_8 = KBD_KEY_8, KEYBOARD_CODE_9 = KBD_KEY_9, KEYBOARD_CODE_0 = KBD_KEY_0,
  KEYBOARD_CODE_RETURN = KBD_KEY_ENTER, KEYBOARD_CODE_ESCAPE = KBD_KEY_ESCAPE, KEYBOARD_CODE_BACKSPACE = KBD_KEY_BACKSPACE, KEYBOARD_CODE_TAB = KBD_KEY_TAB,
  KEYBOARD_CODE_SPACE = KBD_KEY_SPACE, KEYBOARD_CODE_MINUS = KBD_KEY_MINUS, KEYBOARD_CODE_EQUALS = KBD_KEY_PLUS, KEYBOARD_CODE_LEFTBRACKET = KBD_KEY_LBRACKET,
  KEYBOARD_CODE_RIGHTBRACKET = KBD_KEY_RBRACKET, KEYBOARD_CODE_BACKSLASH = KBD_KEY_BACKSLASH, KEYBOARD_CODE_NONUSHASH = KBD_KEY_NONE, KEYBOARD_CODE_SEMICOLON = KBD_KEY_SEMICOLON,
  KEYBOARD_CODE_APOSTROPHE = KBD_KEY_QUOTE, KEYBOARD_CODE_GRAVE = KBD_KEY_TILDE, KEYBOARD_CODE_COMMA = KBD_KEY_COMMA, KEYBOARD_CODE_PERIOD = KBD_KEY_PERIOD,
  KEYBOARD_CODE_SLASH = KBD_KEY_SLASH, KEYBOARD_CODE_CAPSLOCK = KBD_KEY_CAPSLOCK, KEYBOARD_CODE_F1 = KBD_KEY_F1, KEYBOARD_CODE_F2 = KBD_KEY_F2,
  KEYBOARD_CODE_F3 = KBD_KEY_F3, KEYBOARD_CODE_F4 = KBD_KEY_F4, KEYBOARD_CODE_F5 = KBD_KEY_F5, KEYBOARD_CODE_F6 = KBD_KEY_F6,
  KEYBOARD_CODE_F7 = KBD_KEY_F7, KEYBOARD_CODE_F8 = KBD_KEY_F8, KEYBOARD_CODE_F9 = KBD_KEY_F9, KEYBOARD_CODE_F10 = KBD_KEY_F10,
  KEYBOARD_CODE_F11 = KBD_KEY_F11, KEYBOARD_CODE_F12 = KBD_KEY_F12, KEYBOARD_CODE_PRINTSCREEN = KBD_KEY_PRINT, KEYBOARD_CODE_SCROLLLOCK = KBD_KEY_SCRLOCK,
  KEYBOARD_CODE_PAUSE = KBD_KEY_PAUSE, KEYBOARD_CODE_INSERT = KBD_KEY_INSERT, KEYBOARD_CODE_HOME = KBD_KEY_HOME, KEYBOARD_CODE_PAGEUP = KBD_KEY_PGUP,
  KEYBOARD_CODE_DELETE = KBD_KEY_DEL, KEYBOARD_CODE_END = KBD_KEY_END, KEYBOARD_CODE_PAGEDOWN = KBD_KEY_PGDOWN, KEYBOARD_CODE_RIGHT = KBD_KEY_RIGHT,
  KEYBOARD_CODE_LEFT = KBD_KEY_LEFT, KEYBOARD_CODE_DOWN = KBD_KEY_DOWN, KEYBOARD_CODE_UP = KBD_KEY_UP, KEYBOARD_CODE_NUMLOCKCLEAR = KBD_KEY_PAD_NUMLOCK,
  KEYBOARD_CODE_KP_DIVIDE = KBD_KEY_PAD_DIVIDE, KEYBOARD_CODE_KP_MULTIPLY = KBD_KEY_PAD_MULTIPLY, KEYBOARD_CODE_KP_MINUS = KBD_KEY_PAD_MINUS, KEYBOARD_CODE_KP_PLUS = KBD_KEY_PAD_PLUS,
  KEYBOARD_CODE_KP_ENTER = KBD_KEY_PAD_ENTER, KEYBOARD_CODE_KP_1 = KBD_KEY_PAD_1, KEYBOARD_CODE_KP_2 = KBD_KEY_PAD_2, KEYBOARD_CODE_KP_3 = KBD_KEY_PAD_3,
  KEYBOARD_CODE_KP_4 = KBD_KEY_PAD_4, KEYBOARD_CODE_KP_5 = KBD_KEY_PAD_5, KEYBOARD_CODE_KP_6 = KBD_KEY_PAD_6, KEYBOARD_CODE_KP_7 = KBD_KEY_PAD_7,
  KEYBOARD_CODE_KP_8 = KBD_KEY_PAD_8, KEYBOARD_CODE_KP_9 = KBD_KEY_PAD_9, KEYBOARD_CODE_KP_0 = KBD_KEY_PAD_0, KEYBOARD_CODE_KP_PERIOD = KBD_KEY_PAD_PERIOD,
  KEYBOARD_CODE_NONUSBACKSLASH = KBD_KEY_NONE, KEYBOARD_CODE_APPLICATION = KBD_KEY_NONE, KEYBOARD_CODE_POWER = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALS = KBD_KEY_NONE,
  KEYBOARD_CODE_F13 = KBD_KEY_NONE, KEYBOARD_CODE_F14 = KBD_KEY_NONE, KEYBOARD_CODE_F15 = KBD_KEY_NONE, KEYBOARD_CODE_F16 = KBD_KEY_NONE,
  KEYBOARD_CODE_F17 = KBD_KEY_NONE, KEYBOARD_CODE_F18 = KBD_KEY_NONE, KEYBOARD_CODE_F19 = KBD_KEY_NONE, KEYBOARD_CODE_F20 = KBD_KEY_NONE,
  KEYBOARD_CODE_F21 = KBD_KEY_NONE, KEYBOARD_CODE_F22 = KBD_KEY_NONE, KEYBOARD_CODE_F23 = KBD_KEY_NONE, KEYBOARD_CODE_F24 = KBD_KEY_NONE,
  KEYBOARD_CODE_EXECUTE = KBD_KEY_NONE, KEYBOARD_CODE_HELP = KBD_KEY_NONE, KEYBOARD_CODE_MENU = KBD_KEY_NONE, KEYBOARD_CODE_SELECT = KBD_KEY_NONE,
  KEYBOARD_CODE_STOP = KBD_KEY_NONE, KEYBOARD_CODE_AGAIN = KBD_KEY_NONE, KEYBOARD_CODE_UNDO = KBD_KEY_NONE, KEYBOARD_CODE_CUT = KBD_KEY_NONE,
  KEYBOARD_CODE_COPY = KBD_KEY_NONE, KEYBOARD_CODE_PASTE = KBD_KEY_NONE, KEYBOARD_CODE_FIND = KBD_KEY_NONE, KEYBOARD_CODE_MUTE = KBD_KEY_NONE,
  KEYBOARD_CODE_VOLUMEUP = KBD_KEY_NONE, KEYBOARD_CODE_VOLUMEDOWN = KBD_KEY_NONE, KEYBOARD_CODE_KP_COMMA = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALSAS400 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL1 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL2 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL3 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL4 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL5 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL6 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL7 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL8 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL9 = KBD_KEY_NONE, KEYBOARD_CODE_LANG1 = KBD_KEY_NONE, KEYBOARD_CODE_LANG2 = KBD_KEY_NONE, KEYBOARD_CODE_LANG3 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG4 = KBD_KEY_NONE, KEYBOARD_CODE_LANG5 = KBD_KEY_NONE, KEYBOARD_CODE_LANG6 = KBD_KEY_NONE, KEYBOARD_CODE_LANG7 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG8 = KBD_KEY_NONE, KEYBOARD_CODE_LANG9 = KBD_KEY_NONE, KEYBOARD_CODE_ALTERASE = KBD_KEY_NONE, KEYBOARD_CODE_SYSREQ = KBD_KEY_NONE,
  KEYBOARD_CODE_CANCEL = KBD_KEY_NONE, KEYBOARD_CODE_CLEAR = KBD_KEY_NONE, KEYBOARD_CODE_PRIOR = KBD_KEY_NONE, KEYBOARD_CODE_RETURN2 = KBD_KEY_NONE,
  KEYBOARD_CODE_SEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_OUT = KBD_KEY_NONE, KEYBOARD_CODE_OPER = KBD_KEY_NONE, KEYBOARD_CODE_CLEARAGAIN = KBD_KEY_NONE,
  KEYBOARD_CODE_CRSEL = KBD_KEY_NONE, KEYBOARD_CODE_EXSEL = KBD_KEY_NONE, KEYBOARD_CODE_KP_00 = KBD_KEY_NONE, KEYBOARD_CODE_KP_000 = KBD_KEY_NONE,
  KEYBOARD_CODE_THOUSANDSSEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_DECIMALSEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_CURRENCYUNIT = KBD_KEY_NONE, KEYBOARD_CODE_CURRENCYSUBUNIT = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_LEFTPAREN = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTPAREN = KBD_KEY_NONE, KEYBOARD_CODE_KP_LEFTBRACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTBRACE = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_TAB = KBD_KEY_NONE, KEYBOARD_CODE_KP_BACKSPACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_A = KBD_KEY_NONE, KEYBOARD_CODE_KP_B = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_C = KBD_KEY_NONE, KEYBOARD_CODE_KP_D = KBD_KEY_NONE, KEYBOARD_CODE_KP_E = KBD_KEY_NONE, KEYBOARD_CODE_KP_F = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_XOR = KBD_KEY_NONE, KEYBOARD_CODE_KP_POWER = KBD_KEY_NONE, KEYBOARD_CODE_KP_PERCENT = KBD_KEY_NONE, KEYBOARD_CODE_KP_LESS = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_GREATER = KBD_KEY_NONE, KEYBOARD_CODE_KP_AMPERSAND = KBD_KEY_NONE, KEYBOARD_CODE_KP_DBLAMPERSAND = KBD_KEY_NONE, KEYBOARD_CODE_KP_VERTICALBAR = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_DBLVERTICALBAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_COLON = KBD_KEY_NONE, KEYBOARD_CODE_KP_HASH = KBD_KEY_NONE, KEYBOARD_CODE_KP_SPACE = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_AT = KBD_KEY_NONE, KEYBOARD_CODE_KP_EXCLAM = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMSTORE = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMRECALL = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMCLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMADD = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMSUBTRACT = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMMULTIPLY = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMDIVIDE = KBD_KEY_NONE, KEYBOARD_CODE_KP_PLUSMINUS = KBD_KEY_NONE, KEYBOARD_CODE_KP_CLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_CLEARENTRY = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_BINARY = KBD_KEY_NONE, KEYBOARD_CODE_KP_OCTAL = KBD_KEY_NONE, KEYBOARD_CODE_KP_DECIMAL = KBD_KEY_NONE, KEYBOARD_CODE_KP_HEXADECIMAL = KBD_KEY_NONE,
  KEYBOARD_CODE_LCTRL = KBD_KEY_NONE, KEYBOARD_CODE_LSHIFT = KBD_KEY_NONE, KEYBOARD_CODE_LALT = KBD_KEY_NONE, KEYBOARD_CODE_LGUI = KBD_KEY_NONE,
  KEYBOARD_CODE_RCTRL = KBD_KEY_NONE, KEYBOARD_CODE_RSHIFT = KBD_KEY_NONE, KEYBOARD_CODE_RALT = KBD_KEY_NONE, KEYBOARD_CODE_RGUI = KBD_KEY_NONE,
  KEYBOARD_CODE_MODE = KBD_KEY_NONE, KEYBOARD_CODE_AUDIONEXT = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOPREV = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOSTOP = KBD_KEY_NONE,
  KEYBOARD_CODE_AUDIOPLAY = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOMUTE = KBD_KEY_NONE, KEYBOARD_CODE_MEDIASELECT = KBD_KEY_NONE, KEYBOARD_CODE_WWW = KBD_KEY_NONE,
  KEYBOARD_CODE_MAIL = KBD_KEY_NONE, KEYBOARD_CODE_CALCULATOR = KBD_KEY_NONE, KEYBOARD_CODE_COMPUTER = KBD_KEY_NONE, KEYBOARD_CODE_AC_SEARCH = KBD_KEY_NONE,
  KEYBOARD_CODE_AC_HOME = KBD_KEY_NONE, KEYBOARD_CODE_AC_BACK = KBD_KEY_NONE, KEYBOARD_CODE_AC_FORWARD = KBD_KEY_NONE, KEYBOARD_CODE_AC_STOP = KBD_KEY_NONE,
  KEYBOARD_CODE_AC_REFRESH = KBD_KEY_NONE, KEYBOARD_CODE_AC_BOOKMARKS = KBD_KEY_NONE, KEYBOARD_CODE_BRIGHTNESSDOWN = KBD_KEY_NONE, KEYBOARD_CODE_BRIGHTNESSUP = KBD_KEY_NONE,
  KEYBOARD_CODE_DISPLAYSWITCH = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMTOGGLE = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMDOWN = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMUP = KBD_KEY_NONE,
  KEYBOARD_CODE_EJECT = KBD_KEY_NONE, KEYBOARD_CODE_SLEEP = KBD_KEY_NONE, KEYBOARD_CODE_APP1 = KBD_KEY_NONE, KEYBOARD_CODE_APP2 = KBD_KEY_NONE,
  MAX_KEYBOARD_CODES = 512, KEYBOARD_CODE_NONE = 0, KEYBOARD_CODE_A = KBD_KEY_A, KEYBOARD_CODE_B = KBD_KEY_B,
  KEYBOARD_CODE_C = KBD_KEY_C, KEYBOARD_CODE_D = KBD_KEY_D, KEYBOARD_CODE_E = KBD_KEY_E, KEYBOARD_CODE_F = KBD_KEY_F,
  KEYBOARD_CODE_G = KBD_KEY_G, KEYBOARD_CODE_H = KBD_KEY_H, KEYBOARD_CODE_I = KBD_KEY_I, KEYBOARD_CODE_J = KBD_KEY_J,
  KEYBOARD_CODE_K = KBD_KEY_K, KEYBOARD_CODE_L = KBD_KEY_L, KEYBOARD_CODE_M = KBD_KEY_M, KEYBOARD_CODE_N = KBD_KEY_N,
  KEYBOARD_CODE_O = KBD_KEY_O, KEYBOARD_CODE_P = KBD_KEY_P, KEYBOARD_CODE_Q = KBD_KEY_Q, KEYBOARD_CODE_R = KBD_KEY_R,
  KEYBOARD_CODE_S = KBD_KEY_S, KEYBOARD_CODE_T = KBD_KEY_T, KEYBOARD_CODE_U = KBD_KEY_U, KEYBOARD_CODE_V = KBD_KEY_V,
  KEYBOARD_CODE_W = KBD_KEY_W, KEYBOARD_CODE_X = KBD_KEY_X, KEYBOARD_CODE_Y = KBD_KEY_Y, KEYBOARD_CODE_Z = KBD_KEY_Z,
  KEYBOARD_CODE_1 = KBD_KEY_1, KEYBOARD_CODE_2 = KBD_KEY_2, KEYBOARD_CODE_3 = KBD_KEY_3, KEYBOARD_CODE_4 = KBD_KEY_4,
  KEYBOARD_CODE_5 = KBD_KEY_5, KEYBOARD_CODE_6 = KBD_KEY_6, KEYBOARD_CODE_7 = KBD_KEY_7, KEYBOARD_CODE_8 = KBD_KEY_8,
  KEYBOARD_CODE_9 = KBD_KEY_9, KEYBOARD_CODE_0 = KBD_KEY_0, KEYBOARD_CODE_RETURN = KBD_KEY_ENTER, KEYBOARD_CODE_ESCAPE = KBD_KEY_ESCAPE,
  KEYBOARD_CODE_BACKSPACE = KBD_KEY_BACKSPACE, KEYBOARD_CODE_TAB = KBD_KEY_TAB, KEYBOARD_CODE_SPACE = KBD_KEY_SPACE, KEYBOARD_CODE_MINUS = KBD_KEY_MINUS,
  KEYBOARD_CODE_EQUALS = KBD_KEY_PLUS, KEYBOARD_CODE_LEFTBRACKET = KBD_KEY_LBRACKET, KEYBOARD_CODE_RIGHTBRACKET = KBD_KEY_RBRACKET, KEYBOARD_CODE_BACKSLASH = KBD_KEY_BACKSLASH,
  KEYBOARD_CODE_NONUSHASH = KBD_KEY_NONE, KEYBOARD_CODE_SEMICOLON = KBD_KEY_SEMICOLON, KEYBOARD_CODE_APOSTROPHE = KBD_KEY_QUOTE, KEYBOARD_CODE_GRAVE = KBD_KEY_TILDE,
  KEYBOARD_CODE_COMMA = KBD_KEY_COMMA, KEYBOARD_CODE_PERIOD = KBD_KEY_PERIOD, KEYBOARD_CODE_SLASH = KBD_KEY_SLASH, KEYBOARD_CODE_CAPSLOCK = KBD_KEY_CAPSLOCK,
  KEYBOARD_CODE_F1 = KBD_KEY_F1, KEYBOARD_CODE_F2 = KBD_KEY_F2, KEYBOARD_CODE_F3 = KBD_KEY_F3, KEYBOARD_CODE_F4 = KBD_KEY_F4,
  KEYBOARD_CODE_F5 = KBD_KEY_F5, KEYBOARD_CODE_F6 = KBD_KEY_F6, KEYBOARD_CODE_F7 = KBD_KEY_F7, KEYBOARD_CODE_F8 = KBD_KEY_F8,
  KEYBOARD_CODE_F9 = KBD_KEY_F9, KEYBOARD_CODE_F10 = KBD_KEY_F10, KEYBOARD_CODE_F11 = KBD_KEY_F11, KEYBOARD_CODE_F12 = KBD_KEY_F12,
  KEYBOARD_CODE_PRINTSCREEN = KBD_KEY_PRINT, KEYBOARD_CODE_SCROLLLOCK = KBD_KEY_SCRLOCK, KEYBOARD_CODE_PAUSE = KBD_KEY_PAUSE, KEYBOARD_CODE_INSERT = KBD_KEY_INSERT,
  KEYBOARD_CODE_HOME = KBD_KEY_HOME, KEYBOARD_CODE_PAGEUP = KBD_KEY_PGUP, KEYBOARD_CODE_DELETE = KBD_KEY_DEL, KEYBOARD_CODE_END = KBD_KEY_END,
  KEYBOARD_CODE_PAGEDOWN = KBD_KEY_PGDOWN, KEYBOARD_CODE_RIGHT = KBD_KEY_RIGHT, KEYBOARD_CODE_LEFT = KBD_KEY_LEFT, KEYBOARD_CODE_DOWN = KBD_KEY_DOWN,
  KEYBOARD_CODE_UP = KBD_KEY_UP, KEYBOARD_CODE_NUMLOCKCLEAR = KBD_KEY_PAD_NUMLOCK, KEYBOARD_CODE_KP_DIVIDE = KBD_KEY_PAD_DIVIDE, KEYBOARD_CODE_KP_MULTIPLY = KBD_KEY_PAD_MULTIPLY,
  KEYBOARD_CODE_KP_MINUS = KBD_KEY_PAD_MINUS, KEYBOARD_CODE_KP_PLUS = KBD_KEY_PAD_PLUS, KEYBOARD_CODE_KP_ENTER = KBD_KEY_PAD_ENTER, KEYBOARD_CODE_KP_1 = KBD_KEY_PAD_1,
  KEYBOARD_CODE_KP_2 = KBD_KEY_PAD_2, KEYBOARD_CODE_KP_3 = KBD_KEY_PAD_3, KEYBOARD_CODE_KP_4 = KBD_KEY_PAD_4, KEYBOARD_CODE_KP_5 = KBD_KEY_PAD_5,
  KEYBOARD_CODE_KP_6 = KBD_KEY_PAD_6, KEYBOARD_CODE_KP_7 = KBD_KEY_PAD_7, KEYBOARD_CODE_KP_8 = KBD_KEY_PAD_8, KEYBOARD_CODE_KP_9 = KBD_KEY_PAD_9,
  KEYBOARD_CODE_KP_0 = KBD_KEY_PAD_0, KEYBOARD_CODE_KP_PERIOD = KBD_KEY_PAD_PERIOD, KEYBOARD_CODE_NONUSBACKSLASH = KBD_KEY_NONE, KEYBOARD_CODE_APPLICATION = KBD_KEY_NONE,
  KEYBOARD_CODE_POWER = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALS = KBD_KEY_NONE, KEYBOARD_CODE_F13 = KBD_KEY_NONE, KEYBOARD_CODE_F14 = KBD_KEY_NONE,
  KEYBOARD_CODE_F15 = KBD_KEY_NONE, KEYBOARD_CODE_F16 = KBD_KEY_NONE, KEYBOARD_CODE_F17 = KBD_KEY_NONE, KEYBOARD_CODE_F18 = KBD_KEY_NONE,
  KEYBOARD_CODE_F19 = KBD_KEY_NONE, KEYBOARD_CODE_F20 = KBD_KEY_NONE, KEYBOARD_CODE_F21 = KBD_KEY_NONE, KEYBOARD_CODE_F22 = KBD_KEY_NONE,
  KEYBOARD_CODE_F23 = KBD_KEY_NONE, KEYBOARD_CODE_F24 = KBD_KEY_NONE, KEYBOARD_CODE_EXECUTE = KBD_KEY_NONE, KEYBOARD_CODE_HELP = KBD_KEY_NONE,
  KEYBOARD_CODE_MENU = KBD_KEY_NONE, KEYBOARD_CODE_SELECT = KBD_KEY_NONE, KEYBOARD_CODE_STOP = KBD_KEY_NONE, KEYBOARD_CODE_AGAIN = KBD_KEY_NONE,
  KEYBOARD_CODE_UNDO = KBD_KEY_NONE, KEYBOARD_CODE_CUT = KBD_KEY_NONE, KEYBOARD_CODE_COPY = KBD_KEY_NONE, KEYBOARD_CODE_PASTE = KBD_KEY_NONE,
  KEYBOARD_CODE_FIND = KBD_KEY_NONE, KEYBOARD_CODE_MUTE = KBD_KEY_NONE, KEYBOARD_CODE_VOLUMEUP = KBD_KEY_NONE, KEYBOARD_CODE_VOLUMEDOWN = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_COMMA = KBD_KEY_NONE, KEYBOARD_CODE_KP_EQUALSAS400 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL1 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL2 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL3 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL4 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL5 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL6 = KBD_KEY_NONE,
  KEYBOARD_CODE_INTERNATIONAL7 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL8 = KBD_KEY_NONE, KEYBOARD_CODE_INTERNATIONAL9 = KBD_KEY_NONE, KEYBOARD_CODE_LANG1 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG2 = KBD_KEY_NONE, KEYBOARD_CODE_LANG3 = KBD_KEY_NONE, KEYBOARD_CODE_LANG4 = KBD_KEY_NONE, KEYBOARD_CODE_LANG5 = KBD_KEY_NONE,
  KEYBOARD_CODE_LANG6 = KBD_KEY_NONE, KEYBOARD_CODE_LANG7 = KBD_KEY_NONE, KEYBOARD_CODE_LANG8 = KBD_KEY_NONE, KEYBOARD_CODE_LANG9 = KBD_KEY_NONE,
  KEYBOARD_CODE_ALTERASE = KBD_KEY_NONE, KEYBOARD_CODE_SYSREQ = KBD_KEY_NONE, KEYBOARD_CODE_CANCEL = KBD_KEY_NONE, KEYBOARD_CODE_CLEAR = KBD_KEY_NONE,
  KEYBOARD_CODE_PRIOR = KBD_KEY_NONE, KEYBOARD_CODE_RETURN2 = KBD_KEY_NONE, KEYBOARD_CODE_SEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_OUT = KBD_KEY_NONE,
  KEYBOARD_CODE_OPER = KBD_KEY_NONE, KEYBOARD_CODE_CLEARAGAIN = KBD_KEY_NONE, KEYBOARD_CODE_CRSEL = KBD_KEY_NONE, KEYBOARD_CODE_EXSEL = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_00 = KBD_KEY_NONE, KEYBOARD_CODE_KP_000 = KBD_KEY_NONE, KEYBOARD_CODE_THOUSANDSSEPARATOR = KBD_KEY_NONE, KEYBOARD_CODE_DECIMALSEPARATOR = KBD_KEY_NONE,
  KEYBOARD_CODE_CURRENCYUNIT = KBD_KEY_NONE, KEYBOARD_CODE_CURRENCYSUBUNIT = KBD_KEY_NONE, KEYBOARD_CODE_KP_LEFTPAREN = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTPAREN = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_LEFTBRACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_RIGHTBRACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_TAB = KBD_KEY_NONE, KEYBOARD_CODE_KP_BACKSPACE = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_A = KBD_KEY_NONE, KEYBOARD_CODE_KP_B = KBD_KEY_NONE, KEYBOARD_CODE_KP_C = KBD_KEY_NONE, KEYBOARD_CODE_KP_D = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_E = KBD_KEY_NONE, KEYBOARD_CODE_KP_F = KBD_KEY_NONE, KEYBOARD_CODE_KP_XOR = KBD_KEY_NONE, KEYBOARD_CODE_KP_POWER = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_PERCENT = KBD_KEY_NONE, KEYBOARD_CODE_KP_LESS = KBD_KEY_NONE, KEYBOARD_CODE_KP_GREATER = KBD_KEY_NONE, KEYBOARD_CODE_KP_AMPERSAND = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_DBLAMPERSAND = KBD_KEY_NONE, KEYBOARD_CODE_KP_VERTICALBAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_DBLVERTICALBAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_COLON = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_HASH = KBD_KEY_NONE, KEYBOARD_CODE_KP_SPACE = KBD_KEY_NONE, KEYBOARD_CODE_KP_AT = KBD_KEY_NONE, KEYBOARD_CODE_KP_EXCLAM = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMSTORE = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMRECALL = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMCLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMADD = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_MEMSUBTRACT = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMMULTIPLY = KBD_KEY_NONE, KEYBOARD_CODE_KP_MEMDIVIDE = KBD_KEY_NONE, KEYBOARD_CODE_KP_PLUSMINUS = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_CLEAR = KBD_KEY_NONE, KEYBOARD_CODE_KP_CLEARENTRY = KBD_KEY_NONE, KEYBOARD_CODE_KP_BINARY = KBD_KEY_NONE, KEYBOARD_CODE_KP_OCTAL = KBD_KEY_NONE,
  KEYBOARD_CODE_KP_DECIMAL = KBD_KEY_NONE, KEYBOARD_CODE_KP_HEXADECIMAL = KBD_KEY_NONE, KEYBOARD_CODE_LCTRL = KBD_KEY_NONE, KEYBOARD_CODE_LSHIFT = KBD_KEY_NONE,
  KEYBOARD_CODE_LALT = KBD_KEY_NONE, KEYBOARD_CODE_LGUI = KBD_KEY_NONE, KEYBOARD_CODE_RCTRL = KBD_KEY_NONE, KEYBOARD_CODE_RSHIFT = KBD_KEY_NONE,
  KEYBOARD_CODE_RALT = KBD_KEY_NONE, KEYBOARD_CODE_RGUI = KBD_KEY_NONE, KEYBOARD_CODE_MODE = KBD_KEY_NONE, KEYBOARD_CODE_AUDIONEXT = KBD_KEY_NONE,
  KEYBOARD_CODE_AUDIOPREV = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOSTOP = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOPLAY = KBD_KEY_NONE, KEYBOARD_CODE_AUDIOMUTE = KBD_KEY_NONE,
  KEYBOARD_CODE_MEDIASELECT = KBD_KEY_NONE, KEYBOARD_CODE_WWW = KBD_KEY_NONE, KEYBOARD_CODE_MAIL = KBD_KEY_NONE, KEYBOARD_CODE_CALCULATOR = KBD_KEY_NONE,
  KEYBOARD_CODE_COMPUTER = KBD_KEY_NONE, KEYBOARD_CODE_AC_SEARCH = KBD_KEY_NONE, KEYBOARD_CODE_AC_HOME = KBD_KEY_NONE, KEYBOARD_CODE_AC_BACK = KBD_KEY_NONE,
  KEYBOARD_CODE_AC_FORWARD = KBD_KEY_NONE, KEYBOARD_CODE_AC_STOP = KBD_KEY_NONE, KEYBOARD_CODE_AC_REFRESH = KBD_KEY_NONE, KEYBOARD_CODE_AC_BOOKMARKS = KBD_KEY_NONE,
  KEYBOARD_CODE_BRIGHTNESSDOWN = KBD_KEY_NONE, KEYBOARD_CODE_BRIGHTNESSUP = KBD_KEY_NONE, KEYBOARD_CODE_DISPLAYSWITCH = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMTOGGLE = KBD_KEY_NONE,
  KEYBOARD_CODE_KBDILLUMDOWN = KBD_KEY_NONE, KEYBOARD_CODE_KBDILLUMUP = KBD_KEY_NONE, KEYBOARD_CODE_EJECT = KBD_KEY_NONE, KEYBOARD_CODE_SLEEP = KBD_KEY_NONE,
  KEYBOARD_CODE_APP1 = KBD_KEY_NONE, KEYBOARD_CODE_APP2 = KBD_KEY_NONE, MAX_KEYBOARD_CODES = 512, KEYBOARD_CODE_NONE = 0
}
 
enum  ShadowMethod { SHADOW_METHOD_STENCIL_DEPTH_FAIL, SHADOW_METHOD_STENCIL_EXCLUSIVE_OR }
 
enum  ShadowCast { SHADOW_CAST_ALWAYS, SHADOW_CAST_NEVER }
 
enum  ShadowReceive { SHADOW_RECEIVE_ALWAYS, SHADOW_RECEIVE_NEVER }
 
enum  AudioRepeat { AUDIO_REPEAT_NONE, AUDIO_REPEAT_FOREVER }
 
enum  DistanceModel { DISTANCE_MODEL_POSITIONAL, DISTANCE_MODEL_AMBIENT, DISTANCE_MODEL_DEFAULT = DISTANCE_MODEL_POSITIONAL }
 
enum  AudioSourceState { AUDIO_SOURCE_STATE_PLAYING, AUDIO_SOURCE_STATE_PAUSED, AUDIO_SOURCE_STATE_STOPPED }
 
enum  AudioDataFormat {
  AUDIO_DATA_FORMAT_MONO8, AUDIO_DATA_FORMAT_MONO16, AUDIO_DATA_FORMAT_STEREO8, AUDIO_DATA_FORMAT_STEREO16,
  AUDIO_DATA_FORMAT_MONO24, AUDIO_DATA_FORMAT_STEREO24
}
 
enum  MipmapGenerate { MIPMAP_GENERATE_NONE, MIPMAP_GENERATE_COMPLETE }
 
enum  TextureWrap { TEXTURE_WRAP_REPEAT, TEXTURE_WRAP_CLAMP_TO_EDGE, TEXTURE_WRAP_MIRRORED_REPEAT, TEXTURE_WRAP_MIRRORED_CLAMP_TO_EDGE }
 
enum  TextureFilter { TEXTURE_FILTER_POINT, TEXTURE_FILTER_BILINEAR, TEXTURE_FILTER_TRILINEAR }
 
enum  BlurType { BLUR_TYPE_SIMPLE, BLUR_TYPE_GAUSSIAN }
 
enum  TextureFormat {
  TEXTURE_FORMAT_INVALID = 0, TEXTURE_FORMAT_R_1UB_8, TEXTURE_FORMAT_RGB_3UB_888, TEXTURE_FORMAT_RGBA_4UB_8888,
  TEXTURE_FORMAT_RGB_1US_565, TEXTURE_FORMAT_RGBA_1US_4444, TEXTURE_FORMAT_RGBA_1US_5551, TEXTURE_FORMAT_ARGB_1US_1555,
  TEXTURE_FORMAT_ARGB_1US_4444, TEXTURE_FORMAT_RGB_1US_565_TWID, TEXTURE_FORMAT_ARGB_1US_4444_TWID, TEXTURE_FORMAT_ARGB_1US_1555_TWID,
  TEXTURE_FORMAT_RGB8_PALETTED4, TEXTURE_FORMAT_RGBA8_PALETTED4, TEXTURE_FORMAT_RGB565_PALETTED4, TEXTURE_FORMAT_RGB8_PALETTED8,
  TEXTURE_FORMAT_RGBA8_PALETTED8, TEXTURE_FORMAT_RGB565_PALETTED8, TEXTURE_FORMAT_RGB_1US_565_VQ_TWID, TEXTURE_FORMAT_ARGB_1US_4444_VQ_TWID,
  TEXTURE_FORMAT_ARGB_1US_1555_VQ_TWID, TEXTURE_FORMAT_RGB_1US_565_VQ_TWID_MIP, TEXTURE_FORMAT_ARGB_1US_4444_VQ_TWID_MIP, TEXTURE_FORMAT_ARGB_1US_1555_VQ_TWID_MIP
}
 
enum  TextureFreeData { TEXTURE_FREE_DATA_NEVER, TEXTURE_FREE_DATA_AFTER_UPLOAD }
 
enum  TextureChannel {
  TEXTURE_CHANNEL_RED, TEXTURE_CHANNEL_GREEN, TEXTURE_CHANNEL_BLUE, TEXTURE_CHANNEL_ALPHA,
  TEXTURE_CHANNEL_ZERO, TEXTURE_CHANNEL_ONE, TEXTURE_CHANNEL_INVERSE_RED
}
 
enum  VertexAttribute {
  VERTEX_ATTRIBUTE_NONE, VERTEX_ATTRIBUTE_2F, VERTEX_ATTRIBUTE_3F, VERTEX_ATTRIBUTE_4F,
  VERTEX_ATTRIBUTE_4UB, VERTEX_ATTRIBUTE_PACKED_VEC4_1I
}
 
enum  IndexType { INDEX_TYPE_8_BIT, INDEX_TYPE_16_BIT, INDEX_TYPE_32_BIT }
 
enum  MeshArrangement {
  MESH_ARRANGEMENT_TRIANGLES, MESH_ARRANGEMENT_TRIANGLE_FAN, MESH_ARRANGEMENT_TRIANGLE_STRIP, MESH_ARRANGEMENT_QUADS,
  MESH_ARRANGEMENT_LINES, MESH_ARRANGEMENT_LINE_STRIP
}
 
enum  AvailablePartitioner { PARTITIONER_NULL, PARTITIONER_FRUSTUM, PARTITIONER_HASH }
 
enum  LightType { LIGHT_TYPE_POINT, LIGHT_TYPE_DIRECTIONAL, LIGHT_TYPE_SPOT_LIGHT }
 
enum  AspectRatio { ASPECT_RATIO_CUSTOM, ASPECT_RATIO_4_BY_3, ASPECT_RATIO_16_BY_9, ASPECT_RATIO_16_BY_10 }
 
enum  ProjectionType { PROJECTION_TYPE_PERSPECTIVE, PROJECTION_TYPE_ORTHOGRAPHIC }
 
enum  BufferClearFlag { BUFFER_CLEAR_COLOUR_BUFFER = 0x1, BUFFER_CLEAR_DEPTH_BUFFER = 0x2, BUFFER_CLEAR_STENCIL_BUFFER = 0x4, BUFFER_CLEAR_ALL = BUFFER_CLEAR_COLOUR_BUFFER | BUFFER_CLEAR_DEPTH_BUFFER | BUFFER_CLEAR_STENCIL_BUFFER }
 
enum  ShaderType { SHADER_TYPE_VERTEX, SHADER_TYPE_FRAGMENT, SHADER_TYPE_MAX }
 
enum  VirtualGamepadConfig { VIRTUAL_GAMEPAD_CONFIG_TWO_BUTTONS, VIRTUAL_GAMEPAD_CONFIG_HAT_AND_BUTTON }
 
enum  JSONNodeType {
  JSON_OBJECT, JSON_ARRAY, JSON_STRING, JSON_NUMBER,
  JSON_TRUE, JSON_FALSE, JSON_NULL
}
 
enum  VertexAttributeType {
  VERTEX_ATTRIBUTE_TYPE_EMPTY = 0, VERTEX_ATTRIBUTE_TYPE_POSITION, VERTEX_ATTRIBUTE_TYPE_NORMAL, VERTEX_ATTRIBUTE_TYPE_TEXCOORD0,
  VERTEX_ATTRIBUTE_TYPE_TEXCOORD1, VERTEX_ATTRIBUTE_TYPE_TEXCOORD2, VERTEX_ATTRIBUTE_TYPE_TEXCOORD3, VERTEX_ATTRIBUTE_TYPE_TEXCOORD4,
  VERTEX_ATTRIBUTE_TYPE_TEXCOORD5, VERTEX_ATTRIBUTE_TYPE_TEXCOORD6, VERTEX_ATTRIBUTE_TYPE_TEXCOORD7, VERTEX_ATTRIBUTE_TYPE_DIFFUSE,
  VERTEX_ATTRIBUTE_TYPE_SPECULAR
}
 
enum  ViewportType {
  VIEWPORT_TYPE_FULL, VIEWPORT_TYPE_BLACKBAR_4_BY_3, VIEWPORT_TYPE_BLACKBAR_16_BY_9, VIEWPORT_TYPE_BLACKBAR_16_BY_10,
  VIEWPORT_TYPE_VERTICAL_SPLIT_LEFT, VIEWPORT_TYPE_VERTICAL_SPLIT_RIGHT, VIEWPORT_TYPE_HORIZONTAL_SPLIT_TOP, VIEWPORT_TYPE_HORIZONTAL_SPLIT_BOTTOM,
  VIEWPORT_TYPE_CUSTOM
}
 

Functions

Applicationget_app ()
 
std::string normalize_language_code (const std::string &language_code)
 
PolygonMode polygon_mode_from_name (const char *name)
 
ShadeModel shade_model_from_name (const char *name)
 
ColourMaterial colour_material_from_name (const char *name)
 
CullMode cull_mode_from_name (const char *name)
 
BlendType blend_type_from_name (const char *name)
 
DepthFunc depth_func_from_name (const char *name)
 
bool core_material_property_value (const MaterialPropertyNameHash hsh, const Colour *&out)
 
bool core_material_property_value (const char *name, const Colour *&out)
 
bool core_material_property_value (const MaterialPropertyNameHash hsh, const bool *&out)
 
bool core_material_property_value (const char *name, const bool *&out)
 
bool core_material_property_value (const MaterialPropertyNameHash hsh, const float *&out)
 
bool core_material_property_value (const char *name, const float *&out)
 
bool core_material_property_value (const MaterialPropertyNameHash hsh, const int32_t *&out)
 
bool core_material_property_value (const char *name, const int32_t *&out)
 
bool core_material_property_value (const MaterialPropertyNameHash hsh, const Vec2 *&)
 
bool core_material_property_value (const char *name, const Vec2 *&out)
 
bool core_material_property_value (const MaterialPropertyNameHash hsh, const Vec3 *&)
 
bool core_material_property_value (const char *name, const Vec3 *&out)
 
bool core_material_property_value (const MaterialPropertyNameHash hsh, const Vec4 *&out)
 
bool core_material_property_value (const char *name, const Vec4 *&out)
 
bool core_material_property_value (const MaterialPropertyNameHash hsh, const Mat3 *&)
 
bool core_material_property_value (const char *name, const Mat3 *&out)
 
bool core_material_property_value (const MaterialPropertyNameHash hsh, const Mat4 *&out)
 
bool core_material_property_value (const char *name, const Mat4 *&out)
 
bool core_material_property_value (const MaterialPropertyNameHash hsh, const TexturePtr *&out)
 
bool core_material_property_value (const char *name, const TexturePtr *&out)
 
bool is_core_property (const char *name)
 
bool core_property_type (MaterialPropertyNameHash hsh, MaterialPropertyType *type)
 
bool core_property_type (const char *name, MaterialPropertyType *type)
 
void init_core_material (const CoreMaterial &base)
 
const CoreMaterialcore_material ()
 
const PropertyList & core_properties ()
 
constexpr unsigned material_property_hash (char const *input)
 
constexpr bool is_core_property (const MaterialPropertyNameHash hsh)
 
bool valid_name (const char *name)
 
std::tuple< NodeFinder, Behaviour * > FindAncestor (const char *name, Behaviour *behaviour)
 
std::tuple< NodeFinder, Behaviour * > FindDescendent (const char *name, Behaviour *behaviour)
 
std::ostream & operator<< (std::ostream &stream, const Colour &c)
 
std::string to_string (int value)
 
std::string to_string (unsigned value)
 
std::string to_string (unsigned long value)
 
std::string to_string (long value)
 
std::string to_string (float value)
 
std::string to_string (double value)
 
std::string to_string (const Vec2 &v)
 
std::string to_string (const Vec3 &v)
 
std::string to_string (const Vec4 &v)
 
int stoi (const std::string &str)
 
float stof (const std::string &str)
 
long stol (const std::string &str)
 
uint64_t generate_frame_id ()
 
void * aligned_alloc (std::size_t alignment, std::size_t size)
 
void _trigger_coroutine (std::function< void()> func)
 
void cr_yield ()
 
void cr_yield_for (const smlt::Seconds &seconds)
 
void cr_run_main (std::function< void()> func)
 
void _trigger_idle_updates ()
 
template<typename Func >
Promise< typename std::result_of< Func()>::type > cr_async (Func func)
 
template<typename T >
cr_await (const Promise< T > &promise)
 
constexpr const char * font_weight_name (FontWeight weight)
 
constexpr const char * font_style_name (FontStyle style)
 
template<class ValueType >
ValueType const * any_cast (any const *operand) noexcept
 
template<class ValueType >
ValueType * any_cast (any *operand) noexcept
 
template<class ValueType , class = enable_if_t< ::std::is_reference<ValueType>::value or ::std::is_copy_constructible<ValueType>::value >>
ValueType any_cast (any const &operand)
 
template<class ValueType , class = enable_if_t< ::std::is_reference<ValueType>::value or ::std::is_copy_constructible<ValueType>::value >>
ValueType any_cast (any &&operand)
 
template<class ValueType , class = enable_if_t< ::std::is_reference<ValueType>::value or ::std::is_copy_constructible<ValueType>::value >>
ValueType any_cast (any &operand)
 
void swap (any &lhs, any &rhs) noexcept
 
template<class T >
constexpr T && forward (remove_reference_t< T > &t) noexcept
 
template<class T >
constexpr T && forward (remove_reference_t< T > &&t) noexcept
 
template<class T >
constexpr auto move (T &&t) noexcept -> decltype(static_cast< remove_reference_t< T > && >(t))
 
template<::std::size_t N, class T , class... Ts>
constexpr auto value_at (T &&value, Ts &&...) -> enable_if_t< N==0and N<(sizeof...(Ts)+1)
 
template<::std::size_t N, class T , class... Ts>
constexpr autodecltype(::smlt::forward< T >(value)) constexpr auto value_at (T &&, Ts &&... values) -> enable_if_t< N !=0and N<(sizeof...(Ts)+1)
 
template<class Callable >
auto make_scope_guard (Callable &&callable) -> scope_guard< decay_t< Callable >>
 
template<typename Callable , typename Signature >
void check_signature ()
 
template<typename T >
bool operator== (const default_init_ptr< T > &lhs, const default_init_ptr< T > &rhs)
 
template<typename T >
bool operator!= (const default_init_ptr< T > &lhs, const default_init_ptr< T > &rhs)
 
template<typename T >
void deleter (T *obj)
 
template<typename ID >
UniqueIDKey make_unique_id_key (const ID &id)
 
template<typename UniqueID >
UniqueID make_unique_id_from_key (const UniqueIDKey &key)
 
void throw_bad_variant_access ()
 
template<std::size_t I, typename... Ts>
constexpr bool holds_alternative (const variant< Ts... > &v) noexcept
 
template<std::size_t I, typename... Ts>
constexpr variant_alternative_t< I, variant< Ts... > > & get (variant< Ts... > &v)
 
template<std::size_t I, typename... Ts>
constexpr variant_alternative_t< I, variant< Ts... > > && get (variant< Ts... > &&v)
 
template<std::size_t I, typename... Ts>
constexpr const variant_alternative_t< I, variant< Ts... > > & get (const variant< Ts... > &v)
 
template<std::size_t I, typename... Ts>
constexpr const variant_alternative_t< I, variant< Ts... > > && get (const variant< Ts... > &&v)
 
template<typename T , typename... Ts>
constexpr T & get (variant< Ts... > &v)
 
template<typename T , typename... Ts>
constexpr T && get (variant< Ts... > &&v)
 
template<typename T , typename... Ts>
constexpr const T & get (const variant< Ts... > &v)
 
template<typename T , typename... Ts>
constexpr const T && get (const variant< Ts... > &&v)
 
template<std::size_t I, typename... Ts>
constexpr lib::add_pointer_t< variant_alternative_t< I, variant< Ts... > > > get_if (variant< Ts... > *v) noexcept
 
template<std::size_t I, typename... Ts>
constexpr lib::add_pointer_t< const variant_alternative_t< I, variant< Ts... > > > get_if (const variant< Ts... > *v) noexcept
 
template<typename T , typename... Ts>
constexpr lib::add_pointer_t< T > get_if (variant< Ts... > *v) noexcept
 
template<typename T , typename... Ts>
constexpr lib::add_pointer_t< const T > get_if (const variant< Ts... > *v) noexcept
 
template<typename... Ts>
constexpr bool operator== (const variant< Ts... > &lhs, const variant< Ts... > &rhs)
 
template<typename... Ts>
constexpr bool operator!= (const variant< Ts... > &lhs, const variant< Ts... > &rhs)
 
template<typename... Ts>
constexpr bool operator< (const variant< Ts... > &lhs, const variant< Ts... > &rhs)
 
template<typename... Ts>
constexpr bool operator> (const variant< Ts... > &lhs, const variant< Ts... > &rhs)
 
template<typename... Ts>
constexpr bool operator<= (const variant< Ts... > &lhs, const variant< Ts... > &rhs)
 
template<typename... Ts>
constexpr bool operator>= (const variant< Ts... > &lhs, const variant< Ts... > &rhs)
 
constexpr bool operator< (monostate, monostate) noexcept
 
constexpr bool operator> (monostate, monostate) noexcept
 
constexpr bool operator<= (monostate, monostate) noexcept
 
constexpr bool operator>= (monostate, monostate) noexcept
 
constexpr bool operator== (monostate, monostate) noexcept
 
constexpr bool operator!= (monostate, monostate) noexcept
 
template<typename Visitor , typename... Vs>
constexpr DECLTYPE_AUTO visit (Visitor &&visitor, Vs &&... vs) DECLTYPE_AUTO_RETURN((detail
 
 STRONG_TYPEDEF (GameControllerID, int8_t)
 
 STRONG_TYPEDEF (GameControllerIndex, int8_t)
 
char16_t find_key (KeyboardMap *map, std::size_t len, KeyboardCode code, bool shift)
 
char16_t character_for_keyboard_code (KeyboardLayout layout, KeyboardCode code, bool shift)
 
std::ostream & operator<< (std::ostream &o, Printable const &instance)
 
 KOS_INIT_FLAGS (INIT_DEFAULT|INIT_MALLOCSTATS|INIT_NET)
 
std::istream & portable_getline (std::istream &is, std::string &t)
 
template<>
void define_property< MATERIAL_PROPERTY_TYPE_TEXTURE, TexturePtr > (Material &material, JSONIterator prop)
 
std::string to_string (const DateTime &time)
 
void verbose (const std::string &text, const std::string &file, int32_t line)
 
void debug (const std::string &text, const std::string &file, int32_t line)
 
void info (const std::string &text, const std::string &file, int32_t line)
 
void warn (const std::string &text, const std::string &file, int32_t line)
 
void error (const std::string &text, const std::string &file, int32_t line)
 
Loggerget_logger (const std::string &name)
 
VertexAttributeType convert (ShaderAvailableAttributes attr)
 
std::ostream & operator<< (std::ostream &stream, const AABB &aabb)
 
Degrees lerp_angle (Degrees a, Degrees b, float t)
 
Degrees to_degrees (const Radians &radians)
 
Vec3 operator* (const Quaternion &q, const Vec3 &v)
 
Vec3 operator* (const Vec3 &v, const Quaternion &q)
 
Vec3operator*= (Vec3 &lhs, const Quaternion &rhs)
 
std::ostream & operator<< (std::ostream &stream, const Quaternion &quat)
 
Quaternion operator* (float s, const Quaternion &q)
 
Radians to_radians (const Degrees &degrees)
 
Radians lerp_angle (Radians a, Radians b, float t)
 
float smoothstep (const float e0, const float e1, float x)
 
float smootherstep (const float e0, const float e1, float x)
 
uint32_t next_power_of_two (uint32_t x)
 
template<typename T >
bool almost_equal (const T &lhs, const T &rhs)
 
template<typename T >
bool almost_lequal (const T &lhs, const T &rhs, const T &epsilon)
 
template<typename T >
bool almost_gequal (const T &lhs, const T &rhs, const T &epsilon)
 
float clamp (const float x, const float l, const float h)
 
float lerp (const float x, const float y, const float t)
 
bool operator== (const Vec2 &lhs, const Vec2 &rhs)
 
bool operator!= (const Vec2 &lhs, const Vec2 &rhs)
 
smlt::Vec2 operator* (float lhs, const smlt::Vec2 &rhs)
 
std::ostream & operator<< (std::ostream &stream, const Vec2 &vec)
 
std::ostream & operator<< (std::ostream &stream, const Vec3 &vec)
 
Vec3 operator* (float lhs, const Vec3 &rhs)
 
Vec3 operator/ (float lhs, const Vec3 &rhs)
 
smlt::Vec3 operator- (const smlt::Vec3 &vec)
 
std::ostream & operator<< (std::ostream &stream, const Vec4 &vec)
 
void generate_boxes_for_frustum (const Frustum &frustum, std::vector< AABB > &results)
 
Key make_key (int32_t cell_size, float x, float y, float z)
 
Hash make_hash (int32_t cell_size, float x, float y, float z)
 
std::ostream & operator<< (std::ostream &os, const Key &key)
 
std::ostream & operator<< (std::ostream &os, const SpatialHash &hash)
 
std::ostream & operator<< (std::ostream &os, const Path &p)
 
Platformget_platform ()
 
_S_FORCE_INLINE bool bind_texture (const GLubyte which, const TexturePtr &tex, const Mat4 &mat)
 
void enable_vertex_attribute (uint8_t i)
 
void disable_vertex_attribute (uint8_t i)
 
template<typename EnabledMethod , typename OffsetMethod >
void send_attribute (int32_t loc, VertexAttributeType attr, const VertexSpecification &vertex_spec, EnabledMethod exists_on_data_predicate, OffsetMethod offset_func, uint32_t global_offset)
 
GLenum shader_type_to_glenum (ShaderType type)
 
Renderer::ptr new_renderer (Window *window, const std::string &name)
 
int event_filter (void *user_data, SDL_Event *event)
 
JoystickAxis SDL_axis_to_simulant_axis (Uint8 axis)
 
constexpr uint32_t audio_data_format_byte_size (AudioDataFormat format)
 
bool texture_format_contains_mipmaps (TextureFormat format)
 
std::size_t texture_format_channels (TextureFormat format)
 
std::size_t texture_format_stride (TextureFormat format)
 
constexpr uint16_t round_to_bytes (uint16_t stride, uint16_t bytes)
 
constexpr uint16_t vertex_attribute_size (VertexAttribute attr)
 
bool is_little_endian ()
 
uint16_t swap_endian (uint16_t v)
 
uint32_t swap_endian (uint32_t v)
 
uint64_t swap_endian (uint64_t v)
 
int16_t swap_endian (int16_t v)
 
int32_t swap_endian (int32_t v)
 
int64_t swap_endian (int64_t v)
 
template<typename T >
ensure_big (T v)
 
uint16_t ensure_big_endian (uint16_t v)
 
uint32_t ensure_big_endian (uint32_t v)
 
uint64_t ensure_big_endian (uint64_t v)
 
int16_t ensure_big_endian (int16_t v)
 
int32_t ensure_big_endian (int32_t v)
 
int64_t ensure_big_endian (int64_t v)
 
void check_and_log_error (const char *function_name)
 
template<typename Res = void, typename Func , typename... Args>
Res _GLCheck (const char *function_name, Func &&func, Args &&... args)
 
JSONIterator json_load (const Path &path)
 
JSONIterator json_parse (const std::string &data)
 
JSONIterator json_read (std::shared_ptr< std::istream > stream)
 
template<typename T >
optional< T > json_auto_cast (JSONIterator it)
 
template<>
optional< int > json_auto_cast< int > (JSONIterator it)
 
template<>
optional< long > json_auto_cast< long > (JSONIterator it)
 
template<>
optional< float > json_auto_cast< float > (JSONIterator it)
 
template<>
optional< bool > json_auto_cast< bool > (JSONIterator it)
 
template<>
optional< std::string > json_auto_cast< std::string > (JSONIterator it)
 
int fastfloor (double x)
 
double dot (int *g, double x, double y, double z, double w)
 
bool starts_with (const std::string &s, const std::string &what)
 
bool ends_with (const std::string &s, const std::string &what)
 
bool contains (const std::string &s, const std::string &what)
 
std::size_t count (const std::string &s, const std::string &what)
 
std::vector< std::string > split (const std::string &s, const std::string &delim, const int32_t count)
 
std::string strip (const std::string &s, const std::string &what)
 
std::string replace_all (const std::string &s, const std::string &search, const std::string &replace)
 
std::string lower_case (const std::string &s)
 
std::string upper_case (const std::string &s)
 
_S_FORCE_INLINE uint32_t pack_vertex_attribute_vec3_1i (float x, float y, float z)
 
_S_FORCE_INLINE Vec3 unpack_vertex_attribute_vec3_1i (uint32_t p)
 
VertexAttribute attribute_for_type (VertexAttributeType type, const VertexSpecification &spec)
 
void calculate_ratios_from_viewport (ViewportType type, float &x, float &y, float &width, float &height)
 

Variables

constexpr const MaterialPropertyNameHash DIFFUSE_PROPERTY_HASH = material_property_hash(DIFFUSE_PROPERTY_NAME)
 
constexpr const MaterialPropertyNameHash AMBIENT_PROPERTY_HASH = material_property_hash(AMBIENT_PROPERTY_NAME)
 
constexpr const MaterialPropertyNameHash SPECULAR_PROPERTY_HASH = material_property_hash(SPECULAR_PROPERTY_NAME)
 
constexpr const MaterialPropertyNameHash EMISSION_PROPERTY_HASH = material_property_hash(EMISSION_PROPERTY_NAME)
 
constexpr const MaterialPropertyNameHash SHININESS_PROPERTY_HASH = material_property_hash(SHININESS_PROPERTY_NAME)
 
constexpr const MaterialPropertyNameHash POINT_SIZE_PROPERTY_HASH = material_property_hash(POINT_SIZE_PROPERTY_NAME)
 
constexpr const MaterialPropertyNameHash DEPTH_WRITE_ENABLED_PROPERTY_HASH = material_property_hash(DEPTH_WRITE_ENABLED_PROPERTY_NAME)
 
constexpr const MaterialPropertyNameHash DEPTH_TEST_ENABLED_PROPERTY_HASH = material_property_hash(DEPTH_TEST_ENABLED_PROPERTY_NAME)
 
constexpr const MaterialPropertyNameHash LIGHTING_ENABLED_PROPERTY_HASH = material_property_hash(LIGHTING_ENABLED_PROPERTY_NAME)
 
constexpr const MaterialPropertyNameHash TEXTURES_ENABLED_PROPERTY_HASH = material_property_hash(TEXTURES_ENABLED_PROPERTY_NAME)
 
constexpr const MaterialPropertyNameHash DIFFUSE_MAP_PROPERTY_HASH = material_property_hash(DIFFUSE_MAP_PROPERTY_NAME)
 
constexpr const MaterialPropertyNameHash LIGHT_MAP_PROPERTY_HASH = material_property_hash(LIGHT_MAP_PROPERTY_NAME)
 
constexpr const MaterialPropertyNameHash NORMAL_MAP_PROPERTY_HASH = material_property_hash(NORMAL_MAP_PROPERTY_NAME)
 
constexpr const MaterialPropertyNameHash SPECULAR_MAP_PROPERTY_HASH = material_property_hash(SPECULAR_MAP_PROPERTY_NAME)
 
constexpr const MaterialPropertyNameHash DIFFUSE_MAP_MATRIX_PROPERTY_HASH = material_property_hash(DIFFUSE_MAP_MATRIX_PROPERTY_NAME)
 
constexpr const MaterialPropertyNameHash LIGHT_MAP_MATRIX_PROPERTY_HASH = material_property_hash(LIGHT_MAP_MATRIX_PROPERTY_NAME)
 
constexpr const MaterialPropertyNameHash NORMAL_MAP_MATRIX_PROPERTY_HASH = material_property_hash(NORMAL_MAP_MATRIX_PROPERTY_NAME)
 
constexpr const MaterialPropertyNameHash SPECULAR_MAP_MATRIX_PROPERTY_HASH = material_property_hash(SPECULAR_MAP_MATRIX_PROPERTY_NAME)
 
constexpr const MaterialPropertyNameHash BLEND_FUNC_PROPERTY_HASH = material_property_hash(BLEND_FUNC_PROPERTY_NAME)
 
constexpr const MaterialPropertyNameHash POLYGON_MODE_PROPERTY_HASH = material_property_hash(POLYGON_MODE_PROPERTY_NAME)
 
constexpr const MaterialPropertyNameHash SHADE_MODEL_PROPERTY_HASH = material_property_hash(SHADE_MODEL_PROPERTY_NAME)
 
constexpr const MaterialPropertyNameHash COLOUR_MATERIAL_PROPERTY_HASH = material_property_hash(COLOUR_MATERIAL_PROPERTY_NAME)
 
constexpr const MaterialPropertyNameHash CULL_MODE_PROPERTY_HASH = material_property_hash(CULL_MODE_PROPERTY_NAME)
 
constexpr const MaterialPropertyNameHash DEPTH_FUNC_PROPERTY_HASH = material_property_hash(DEPTH_FUNC_PROPERTY_NAME)
 
constexpr const MaterialPropertyNameHash FOG_MODE_PROPERTY_HASH = material_property_hash(FOG_MODE_PROPERTY_NAME)
 
constexpr const MaterialPropertyNameHash FOG_DENSITY_PROPERTY_HASH = material_property_hash(FOG_DENSITY_PROPERTY_NAME)
 
constexpr const MaterialPropertyNameHash FOG_START_PROPERTY_HASH = material_property_hash(FOG_START_PROPERTY_NAME)
 
constexpr const MaterialPropertyNameHash FOG_END_PROPERTY_HASH = material_property_hash(FOG_END_PROPERTY_NAME)
 
constexpr const MaterialPropertyNameHash FOG_COLOUR_PROPERTY_HASH = material_property_hash(FOG_COLOUR_PROPERTY_NAME)
 
constexpr autodecltype(::smlt::forward< T >(value)) constexpr auto type_at_t< N, T, Ts... > { return value_at<N - 1, Ts...>(::smlt::forward<Ts>(values)...)
 
const bool DONT_REFCOUNT = false
 
const bool DO_REFCOUNT = true
 
constexpr std::size_t variant_npos = static_cast<std::size_t>(-1)
 
KeyboardMap UK []
 
const float PI = std::acos(-1.0f)
 
const float TWO_PI = PI * 2.0f
 
const float PI_OVER_180 = PI / 180.0f
 
const float PI_UNDER_180 = 180.0f / PI
 
const float EPSILON = std::numeric_limits<float>::epsilon()
 
const uint32_t MAX_GRID_LEVELS = 16
 
const uint64_t MEMORY_VALUE_UNAVAILABLE = (uint64_t) -1
 
const std::string default_vertex_shader
 
const std::string default_fragment_shader
 
const uint32_t VBO_SIZE = 1024 * 512
 
const int VBO_SLOT_SIZE_COUNT = 11
 
constexpr const char *const LIGHT_POSITION_PROPERTY = "s_light_position"
 
constexpr const char *const LIGHT_AMBIENT_PROPERTY = "s_light_ambient"
 
constexpr const char *const LIGHT_DIFFUSE_PROPERTY = "s_light_diffuse"
 
constexpr const char *const LIGHT_SPECULAR_PROPERTY = "s_light_specular"
 
constexpr const char *const LIGHT_CONSTANT_ATTENUATION_PROPERTY = "s_light_constant_attenuation"
 
constexpr const char *const LIGHT_LINEAR_ATTENUATION_PROPERTY = "s_light_linear_attenuation"
 
constexpr const char *const LIGHT_QUADRATIC_ATTENUATION_PROPERTY = "s_light_quadratic_attenuation"
 
constexpr const char *const VIEW_MATRIX_PROPERTY = "s_view"
 
constexpr const char *const MODELVIEW_PROJECTION_MATRIX_PROPERTY = "s_modelview_projection"
 
constexpr const char *const PROJECTION_MATRIX_PROPERTY = "s_projection"
 
constexpr const char *const MODELVIEW_MATRIX_PROPERTY = "s_modelview"
 
constexpr const char *const INVERSE_TRANSPOSE_MODELVIEW_MATRIX_PROPERTY = "s_inverse_transpose_modelview"
 
const Colour DEFAULT_LIGHT_COLOUR = Colour(1.0, 1.0, 251.0 / 255.0, 1.0)
 
auto calculate_component
 
const std::vector< RenderPriority > RENDER_PRIORITIES
 
const RenderPriority RENDER_PRIORITY_MIN = -250
 
const RenderPriority RENDER_PRIORITY_ABSOLUTE_BACKGROUND = -250
 
const RenderPriority RENDER_PRIORITY_BACKGROUND = -100
 
const RenderPriority RENDER_PRIORITY_DISTANT = -50
 
const RenderPriority RENDER_PRIORITY_MAIN = 0
 
const RenderPriority RENDER_PRIORITY_NEAR = 50
 
const RenderPriority RENDER_PRIORITY_FOREGROUND = 100
 
const RenderPriority RENDER_PRIORITY_ABSOLUTE_FOREGROUND = 250
 
const RenderPriority RENDER_PRIORITY_MAX = RENDER_PRIORITY_ABSOLUTE_FOREGROUND + 1
 
std::shared_ptr< GLThreadCheckGL_thread
 
const std::string WHITESPACE = "\t\n\r "
 

Detailed Description

FIXME

Allows you to register different scenes of gameplay, and easily switch between them.

manager->register_scene<LoadingScene>("loading"); manager->register_scene<MenuScene>("menu"); manager->register_scene<GameScene>("ingame");

manager->activate("loading"); manager->load_in_background("menu"); if(manager->is_loaded("menu")) { manager->activate("menu"); } manager->unload("loading"); manager->activate("loading"); // Will cause loading to happen again

Function Documentation

◆ clamp()

float smlt::clamp ( const float  x,
const float  l,
const float  h 
)
inline

Clamps x between l and h

◆ lerp()

float smlt::lerp ( const float  x,
const float  y,
const float  t 
)
inline

Linear interpolation from x to y with factor t, where t can be any value between 0 and 1

◆ STRONG_TYPEDEF() [1/2]

smlt::STRONG_TYPEDEF ( GameControllerID  ,
int8_t   
)

GameControllerID represents the unique id of a detected controller it is not a zero-based index into the detected controller list

◆ STRONG_TYPEDEF() [2/2]

smlt::STRONG_TYPEDEF ( GameControllerIndex  ,
int8_t   
)

GameControllerIndex is an index into the detected controller list, if a controller is unplugged, the IDs of all other controllers may change

◆ texture_format_contains_mipmaps()

bool smlt::texture_format_contains_mipmaps ( TextureFormat  format)

Returns true if the data in this format contains mipmap data following the main texture data

Variable Documentation

◆ calculate_component

auto smlt::calculate_component
Initial value:
= [](const TextureChannelSet& channels, uint8_t i, float sr, float sg, float sb, float sa) -> float {
switch(channels[i]) {
case TEXTURE_CHANNEL_ZERO: return 0.0f;
case TEXTURE_CHANNEL_ONE: return 1.0f;
case TEXTURE_CHANNEL_RED: return sr;
case TEXTURE_CHANNEL_GREEN: return sg;
case TEXTURE_CHANNEL_BLUE: return sb;
case TEXTURE_CHANNEL_ALPHA: return sa;
case TEXTURE_CHANNEL_INVERSE_RED: return 1.0f - sr;
}
return 0.0f;
}

◆ default_fragment_shader

const std::string smlt::default_fragment_shader
Initial value:
= R"(
#version 120
void main(void) {
gl_FragColor = vec4(0.4,0.4,0.8,1.0);
}
)"

◆ default_vertex_shader

const std::string smlt::default_vertex_shader
Initial value:
= R"(
#version 120
void main(void) {
gl_Position = ftransform();
}
)"

◆ RENDER_PRIORITIES

const std::vector< RenderPriority > smlt::RENDER_PRIORITIES
Initial value:
= {
RENDER_PRIORITY_ABSOLUTE_BACKGROUND,
RENDER_PRIORITY_BACKGROUND,
RENDER_PRIORITY_DISTANT,
RENDER_PRIORITY_MAIN,
RENDER_PRIORITY_NEAR,
RENDER_PRIORITY_FOREGROUND,
RENDER_PRIORITY_ABSOLUTE_FOREGROUND
}