mirror of
https://github.com/SpartanJ/eepp.git
synced 2026-08-13 04:42:12 +03:00
Preparing SDL encapsulation.
Modified some things on the GL3 renderer.
This commit is contained in:
13
src/ee.h
13
src/ee.h
@@ -11,14 +11,23 @@
|
||||
Thanks to: \n
|
||||
* Sean Barrett for the stb_vorbis and stb_image libraries. \n
|
||||
* Sam Latinga for Simple DirectMedia Layer library. \n
|
||||
* Lucian Wischik for ziputils library. \n
|
||||
* Jonathan Dummer for the Simple OpenGL Image Library. \n
|
||||
* Laurent Gomila for the SFML library ( eepp audio module is based on the SFML audio module ) \n
|
||||
* OGRE staff for the Timer implementation \n
|
||||
* Amir 'Genjix' Taaki for the information of SDL_Collide.h. \n
|
||||
* Lewis Van Winkle for PlusCallback \n
|
||||
* Dieter Baron and Thomas Klausner for libzip \n
|
||||
* Jean-loup Gailly and Mark Adler for zlib \n
|
||||
* Milan Ikits and Marcelo Magallon for GLEW \n
|
||||
* And a lot more people!
|
||||
**/
|
||||
|
||||
/**
|
||||
@TODO Add some Surface Grid class, to create special effects ( waved texture, and stuff like that ).
|
||||
@TODO Add Scripting support ( lua or squirrel ).
|
||||
@TODO Encapsulate SDL and OpenGL ( and remove unnecessary dependencies ).
|
||||
@TODO Support color cursors ( not only black and white cursors, that really sucks ) - Imposible with SDL 1.2
|
||||
*/
|
||||
|
||||
// General includes and declarations
|
||||
#include "base.hpp"
|
||||
using namespace EE;
|
||||
|
||||
@@ -98,12 +98,6 @@ void cBatchRenderer::Flush() {
|
||||
|
||||
bool CreateMatrix = ( mRotation || mScale != 1.0f || mPosition.x || mPosition.y );
|
||||
|
||||
if ( NULL != mTexture ) {
|
||||
cTextureFactory::instance()->Bind( mTexture );
|
||||
} else {
|
||||
GLi->Disable( GL_TEXTURE_2D );
|
||||
}
|
||||
|
||||
cTextureFactory::instance()->SetPreBlendFunc( mBlend );
|
||||
|
||||
if ( mCurrentMode == DM_POINTS && NULL != mTexture ) {
|
||||
@@ -115,9 +109,7 @@ void cBatchRenderer::Flush() {
|
||||
GLi->LoadIdentity();
|
||||
GLi->PushMatrix();
|
||||
|
||||
GLi->Translatef( mPosition.x, mPosition.y, 0.0f);
|
||||
|
||||
GLi->Translatef( mCenter.x, mCenter.y, 0.0f);
|
||||
GLi->Translatef( mPosition.x + mCenter.x, mPosition.y + mCenter.y, 0.0f);
|
||||
GLi->Rotatef( mRotation, 0.0f, 0.0f, 1.0f );
|
||||
GLi->Scalef( mScale, mScale, 1.0f );
|
||||
GLi->Translatef( -mCenter.x, -mCenter.y, 0.0f);
|
||||
@@ -128,16 +120,19 @@ void cBatchRenderer::Flush() {
|
||||
GLi->VertexPointer ( 2, GL_FLOAT , sizeof(eeVertex), reinterpret_cast<char*> ( &mVertex[0] ) , alloc );
|
||||
GLi->ColorPointer ( 4, GL_UNSIGNED_BYTE , sizeof(eeVertex), reinterpret_cast<char*> ( &mVertex[0] ) + sizeof(eeVector2f) + sizeof(eeTexCoord) , alloc );
|
||||
|
||||
if ( GLv_3 == GLi->Version() ) {
|
||||
if ( NULL != mTexture )
|
||||
GLi->TexCoordPointer( 2, GL_FLOAT , sizeof(eeVertex), reinterpret_cast<char*> ( &mVertex[0] ) + sizeof(eeVector2f) , alloc );
|
||||
if ( NULL != mTexture ) {
|
||||
cTextureFactory::instance()->Bind( mTexture );
|
||||
GLi->TexCoordPointer( 2, GL_FLOAT , sizeof(eeVertex), reinterpret_cast<char*> ( &mVertex[0] ) + sizeof(eeVector2f) , alloc );
|
||||
} else {
|
||||
GLi->TexCoordPointer( 2, GL_FLOAT , sizeof(eeVertex), reinterpret_cast<char*> ( &mVertex[0] ) + sizeof(eeVector2f) , alloc );
|
||||
GLi->Disable( GL_TEXTURE_2D );
|
||||
GLi->DisableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
}
|
||||
|
||||
#ifdef EE_GLES
|
||||
if ( DM_QUADS == mCurrentMode ) {
|
||||
GLi->DrawArrays( DM_TRIANGLES, 0, NumVertex );
|
||||
} else if ( DM_POLYGON == mCurrentMode ) {
|
||||
GLi->DrawArrays( DM_TRIANGLE_FAN, 0, NumVertex );
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
@@ -154,6 +149,7 @@ void cBatchRenderer::Flush() {
|
||||
|
||||
if ( mTexture == 0 ) {
|
||||
GLi->Enable( GL_TEXTURE_2D );
|
||||
GLi->EnableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -304,81 +304,79 @@ void cConsole::PrintCommandsStartingWith( const std::wstring& start ) {
|
||||
}
|
||||
}
|
||||
|
||||
void cConsole::PrivInputCallback( EE_Event* Event ) {
|
||||
switch( Event->type ) {
|
||||
case SDL_KEYUP:
|
||||
if ( mVisible ) {
|
||||
if ( ( Event->key.keysym.sym == SDLK_TAB ) && (eeUint)mTBuf.CurPos() == mTBuf.Buffer().size() ) {
|
||||
PrintCommandsStartingWith( mTBuf.Buffer() );
|
||||
}
|
||||
void cConsole::PrivInputCallback( EE_Event * Event ) {
|
||||
Uint8 etype = Event->type;
|
||||
|
||||
if ( mVisible ) {
|
||||
Uint32 KeyCode = (Uint32)Event->key.keysym.sym;
|
||||
Uint32 Button = Event->button.button;
|
||||
|
||||
if ( SDL_KEYDOWN == etype ) {
|
||||
if ( ( KeyCode == KEY_TAB ) && (eeUint)mTBuf.CurPos() == mTBuf.Buffer().size() ) {
|
||||
PrintCommandsStartingWith( mTBuf.Buffer() );
|
||||
}
|
||||
case SDL_KEYDOWN:
|
||||
if ( mVisible ) {
|
||||
if ( mLastCommands.size() > 0 ) {
|
||||
if ( Event->key.keysym.sym == SDLK_UP && mLastLogPos > 0 )
|
||||
mLastLogPos--;
|
||||
|
||||
if ( Event->key.keysym.sym == SDLK_DOWN && mLastLogPos < static_cast<eeInt>( mLastCommands.size() ) )
|
||||
mLastLogPos++;
|
||||
if ( mLastCommands.size() > 0 ) {
|
||||
if ( KeyCode == KEY_UP && mLastLogPos > 0 ) {
|
||||
mLastLogPos--;
|
||||
}
|
||||
|
||||
if ( Event->key.keysym.sym == SDLK_UP || Event->key.keysym.sym == SDLK_DOWN ) {
|
||||
if ( mLastLogPos == static_cast<eeInt>( mLastCommands.size() ) ) {
|
||||
mTBuf.Buffer( L"" );
|
||||
} else {
|
||||
mTBuf.Buffer( mLastCommands[mLastLogPos] );
|
||||
}
|
||||
if ( KeyCode == KEY_DOWN && mLastLogPos < static_cast<eeInt>( mLastCommands.size() ) ) {
|
||||
mLastLogPos++;
|
||||
}
|
||||
|
||||
if ( KeyCode == KEY_UP || KeyCode == KEY_DOWN ) {
|
||||
if ( mLastLogPos == static_cast<eeInt>( mLastCommands.size() ) ) {
|
||||
mTBuf.Buffer( L"" );
|
||||
} else {
|
||||
mTBuf.Buffer( mLastCommands[mLastLogPos] );
|
||||
}
|
||||
}
|
||||
|
||||
if ( Event->key.keysym.sym == SDLK_PAGEUP ) {
|
||||
if ( mCon.ConMin - mCon.ConModif > 0 )
|
||||
mCon.ConModif++;
|
||||
}
|
||||
|
||||
if ( Event->key.keysym.sym == SDLK_PAGEDOWN ) {
|
||||
if ( mCon.ConModif > 0 )
|
||||
mCon.ConModif--;
|
||||
}
|
||||
|
||||
if ( Event->key.keysym.sym == SDLK_HOME ) {
|
||||
Int16 LinesInScreen = static_cast<Int16> ( (mCurHeight / mFontSize) - 1 );
|
||||
if ( static_cast<Int16>( mCmdLog.size() ) > LinesInScreen )
|
||||
mCon.ConModif = mCon.ConMin;
|
||||
}
|
||||
|
||||
if ( Event->key.keysym.sym == SDLK_END ) {
|
||||
mCon.ConModif = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SDL_VIDEOEXPOSE:
|
||||
case SDL_VIDEORESIZE: // Fix the size of the console if the resolution change
|
||||
mWidth = (eeFloat) cEngine::instance()->GetWidth();
|
||||
mHeight = (eeFloat) cEngine::instance()->GetHeight();
|
||||
mHeightMin = (eeFloat) cEngine::instance()->GetHeight() * 0.4f;
|
||||
|
||||
if (mVisible) {
|
||||
if ( mExpand )
|
||||
mCurHeight = mHeight;
|
||||
else
|
||||
mCurHeight = mHeightMin;
|
||||
|
||||
mY = mCurHeight;
|
||||
if ( KeyCode == KEY_PAGEUP ) {
|
||||
if ( mCon.ConMin - mCon.ConModif > 0 )
|
||||
mCon.ConModif++;
|
||||
}
|
||||
break;
|
||||
case SDL_MOUSEBUTTONDOWN:
|
||||
if ( mVisible ) {
|
||||
if ( Event->button.button == SDL_BUTTON_WHEELUP ) {
|
||||
if ( mCon.ConMin - mCon.ConModif > 0 )
|
||||
mCon.ConModif++;
|
||||
}
|
||||
|
||||
if ( Event->button.button == SDL_BUTTON_WHEELDOWN ) {
|
||||
if ( mCon.ConModif > 0 )
|
||||
mCon.ConModif--;
|
||||
}
|
||||
if ( KeyCode == KEY_PAGEDOWN ) {
|
||||
if ( mCon.ConModif > 0 )
|
||||
mCon.ConModif--;
|
||||
}
|
||||
break;
|
||||
|
||||
if ( KeyCode == KEY_HOME ) {
|
||||
Int16 LinesInScreen = static_cast<Int16> ( (mCurHeight / mFontSize) - 1 );
|
||||
if ( static_cast<Int16>( mCmdLog.size() ) > LinesInScreen )
|
||||
mCon.ConModif = mCon.ConMin;
|
||||
}
|
||||
|
||||
if ( KeyCode == KEY_END ) {
|
||||
mCon.ConModif = 0;
|
||||
}
|
||||
} else if ( SDL_MOUSEBUTTONDOWN == etype ) {
|
||||
if ( Button == EE_BUTTON_WHEELUP ) {
|
||||
if ( mCon.ConMin - mCon.ConModif > 0 )
|
||||
mCon.ConModif++;
|
||||
}
|
||||
|
||||
if ( Button == EE_BUTTON_WHEELDOWN ) {
|
||||
if ( mCon.ConModif > 0 )
|
||||
mCon.ConModif--;
|
||||
}
|
||||
}
|
||||
} else if ( SDL_VIDEOEXPOSE == etype || SDL_VIDEORESIZE == etype ) {
|
||||
mWidth = (eeFloat) cEngine::instance()->GetWidth();
|
||||
mHeight = (eeFloat) cEngine::instance()->GetHeight();
|
||||
mHeightMin = (eeFloat) cEngine::instance()->GetHeight() * 0.4f;
|
||||
|
||||
if ( mVisible ) {
|
||||
if ( mExpand )
|
||||
mCurHeight = mHeight;
|
||||
else
|
||||
mCurHeight = mHeightMin;
|
||||
|
||||
mY = mCurHeight;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -161,9 +161,7 @@ void cFont::Draw( cTextCache& TextCache, const eeFloat& X, const eeFloat& Y, con
|
||||
GLi->Translatef( Center.x , Center.y, 0.f );
|
||||
GLi->Rotatef( Angle, 0.0f, 0.0f, 1.0f );
|
||||
GLi->Scalef( Scale, Scale, 1.0f );
|
||||
GLi->Translatef( -Center.x, -Center.y, 0.f );
|
||||
|
||||
GLi->Translatef( X, Y, 0.f );
|
||||
GLi->Translatef( -Center.x + X, -Center.y + Y, 0.f );
|
||||
}
|
||||
|
||||
std::vector<eeVertexCoords>& RenderCoords = TextCache.VertextCoords();
|
||||
|
||||
@@ -263,10 +263,6 @@ void cParticleSystem::Draw() {
|
||||
TF->SetPreBlendFunc( ALPHA_BLENDONE );
|
||||
|
||||
if ( mPointsSup ) {
|
||||
if ( GLi->Version() == GLv_3 ) {
|
||||
GLi->Enable( GL_VERTEX_PROGRAM_POINT_SIZE );
|
||||
}
|
||||
|
||||
GLi->Enable( GL_POINT_SPRITE );
|
||||
GLi->PointSize( mSize );
|
||||
|
||||
@@ -278,10 +274,6 @@ void cParticleSystem::Draw() {
|
||||
GLi->DrawArrays( GL_POINTS, 0, (GLsizei)mPCount );
|
||||
|
||||
GLi->Disable( GL_POINT_SPRITE );
|
||||
|
||||
if ( GLi->Version() == GLv_3 ) {
|
||||
GLi->Disable( GL_VERTEX_PROGRAM_POINT_SIZE );
|
||||
}
|
||||
} else {
|
||||
cTexture * Tex = TF->GetTexture( mTexId );
|
||||
|
||||
|
||||
@@ -35,12 +35,6 @@ cVertexBuffer::cVertexBuffer( const Uint32& VertexFlags, EE_DRAW_MODE DrawType,
|
||||
}
|
||||
|
||||
cVertexBuffer::~cVertexBuffer() {
|
||||
for( Int32 i = 0; i < VERTEX_FLAGS_COUNT_ARR; i++ )
|
||||
mVertexArray[ i ].clear();
|
||||
|
||||
mColorArray.clear();
|
||||
mIndexArray.clear();
|
||||
|
||||
cVertexBufferManager::instance()->Remove( this );
|
||||
}
|
||||
|
||||
@@ -141,22 +135,4 @@ const Int32& cVertexBuffer::GetElementNum() const {
|
||||
return mElemDraw;
|
||||
}
|
||||
|
||||
void cVertexBuffer::Unbind() {
|
||||
if( !VERTEX_FLAG_QUERY( mVertexFlags, VERTEX_FLAG_POSITION ) ) {
|
||||
if ( GLv_3 == GLi->Version() ) {
|
||||
GLi->EnableClientState( GL_VERTEX_ARRAY );
|
||||
}
|
||||
}
|
||||
|
||||
if( !VERTEX_FLAG_QUERY( mVertexFlags, VERTEX_FLAG_COLOR ) ) {
|
||||
if ( GLv_3 == GLi->Version() ) {
|
||||
GLi->EnableClientState( GL_COLOR_ARRAY );
|
||||
}
|
||||
}
|
||||
|
||||
if( !VERTEX_FLAG_QUERY( mVertexFlags, VERTEX_FLAG_TEXTURE0 ) ) {
|
||||
GLi->Enable( GL_TEXTURE_2D );
|
||||
}
|
||||
}
|
||||
|
||||
}}
|
||||
|
||||
@@ -50,7 +50,7 @@ class cVertexBuffer {
|
||||
|
||||
virtual void Bind() = 0;
|
||||
|
||||
virtual void Unbind();
|
||||
virtual void Unbind() = 0;
|
||||
|
||||
virtual void Draw() = 0;
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ void cVertexBufferOGL::SetVertexStates() {
|
||||
GLi->EnableClientState( GL_VERTEX_ARRAY );
|
||||
GLi->VertexPointer( eeVertexElements[ VERTEX_FLAG_POSITION ], GL_FLOAT, sizeof(float) * eeVertexElements[ VERTEX_FLAG_POSITION ], &mVertexArray[ VERTEX_FLAG_POSITION ][0], alloc );
|
||||
} else {
|
||||
//GLi->DisableClientState( GL_VERTEX_ARRAY );
|
||||
GLi->DisableClientState( GL_VERTEX_ARRAY );
|
||||
}
|
||||
|
||||
/// COLOR
|
||||
@@ -49,7 +49,7 @@ void cVertexBufferOGL::SetVertexStates() {
|
||||
GLi->EnableClientState( GL_COLOR_ARRAY );
|
||||
GLi->ColorPointer( eeVertexElements[ VERTEX_FLAG_COLOR ], GL_UNSIGNED_BYTE, sizeof(Uint8) * eeVertexElements[ VERTEX_FLAG_COLOR ], &mColorArray[0], allocC );
|
||||
} else {
|
||||
//GLi->DisableClientState( GL_COLOR_ARRAY );
|
||||
GLi->DisableClientState( GL_COLOR_ARRAY );
|
||||
}
|
||||
|
||||
/// TEXTURES
|
||||
@@ -61,8 +61,8 @@ void cVertexBufferOGL::SetVertexStates() {
|
||||
|
||||
GLi->TexCoordPointer( eeVertexElements[ VERTEX_FLAG_TEXTURE0 + i ], GL_FLOAT, sizeof(float) * eeVertexElements[ VERTEX_FLAG_TEXTURE0 + i ], &mVertexArray[ VERTEX_FLAG_TEXTURE0 + i ][0], alloc );
|
||||
} else {
|
||||
//GLi->DisableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
GLi->Disable( GL_TEXTURE_2D );
|
||||
GLi->DisableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -70,8 +70,8 @@ void cVertexBufferOGL::SetVertexStates() {
|
||||
GLi->EnableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
GLi->TexCoordPointer( eeVertexElements[ VERTEX_FLAG_TEXTURE0 ], GL_FLOAT, sizeof(float) * eeVertexElements[ VERTEX_FLAG_TEXTURE0 ], &mVertexArray[ VERTEX_FLAG_TEXTURE0 ][0], alloc );
|
||||
} else {
|
||||
//GLi->DisableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
GLi->Disable( GL_TEXTURE_2D );
|
||||
GLi->DisableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,6 +79,22 @@ void cVertexBufferOGL::SetVertexStates() {
|
||||
GLi->ClientActiveTexture( GL_TEXTURE0 );
|
||||
}
|
||||
|
||||
|
||||
void cVertexBufferOGL::Unbind() {
|
||||
if( !VERTEX_FLAG_QUERY( mVertexFlags, VERTEX_FLAG_POSITION ) ) {
|
||||
GLi->EnableClientState( GL_VERTEX_ARRAY );
|
||||
}
|
||||
|
||||
if( !VERTEX_FLAG_QUERY( mVertexFlags, VERTEX_FLAG_COLOR ) ) {
|
||||
GLi->EnableClientState( GL_COLOR_ARRAY );
|
||||
}
|
||||
|
||||
if( !VERTEX_FLAG_QUERY( mVertexFlags, VERTEX_FLAG_TEXTURE0 ) ) {
|
||||
GLi->Enable( GL_TEXTURE_2D );
|
||||
GLi->EnableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
}
|
||||
}
|
||||
|
||||
void cVertexBufferOGL::Update( const Uint32& Types, bool Indices ) {
|
||||
}
|
||||
|
||||
|
||||
@@ -20,6 +20,8 @@ class cVertexBufferOGL : public cVertexBuffer {
|
||||
void Update( const Uint32& Types, bool Indices );
|
||||
|
||||
void Reload();
|
||||
|
||||
void Unbind();
|
||||
protected:
|
||||
void SetVertexStates();
|
||||
|
||||
|
||||
@@ -100,13 +100,13 @@ void cVertexBufferVBO::Draw() {
|
||||
return;
|
||||
|
||||
if ( GLv_3 == GLi->Version() ) {
|
||||
if ( !mTextured ) {
|
||||
GLi->Disable( GL_TEXTURE_2D );
|
||||
}
|
||||
|
||||
#ifndef EE_GLES2
|
||||
glBindVertexArray( mVAO );
|
||||
#endif
|
||||
|
||||
if ( !mTextured ) {
|
||||
GLi->Disable( GL_TEXTURE_2D );
|
||||
}
|
||||
}
|
||||
|
||||
if( VERTEX_FLAG_QUERY( mVertexFlags, VERTEX_FLAG_USE_INDICES ) ) {
|
||||
@@ -159,9 +159,7 @@ void cVertexBufferVBO::SetVertexStates() {
|
||||
GLi->VertexPointer( eeVertexElements[ VERTEX_FLAG_POSITION ], GL_FLOAT, 0, (char*)NULL, 0 );
|
||||
}
|
||||
} else {
|
||||
if ( GLv_3 == GLi->Version() ) {
|
||||
GLi->DisableClientState( GL_VERTEX_ARRAY );
|
||||
}
|
||||
GLi->DisableClientState( GL_VERTEX_ARRAY );
|
||||
}
|
||||
|
||||
/// COLOR
|
||||
@@ -178,20 +176,16 @@ void cVertexBufferVBO::SetVertexStates() {
|
||||
GLi->ColorPointer( eeVertexElements[ VERTEX_FLAG_COLOR ], GL_UNSIGNED_BYTE, 0, (char*)NULL, 0 );
|
||||
}
|
||||
} else {
|
||||
if ( GLv_3 == GLi->Version() ) {
|
||||
GLi->DisableClientState( GL_COLOR_ARRAY );
|
||||
}
|
||||
GLi->DisableClientState( GL_COLOR_ARRAY );
|
||||
}
|
||||
|
||||
/// TEXTURES
|
||||
if ( GLi->IsExtension( EEGL_ARB_multitexture ) ) {
|
||||
for ( Int32 i = 0; i < 5; i++ ) {
|
||||
if( VERTEX_FLAG_QUERY( mVertexFlags, VERTEX_FLAG_TEXTURE0 + i ) ) {
|
||||
if ( GLv_3 != GLi->Version() ) {
|
||||
GLi->ClientActiveTexture( GL_TEXTURE0 + i );
|
||||
}
|
||||
|
||||
GLi->ClientActiveTexture( GL_TEXTURE0 + i );
|
||||
GLi->EnableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
|
||||
glBindBuffer( GL_ARRAY_BUFFER, mArrayHandle[ VERTEX_FLAG_TEXTURE0 + i ] );
|
||||
|
||||
if ( GLv_3 == GLi->Version() ) { /** FIXME: Support for multitexturing */
|
||||
@@ -205,6 +199,7 @@ void cVertexBufferVBO::SetVertexStates() {
|
||||
|
||||
mTextured = true;
|
||||
} else {
|
||||
GLi->DisableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
GLi->Disable( GL_TEXTURE_2D );
|
||||
|
||||
mTextured = false;
|
||||
@@ -229,16 +224,14 @@ void cVertexBufferVBO::SetVertexStates() {
|
||||
mTextured = true;
|
||||
} else {
|
||||
GLi->Disable( GL_TEXTURE_2D );
|
||||
GLi->DisableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
|
||||
mTextured = false;
|
||||
}
|
||||
}
|
||||
|
||||
GLi->ActiveTexture( GL_TEXTURE0 );
|
||||
|
||||
if ( GLv_3 != GLi->Version() ) {
|
||||
GLi->ClientActiveTexture( GL_TEXTURE0 );
|
||||
}
|
||||
GLi->ClientActiveTexture( GL_TEXTURE0 );
|
||||
|
||||
glBindBuffer( GL_ARRAY_BUFFER, 0 );
|
||||
|
||||
@@ -283,4 +276,25 @@ void cVertexBufferVBO::Reload() {
|
||||
Compile();
|
||||
}
|
||||
|
||||
|
||||
void cVertexBufferVBO::Unbind() {
|
||||
if ( GLv_3 == GLi->Version() ) {
|
||||
GLi->GetRendererGL3()->BindGlobalVAO();
|
||||
} else {
|
||||
if( !VERTEX_FLAG_QUERY( mVertexFlags, VERTEX_FLAG_POSITION ) ) {
|
||||
GLi->EnableClientState( GL_VERTEX_ARRAY );
|
||||
}
|
||||
|
||||
if( !VERTEX_FLAG_QUERY( mVertexFlags, VERTEX_FLAG_COLOR ) ) {
|
||||
GLi->EnableClientState( GL_COLOR_ARRAY );
|
||||
}
|
||||
|
||||
if( !VERTEX_FLAG_QUERY( mVertexFlags, VERTEX_FLAG_TEXTURE0 ) ) {
|
||||
GLi->Enable( GL_TEXTURE_2D );
|
||||
GLi->EnableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}}
|
||||
|
||||
@@ -20,6 +20,8 @@ class cVertexBufferVBO : public cVertexBuffer {
|
||||
void Update( const Uint32& Types, bool Indices );
|
||||
|
||||
void Reload();
|
||||
|
||||
void Unbind();
|
||||
protected:
|
||||
void SetVertexStates();
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ const char * EEGL_STATES_NAME[] = {
|
||||
"dgl_Normal",
|
||||
"dgl_Color",
|
||||
"dgl_Index",
|
||||
"dgl_TexCoord",
|
||||
"dgl_MultiTexCoord0",
|
||||
"dgl_EdgeFlag"
|
||||
};
|
||||
|
||||
@@ -33,28 +33,27 @@ const char * EEGL_PLANES_NAME[] = {
|
||||
|
||||
const GLchar * EEGL_SHADER_BASE_VS[] = {
|
||||
"#version 150\n",
|
||||
"#extension GL_ARB_explicit_attrib_location : enable\n",
|
||||
"#define MAX_CLIP_PLANES 6\n",
|
||||
"uniform mat4 dgl_ProjectionMatrix;\n", // replaces deprecated gl_ProjectionMatrix
|
||||
"uniform mat4 dgl_ModelViewMatrix;\n", // replaces deprecated gl_ModelViewMatrix
|
||||
"uniform int dgl_ClippingEnabled = 0;\n",
|
||||
"uniform int dgl_ClipEnabled[ MAX_CLIP_PLANES ] = { 0, 0, 0, 0, 0, 0 };\n",
|
||||
"uniform vec4 dgl_ClipPlane[ MAX_CLIP_PLANES ];\n",
|
||||
"uniform mat4 dgl_ProjectionMatrix;\n", // replaces deprecated gl_ProjectionMatrix
|
||||
"uniform mat4 dgl_ModelViewMatrix;\n", // replaces deprecated gl_ModelViewMatrix
|
||||
"uniform int dgl_ClippingEnabled = 0;\n",
|
||||
"uniform int dgl_ClipEnabled[ MAX_CLIP_PLANES ] = { 0, 0, 0, 0, 0, 0 };\n",
|
||||
"uniform vec4 dgl_ClipPlane[ MAX_CLIP_PLANES ];\n",
|
||||
#ifdef EE_GLES2
|
||||
"uniform float dgl_PointSize = 1;\n",
|
||||
"uniform float dgl_PointSize = 1;\n",
|
||||
#endif
|
||||
"layout(location = 0) in vec4 dgl_Vertex;\n", // replaces deprecated gl_Vertex
|
||||
"layout(location = 2) in vec4 dgl_Color;\n", // replaces deprecated gl_Color
|
||||
"layout(location = 4) in vec2 dgl_TexCoord;\n", // replaces deprecated gl_TexCoord
|
||||
"invariant out vec4 Color;\n", // to fragment shader
|
||||
"invariant out vec2 TexCoord;\n", // to fragment shader
|
||||
"in vec4 dgl_Vertex;\n", // replaces deprecated gl_Vertex
|
||||
"in vec4 dgl_Color;\n", // replaces deprecated gl_Color
|
||||
"in vec4 dgl_MultiTexCoord0;\n", // replaces deprecated gl_MultiTexCoord0
|
||||
"invariant out vec4 dgl_VertexColor;\n", // to fragment shader
|
||||
"invariant out vec4 dgl_TexCoord0;\n", // to fragment shader
|
||||
"void main(void)\n",
|
||||
"{\n",
|
||||
#ifdef EE_GLES2
|
||||
" gl_PointSize = dgl_PointSize;\n",
|
||||
#endif
|
||||
" Color = dgl_Color;\n",
|
||||
" TexCoord = dgl_TexCoord;\n",
|
||||
" dgl_VertexColor = dgl_Color;\n",
|
||||
" dgl_TexCoord0 = dgl_MultiTexCoord0;\n",
|
||||
" vec4 vEye = dgl_ModelViewMatrix * dgl_Vertex;\n",
|
||||
" gl_Position = dgl_ProjectionMatrix * vEye;\n",
|
||||
" if ( 1 == dgl_ClippingEnabled ) {\n",
|
||||
@@ -71,18 +70,18 @@ const GLchar * EEGL_SHADER_BASE_FS[] = {
|
||||
"uniform sampler2D textureUnit0;\n",
|
||||
"uniform int dgl_TexActive = 1;\n",
|
||||
"uniform int dgl_PointSpriteActive = 0;\n",
|
||||
"invariant in vec4 Color;\n",
|
||||
"invariant in vec2 TexCoord;\n",
|
||||
"out vec4 dgl_FragColor;\n",
|
||||
"invariant in vec4 dgl_VertexColor;\n",
|
||||
"invariant in vec4 dgl_TexCoord0;\n",
|
||||
"smooth out vec4 dgl_FragColor;\n",
|
||||
"void main(void)\n",
|
||||
"{\n",
|
||||
" if ( 0 == dgl_PointSpriteActive ) {\n",
|
||||
" if ( 1 == dgl_TexActive )\n",
|
||||
" dgl_FragColor = Color * texture2D( textureUnit0, TexCoord );\n",
|
||||
" dgl_FragColor = dgl_VertexColor * texture2D( textureUnit0, dgl_TexCoord0.xy );\n",
|
||||
" else\n",
|
||||
" dgl_FragColor = Color;\n",
|
||||
" dgl_FragColor = dgl_VertexColor;\n",
|
||||
" } else\n",
|
||||
" dgl_FragColor = Color * texture2D( textureUnit0, gl_PointCoord );\n",
|
||||
" dgl_FragColor = dgl_VertexColor * texture2D( textureUnit0, gl_PointCoord );\n",
|
||||
"}\n"
|
||||
};
|
||||
|
||||
@@ -162,49 +161,6 @@ void cRendererGL3::SetShader( cShaderProgram * Shader ) {
|
||||
MatrixMode( CM );
|
||||
}
|
||||
|
||||
void cRendererGL3::Disable ( GLenum cap ) {
|
||||
switch ( cap ) {
|
||||
case GL_TEXTURE_2D:
|
||||
{
|
||||
if ( glIsEnabled( cap ) ) {
|
||||
mTexActive = 0;
|
||||
mCurShader->SetUniform( mTexActiveLoc, mTexActive );
|
||||
|
||||
/// Reset the vertex attrib to zero to avoid crashes on draw calls
|
||||
TexCoordPointer( 2, GL_FLOAT, 0, (const GLvoid*)NULL, 0 );
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case GL_CLIP_PLANE0:
|
||||
case GL_CLIP_PLANE1:
|
||||
case GL_CLIP_PLANE2:
|
||||
case GL_CLIP_PLANE3:
|
||||
case GL_CLIP_PLANE4:
|
||||
case GL_CLIP_PLANE5:
|
||||
{
|
||||
GLint plane = cap - GL_CLIP_PLANE0;
|
||||
|
||||
mPlanesStates[ plane ] = 0;
|
||||
PlaneStateCheck( false );
|
||||
mCurShader->SetUniform( EEGL_PLANES_ENABLED_NAME[ plane ], 0 );
|
||||
|
||||
break;
|
||||
}
|
||||
case GL_POINT_SPRITE:
|
||||
{
|
||||
mCurShader->SetUniform( mPointSpriteLoc, 0 );
|
||||
break;
|
||||
}
|
||||
case GL_VERTEX_PROGRAM_POINT_SIZE:
|
||||
{ /// Point Sprite flag for the shader?
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
cGL::Disable( cap );
|
||||
}
|
||||
|
||||
void cRendererGL3::Enable( GLenum cap ) {
|
||||
switch ( cap ) {
|
||||
case GL_TEXTURE_2D:
|
||||
@@ -234,10 +190,9 @@ void cRendererGL3::Enable( GLenum cap ) {
|
||||
case GL_POINT_SPRITE:
|
||||
{
|
||||
mCurShader->SetUniform( mPointSpriteLoc, 1 );
|
||||
break;
|
||||
}
|
||||
case GL_VERTEX_PROGRAM_POINT_SIZE:
|
||||
{
|
||||
|
||||
cGL::Enable( GL_VERTEX_PROGRAM_POINT_SIZE );
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -245,6 +200,45 @@ void cRendererGL3::Enable( GLenum cap ) {
|
||||
cGL::Enable( cap );
|
||||
}
|
||||
|
||||
void cRendererGL3::Disable ( GLenum cap ) {
|
||||
switch ( cap ) {
|
||||
case GL_TEXTURE_2D:
|
||||
{
|
||||
if ( glIsEnabled( cap ) ) {
|
||||
mTexActive = 0;
|
||||
mCurShader->SetUniform( mTexActiveLoc, mTexActive );
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case GL_CLIP_PLANE0:
|
||||
case GL_CLIP_PLANE1:
|
||||
case GL_CLIP_PLANE2:
|
||||
case GL_CLIP_PLANE3:
|
||||
case GL_CLIP_PLANE4:
|
||||
case GL_CLIP_PLANE5:
|
||||
{
|
||||
GLint plane = cap - GL_CLIP_PLANE0;
|
||||
|
||||
mPlanesStates[ plane ] = 0;
|
||||
PlaneStateCheck( false );
|
||||
mCurShader->SetUniform( EEGL_PLANES_ENABLED_NAME[ plane ], 0 );
|
||||
|
||||
break;
|
||||
}
|
||||
case GL_POINT_SPRITE:
|
||||
{
|
||||
mCurShader->SetUniform( mPointSpriteLoc, 0 );
|
||||
|
||||
cGL::Disable( GL_VERTEX_PROGRAM_POINT_SIZE );
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
cGL::Disable( cap );
|
||||
}
|
||||
|
||||
void cRendererGL3::PlaneStateCheck( bool tryEnable ) {
|
||||
GLint i;
|
||||
|
||||
@@ -439,11 +433,11 @@ void cRendererGL3::MatrixMode(GLenum mode) {
|
||||
}
|
||||
|
||||
void cRendererGL3::EnableClientState( GLenum array ) {
|
||||
glEnableVertexAttribArray( array - GL_VERTEX_ARRAY );
|
||||
glEnableVertexAttribArray( mStates[ array - GL_VERTEX_ARRAY ] );
|
||||
}
|
||||
|
||||
void cRendererGL3::DisableClientState( GLenum array ) {
|
||||
glDisableVertexAttribArray( array - GL_VERTEX_ARRAY );
|
||||
glDisableVertexAttribArray( mStates[ array - GL_VERTEX_ARRAY ] );
|
||||
}
|
||||
|
||||
void cRendererGL3::VertexPointer ( GLint size, GLenum type, GLsizei stride, const GLvoid * pointer, GLuint allocate ) {
|
||||
@@ -581,6 +575,12 @@ GLfloat cRendererGL3::PointSize() {
|
||||
return mPointSize;
|
||||
}
|
||||
|
||||
void cRendererGL3::BindGlobalVAO() {
|
||||
#ifndef EE_GLES2
|
||||
glBindVertexArray( mVAO );
|
||||
#endif
|
||||
}
|
||||
|
||||
void cRendererGL3::ClientActiveTexture( GLenum texture ) {
|
||||
/// TODO: Implement multitexturing in GL3 renderer
|
||||
}
|
||||
|
||||
@@ -101,6 +101,8 @@ class cRendererGL3 : public cGL {
|
||||
void fromGLMmat4( glm::mat4 from, GLfloat * to );
|
||||
|
||||
GLenum GetCurrentMatrixMode();
|
||||
|
||||
void BindGlobalVAO();
|
||||
protected:
|
||||
std::stack<glm::mat4> mProjectionMatrix; // cpu-side
|
||||
GLint mProjectionMatrix_id; // cpu-side hook to shader uniform
|
||||
|
||||
@@ -73,18 +73,6 @@ typedef SOPHIST_uint32 u32;
|
||||
|
||||
#define HK_TTF_STYLE_NO_GLYPH_CHANGE ( HK_TTF_STYLE_UNDERLINE | HK_TTF_STYLE_STRIKETHROUGH )
|
||||
|
||||
/** Disable this until implement support for multi-threaded memory manager
|
||||
#ifdef EE_DEBUG
|
||||
#include "../../base/memorymanager.hpp"
|
||||
#define hkNew eeNew
|
||||
#define hkNewArray eeNewArray
|
||||
#define hkMalloc eeMalloc
|
||||
#define hkDelete eeDelete
|
||||
#define hkDeleteArray eeDeleteArray
|
||||
#define hkFree eeFree
|
||||
#endif
|
||||
*/
|
||||
|
||||
#ifndef hkNew
|
||||
#define hkNew( classType, constructor ) new classType constructor
|
||||
#endif
|
||||
|
||||
@@ -100,6 +100,9 @@ void cDampedSpring::Draw() {
|
||||
GLi->DrawArrays( GL_LINE_STRIP, 0, springVAR_count );
|
||||
|
||||
GLi->PopMatrix();
|
||||
|
||||
GLi->Enable( GL_TEXTURE_2D );
|
||||
GLi->EnableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -62,25 +62,32 @@ void cShapePoly::Draw( cSpace * space ) {
|
||||
|
||||
eeColorA Col = ColorForShape( (cpShape *)poly, space->Space() );
|
||||
|
||||
// Could be a triangle fan
|
||||
BR->PointsBegin();
|
||||
BR->PolygonSetColor( Col );
|
||||
|
||||
if( !poly->CP_PRIVATE(shape).sensor ){
|
||||
for ( int i = 0; i < poly->CP_PRIVATE(numVerts); i++ ) {
|
||||
BR->BatchPolygonByPoint( poly->CP_PRIVATE(tVerts)[i].x, poly->CP_PRIVATE(tVerts)[i].y );
|
||||
if ( 4 != poly->CP_PRIVATE(numVerts) ) {
|
||||
BR->PointsBegin();
|
||||
BR->PolygonSetColor( Col );
|
||||
|
||||
for ( int i = 0; i < poly->CP_PRIVATE(numVerts); i++ ) {
|
||||
BR->BatchPolygonByPoint( poly->CP_PRIVATE(tVerts)[i].x, poly->CP_PRIVATE(tVerts)[i].y );
|
||||
}
|
||||
} else {
|
||||
BR->QuadsBegin();
|
||||
BR->QuadsSetColor( Col );
|
||||
|
||||
BR->BatchQuadFreeEx(poly->CP_PRIVATE(tVerts)[0].x, poly->CP_PRIVATE(tVerts)[0].y, poly->CP_PRIVATE(tVerts)[1].x, poly->CP_PRIVATE(tVerts)[1].y, poly->CP_PRIVATE(tVerts)[2].x, poly->CP_PRIVATE(tVerts)[2].y, poly->CP_PRIVATE(tVerts)[3].x, poly->CP_PRIVATE(tVerts)[3].y );
|
||||
}
|
||||
|
||||
BR->Draw();
|
||||
BR->DrawOpt();
|
||||
}
|
||||
|
||||
BR->LineLoopBegin();
|
||||
BR->LineLoopSetColor( Col );
|
||||
|
||||
for ( int i = 0; i < poly->CP_PRIVATE(numVerts); i++ ) {
|
||||
BR->BatchLineLoop( poly->CP_PRIVATE(tVerts)[i].x, poly->CP_PRIVATE(tVerts)[i].y );
|
||||
}
|
||||
|
||||
BR->Draw();
|
||||
BR->DrawOpt();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -100,8 +100,8 @@ void cShapeSegment::Draw( cSpace * space ) {
|
||||
|
||||
GLi->PopMatrix();
|
||||
|
||||
GLi->EnableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
GLi->Enable( GL_TEXTURE_2D );
|
||||
GLi->EnableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
} else {
|
||||
cPrimitives p;
|
||||
p.DrawLine( eeVector2f( a.x, a.y ), eeVector2f( b.x, b.y ) );
|
||||
|
||||
@@ -1,12 +1,5 @@
|
||||
#include "../ee.h"
|
||||
|
||||
/**
|
||||
@TODO Add some Surface Grid class, to create special effects ( waved texture, and stuff like that ).
|
||||
@TODO Add Scripting support ( lua or squirrel ).
|
||||
@TODO Encapsulate SDL and OpenGL ( and remove unnecessary dependencies ).
|
||||
@TODO Support color cursors ( not only black and white cursors, that really sucks ) - Imposible with SDL 1.2
|
||||
*/
|
||||
|
||||
class cUITest : public cUIControlAnim {
|
||||
public:
|
||||
cUITest( cUIControlAnim::CreateParams& Params ) : cUIControlAnim( Params ) { mOldColor = mBackground->Colors(); }
|
||||
@@ -1177,7 +1170,7 @@ void cEETest::Screen2() {
|
||||
scale = (!side) ? scale+et * 0.00025f : scale-et * 0.00025f;
|
||||
|
||||
if ( mUseShaders ) {
|
||||
mBlurFactor = scale * 0.01f;
|
||||
mBlurFactor = ( 1.5f * 0.01f ) - ( scale * 0.01f );
|
||||
mShaderProgram->Bind();
|
||||
mShaderProgram->SetUniform( "blurfactor" , mBlurFactor );
|
||||
}
|
||||
@@ -1754,7 +1747,8 @@ void cEETest::Demo1Create() {
|
||||
body = mSpace->AddBody( cBody::New( 1.0f, Moment::ForBox( 1.0f, 30.0f, 30.0f ) ) );
|
||||
body->Pos( cVectNew( hw + j * 32 - i * 16, 100 + i * 32 ) );
|
||||
|
||||
shape = mSpace->AddShape( cShapePolySprite::New( body, 30.f, 30.f, mBoxSprite ) );
|
||||
//shape = mSpace->AddShape( cShapePolySprite::New( body, 30.f, 30.f, mBoxSprite ) );
|
||||
shape = mSpace->AddShape( cShapePoly::New( body, 30.f, 30.f ) );
|
||||
shape->e( 0.0f );
|
||||
shape->u( 0.8f );
|
||||
}
|
||||
@@ -1765,7 +1759,8 @@ void cEETest::Demo1Create() {
|
||||
body = mSpace->AddBody( cBody::New( 10.0f, Moment::ForCircle( 10.0f, 0.0f, radius, cVectZero ) ) );
|
||||
body->Pos( cVectNew( hw, EE->GetHeight() - radius - 5 ) );
|
||||
|
||||
shape = mSpace->AddShape( cShapeCircleSprite::New( body, radius, cVectZero, mCircleSprite ) );
|
||||
//shape = mSpace->AddShape( cShapeCircleSprite::New( body, radius, cVectZero, mCircleSprite ) );
|
||||
shape = mSpace->AddShape( cShapeCircle::New( body, radius, cVectZero ) );
|
||||
shape->e( 0.0f );
|
||||
shape->u( 0.9f );
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ void cUIDragable::Update() {
|
||||
return;
|
||||
|
||||
if ( Dragging() ) {
|
||||
if ( !( cInput::instance()->PressTrigger() & mDragButton ) ) {
|
||||
if ( !( cUIManager::instance()->PressTrigger() & mDragButton ) ) {
|
||||
Dragging( false );
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -3,10 +3,11 @@
|
||||
|
||||
namespace EE { namespace UI {
|
||||
|
||||
cUIEventKey::cUIEventKey( cUIControl * Ctrl, const Uint32& EventNum, const Uint32& KeyCode, const Uint16& Char ) :
|
||||
cUIEventKey::cUIEventKey( cUIControl * Ctrl, const Uint32& EventNum, const Uint32& KeyCode, const Uint16& Char, const Uint32& Mod ) :
|
||||
cUIEvent( Ctrl, EventNum ),
|
||||
mKeyCode( KeyCode ),
|
||||
mChar( Char )
|
||||
mChar( Char ),
|
||||
mMod( Mod )
|
||||
{
|
||||
}
|
||||
|
||||
@@ -22,4 +23,8 @@ const Uint16& cUIEventKey::Char() const {
|
||||
return mChar;
|
||||
}
|
||||
|
||||
const Uint32& cUIEventKey::Mod() const {
|
||||
return mMod;
|
||||
}
|
||||
|
||||
}}
|
||||
|
||||
@@ -10,16 +10,19 @@ class cUIControl;
|
||||
|
||||
class EE_API cUIEventKey : public cUIEvent {
|
||||
public:
|
||||
cUIEventKey( cUIControl * Ctrl, const Uint32& EventNum, const Uint32& KeyCode, const Uint16& Char );
|
||||
cUIEventKey( cUIControl * Ctrl, const Uint32& EventNum, const Uint32& KeyCode, const Uint16& Char, const Uint32& Mod );
|
||||
|
||||
~cUIEventKey();
|
||||
|
||||
const Uint32& KeyCode() const;
|
||||
|
||||
const Uint16& Char() const;
|
||||
|
||||
const Uint32& Mod() const;
|
||||
protected:
|
||||
Uint32 mKeyCode;
|
||||
Uint16 mChar;
|
||||
Uint32 mMod;
|
||||
};
|
||||
|
||||
}}
|
||||
|
||||
@@ -548,7 +548,7 @@ void cUIListBox::UpdateScroll( bool FromScrollChange ) {
|
||||
}
|
||||
|
||||
void cUIListBox::ItemKeyEvent( const cUIEventKey &Event ) {
|
||||
cUIEventKey ItemEvent( Event.Ctrl(), cUIEvent::EventOnItemKeyDown, Event.KeyCode(), Event.Char() );
|
||||
cUIEventKey ItemEvent( Event.Ctrl(), cUIEvent::EventOnItemKeyDown, Event.KeyCode(), Event.Char(), Event.Mod() );
|
||||
SendEvent( &ItemEvent );
|
||||
}
|
||||
|
||||
|
||||
@@ -54,10 +54,10 @@ void cUIManager::Shutdown() {
|
||||
void cUIManager::InputCallback( EE_Event * Event ) {
|
||||
switch( Event->type ) {
|
||||
case SDL_KEYUP:
|
||||
SendKeyUp( Event );
|
||||
SendKeyUp( Event->key.keysym.sym, Event->key.keysym.unicode, Event->key.keysym.mod );
|
||||
break;
|
||||
case SDL_KEYDOWN:
|
||||
SendKeyDown( Event );
|
||||
SendKeyDown( Event->key.keysym.sym, Event->key.keysym.unicode, Event->key.keysym.mod );
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -67,8 +67,8 @@ void cUIManager::ResizeControl() {
|
||||
SendMsg( mControl, cUIMessage::MsgWindowResize );
|
||||
}
|
||||
|
||||
void cUIManager::SendKeyUp( EE_Event * Event ) {
|
||||
cUIEventKey KeyEvent = cUIEventKey( mFocusControl, cUIEvent::EventKeyUp, Event->key.keysym.sym, Event->key.keysym.unicode );
|
||||
void cUIManager::SendKeyUp( const Uint32& KeyCode, const Uint16& Char, const Uint32& Mod ) {
|
||||
cUIEventKey KeyEvent = cUIEventKey( mFocusControl, cUIEvent::EventKeyUp, KeyCode, Char, Mod );
|
||||
cUIControl * CtrlLoop = mFocusControl;
|
||||
|
||||
while( NULL != CtrlLoop ) {
|
||||
@@ -79,8 +79,8 @@ void cUIManager::SendKeyUp( EE_Event * Event ) {
|
||||
}
|
||||
}
|
||||
|
||||
void cUIManager::SendKeyDown( EE_Event * Event ) {
|
||||
cUIEventKey KeyEvent = cUIEventKey( mFocusControl, cUIEvent::EventKeyDown, Event->key.keysym.sym, Event->key.keysym.unicode );
|
||||
void cUIManager::SendKeyDown( const Uint32& KeyCode, const Uint16& Char, const Uint32& Mod ) {
|
||||
cUIEventKey KeyEvent = cUIEventKey( mFocusControl, cUIEvent::EventKeyDown, KeyCode, Char, Mod );
|
||||
cUIControl * CtrlLoop = mFocusControl;
|
||||
|
||||
while( NULL != CtrlLoop ) {
|
||||
|
||||
@@ -51,6 +51,10 @@ class EE_API cUIManager : public tSingleton<cUIManager> {
|
||||
void ClipEnable( const Int32& x, const Int32& y, const Uint32& Width, const Uint32& Height );
|
||||
|
||||
void ClipDisable();
|
||||
|
||||
void SendKeyUp( const Uint32& KeyCode, const Uint16& Char, const Uint32& Mod );
|
||||
|
||||
void SendKeyDown( const Uint32& KeyCode, const Uint16& Char, const Uint32& Mod );
|
||||
protected:
|
||||
cInput * mKM;
|
||||
|
||||
@@ -64,8 +68,6 @@ class EE_API cUIManager : public tSingleton<cUIManager> {
|
||||
Int32 mCbId;
|
||||
|
||||
void InputCallback( EE_Event * Event );
|
||||
void SendKeyUp( EE_Event * Event );
|
||||
void SendKeyDown( EE_Event * Event );
|
||||
};
|
||||
|
||||
}}
|
||||
|
||||
@@ -19,12 +19,12 @@ using namespace EE::Graphics;
|
||||
using namespace EE::Graphics::Private;
|
||||
|
||||
#define T(A, B, C, D) (int)((A<<24)|(B<<16)|(C<<8)|(D<<0))
|
||||
#define FORMAT_PREFIX "SDL_scrap_0x"
|
||||
#define FORMAT_PREFIX "EE_scrap_0x"
|
||||
|
||||
namespace EE { namespace Window {
|
||||
|
||||
#if EE_PLATFORM == EE_PLATFORM_LINUX
|
||||
static int clipboard_filter(const SDL_Event *event) {
|
||||
static int clipboard_filter( const SDL_Event *event ) {
|
||||
/* Post all non-window manager specific events */
|
||||
if ( event->type != SDL_SYSWMEVENT ) {
|
||||
return(1);
|
||||
@@ -270,7 +270,7 @@ void cEngine::Setup2D( const bool& KeepView ) {
|
||||
|
||||
SetLineSmooth( mVideoInfo.LineSmooth );
|
||||
|
||||
GLi->Enable( GL_TEXTURE_2D ); // Enable Textures
|
||||
GLi->Enable ( GL_TEXTURE_2D ); // Enable Textures
|
||||
GLi->Disable( GL_DEPTH_TEST );
|
||||
GLi->Disable( GL_LIGHTING );
|
||||
|
||||
@@ -909,7 +909,7 @@ void cEngine::clipboard_get_scrap(int type, int *dstlen, char **dst) {
|
||||
owner = mVideoInfo.info.info.x11.wmwindow;
|
||||
mVideoInfo.info.info.x11.lock_func();
|
||||
|
||||
selection = XInternAtom( mVideoInfo.info.info.x11.display, "SDL_SELECTION", False);
|
||||
selection = XInternAtom( mVideoInfo.info.info.x11.display, "SELECTION", False);
|
||||
XConvertSelection( mVideoInfo.info.info.x11.display, XA_PRIMARY, format, selection, owner, CurrentTime);
|
||||
|
||||
mVideoInfo.info.info.x11.unlock_func();
|
||||
|
||||
@@ -4,91 +4,6 @@
|
||||
|
||||
namespace EE { namespace Window {
|
||||
|
||||
Int32 convertKeyCharacter( EE_Event* event ) {
|
||||
SDL_keysym keysym = event->key.keysym;
|
||||
|
||||
Int32 value = 0;
|
||||
|
||||
if ( keysym.unicode < 255 )
|
||||
value = (Int32)keysym.unicode;
|
||||
|
||||
if ( isCharacter(value) )
|
||||
return value;
|
||||
|
||||
switch (keysym.sym) {
|
||||
case KEY_TAB: value = KEY_TAB; break;
|
||||
case KEY_LALT: value = KEY_LALT; break;
|
||||
case KEY_RALT: value = KEY_RALT; break;
|
||||
case KEY_LSHIFT: value = KEY_LSHIFT; break;
|
||||
case KEY_RSHIFT: value = KEY_RSHIFT; break;
|
||||
case KEY_LCTRL: value = KEY_RSHIFT; break;
|
||||
case KEY_RCTRL: value = KEY_LCTRL; break;
|
||||
case KEY_BACKSPACE: value = KEY_BACKSPACE; break;
|
||||
case KEY_PAUSE: value = KEY_PAUSE; break;
|
||||
case KEY_SPACE:
|
||||
// Special characters like ~ (tilde) ends up with the keysym.sym KEY_SPACE which
|
||||
// without this check would be lost. The check is only valid on key down events in SDL.
|
||||
if (event->type == SDL_KEYUP || keysym.unicode == ' ')
|
||||
value = KEY_SPACE;
|
||||
break;
|
||||
case KEY_ESCAPE: value = KEY_ESCAPE; break;
|
||||
case KEY_DELETE: value = KEY_DELETE; break;
|
||||
case KEY_INSERT: value = KEY_INSERT; break;
|
||||
case KEY_HOME: value = KEY_HOME; break;
|
||||
case KEY_END: value = KEY_END; break;
|
||||
case KEY_PAGEUP: value = KEY_PAGEUP; break;
|
||||
case KEY_PRINT: value = KEY_PRINT; break;
|
||||
case KEY_PAGEDOWN: value = KEY_PAGEDOWN; break;
|
||||
case KEY_F1: value = KEY_F1; break;
|
||||
case KEY_F2: value = KEY_F2; break;
|
||||
case KEY_F3: value = KEY_F3; break;
|
||||
case KEY_F4: value = KEY_F4; break;
|
||||
case KEY_F5: value = KEY_F5; break;
|
||||
case KEY_F6: value = KEY_F6; break;
|
||||
case KEY_F7: value = KEY_F7; break;
|
||||
case KEY_F8: value = KEY_F8; break;
|
||||
case KEY_F9: value = KEY_F9; break;
|
||||
case KEY_F10: value = KEY_F10; break;
|
||||
case KEY_F11: value = KEY_F11; break;
|
||||
case KEY_F12: value = KEY_F12; break;
|
||||
case KEY_F13: value = KEY_F13; break;
|
||||
case KEY_F14: value = KEY_F14; break;
|
||||
case KEY_F15: value = KEY_F15; break;
|
||||
case KEY_NUMLOCK: value = KEY_NUMLOCK; break;
|
||||
case KEY_CAPSLOCK: value = KEY_CAPSLOCK; break;
|
||||
case KEY_SCROLLOCK: value = KEY_SCROLLOCK; break;
|
||||
case KEY_RMETA: value = KEY_RMETA; break;
|
||||
case KEY_LMETA: value = KEY_LMETA; break;
|
||||
case KEY_LSUPER: value = KEY_LSUPER; break;
|
||||
case KEY_RSUPER: value = KEY_RSUPER; break;
|
||||
case KEY_MODE: value = KEY_MODE; break;
|
||||
case KEY_UP: value = KEY_UP; break;
|
||||
case KEY_DOWN: value = KEY_DOWN; break;
|
||||
case KEY_LEFT: value = KEY_LEFT; break;
|
||||
case KEY_RIGHT: value = KEY_RIGHT; break;
|
||||
case KEY_RETURN: value = KEY_RETURN; break;
|
||||
case KEY_KP_ENTER: value = KEY_KP_ENTER; break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
if (! (keysym.mod & KMOD_NUM) ) {
|
||||
switch (keysym.sym) {
|
||||
case KEY_KP0: value = KEY_INSERT; break;
|
||||
case KEY_KP1: value = KEY_END; break;
|
||||
case KEY_KP2: value = KEY_DOWN; break;
|
||||
case KEY_KP3: value = KEY_PAGEDOWN; break;
|
||||
case KEY_KP4: value = KEY_LEFT; break;
|
||||
case KEY_KP5: value = 0; break;
|
||||
case KEY_KP6: value = KEY_RIGHT; break;
|
||||
case KEY_KP7: value = KEY_HOME; break;
|
||||
case KEY_KP8: value = KEY_UP; break;
|
||||
case KEY_KP9: value = KEY_PAGEUP; break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
cInput::cInput() :
|
||||
mPressTrigger(0), mReleaseTrigger(0), mLastPressTrigger(0), mClickTrigger(0), mDoubleClickTrigger(0), mInputMod(0),
|
||||
mDoubleClickInterval(500),
|
||||
@@ -126,8 +41,8 @@ void cInput::Update() {
|
||||
mDoubleClickTrigger = 0;
|
||||
mInputMod = 0;
|
||||
|
||||
while ( SDL_PollEvent(&mEvent) ) {
|
||||
switch(mEvent.type) {
|
||||
while ( SDL_PollEvent( &mEvent ) ) {
|
||||
switch( mEvent.type ) {
|
||||
case SDL_KEYDOWN:
|
||||
mInputMod = mEvent.key.keysym.mod;
|
||||
|
||||
@@ -345,19 +260,19 @@ void cInput::InjectMousePos( const eeVector2i& Pos ) {
|
||||
}
|
||||
|
||||
bool cInput::ControlPressed() const {
|
||||
return ( mInputMod & KMOD_CTRL ) != 0;
|
||||
return ( mInputMod & KEYMOD_CTRL ) != 0;
|
||||
}
|
||||
|
||||
bool cInput::ShiftPressed() const {
|
||||
return ( mInputMod & KMOD_SHIFT ) != 0;
|
||||
return ( mInputMod & KEYMOD_SHIFT ) != 0;
|
||||
}
|
||||
|
||||
bool cInput::AltPressed() const {
|
||||
return ( mInputMod & KMOD_ALT ) != 0;
|
||||
return ( mInputMod & KEYMOD_ALT ) != 0;
|
||||
}
|
||||
|
||||
bool cInput::MetaPressed() const {
|
||||
return ( mInputMod & KMOD_META ) != 0;
|
||||
return ( mInputMod & KEYMOD_META ) != 0;
|
||||
}
|
||||
|
||||
bool cInput::MouseLeftPressed() const {
|
||||
|
||||
@@ -53,15 +53,16 @@ void cInputTextBuffer::Start() {
|
||||
void cInputTextBuffer::Update( EE_Event* Event ) {
|
||||
if ( Active() ) {
|
||||
ChangedSinceLastUpdate( false );
|
||||
Int32 c = convertKeyCharacter( Event );
|
||||
Int32 c = eeConvertKeyCharacter( Event->key.keysym.sym, Event->key.keysym.unicode, Event->key.keysym.mod );
|
||||
|
||||
if ( SupportFreeEditing() ) {
|
||||
switch ( Event->type ) {
|
||||
case SDL_KEYDOWN:
|
||||
{
|
||||
if ( cInput::instance()->ShiftPressed() || cInput::instance()->ControlPressed() ) {
|
||||
if ( !AllowOnlyNumbers() &&
|
||||
( ( ( Event->key.keysym.mod & KMOD_SHIFT ) && Event->key.keysym.sym == SDLK_INSERT ) ||
|
||||
( ( Event->key.keysym.mod & KMOD_CTRL ) && Event->key.keysym.sym == SDLK_v ) )
|
||||
( ( ( Event->key.keysym.mod & KEYMOD_SHIFT ) && c == KEY_INSERT ) ||
|
||||
( ( Event->key.keysym.mod & KEYMOD_CTRL ) && Event->key.keysym.sym == SDLK_v ) )
|
||||
)
|
||||
{
|
||||
std::wstring txt = cEngine::instance()->GetClipboardTextWStr();
|
||||
@@ -120,7 +121,7 @@ void cInputTextBuffer::Update( EE_Event* Event ) {
|
||||
if ( mEnterCall.IsSet() )
|
||||
mEnterCall();
|
||||
|
||||
} else if ( c == KEY_LEFT ) {
|
||||
} else if ( c == KEY_LEFT ) {
|
||||
if ( ( mPromptPos - 1 ) >= 0 ) {
|
||||
mPromptPos--;
|
||||
AutoPrompt( false );
|
||||
@@ -168,9 +169,11 @@ void cInputTextBuffer::Update( EE_Event* Event ) {
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case SDL_KEYUP:
|
||||
{
|
||||
if ( SupportNewLine() ) {
|
||||
if ( Event->key.keysym.sym == SDLK_END ) {
|
||||
if ( c == KEY_END ) {
|
||||
for ( Uint32 i = mPromptPos; i < mText.size(); i++ ) {
|
||||
if ( mText[i] == L'\n' ) {
|
||||
mPromptPos = i;
|
||||
@@ -185,7 +188,7 @@ void cInputTextBuffer::Update( EE_Event* Event ) {
|
||||
}
|
||||
}
|
||||
|
||||
if ( Event->key.keysym.sym == SDLK_HOME ) {
|
||||
if ( c == KEY_HOME ) {
|
||||
if ( 0 != mPromptPos ) {
|
||||
for ( Int32 i = (Int32)mPromptPos - 1; i >= 0; i-- ) {
|
||||
if ( i >= 0 ) {
|
||||
@@ -204,16 +207,17 @@ void cInputTextBuffer::Update( EE_Event* Event ) {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if ( Event->key.keysym.sym == SDLK_END ) {
|
||||
if ( c == KEY_END ) {
|
||||
AutoPrompt( true );
|
||||
}
|
||||
|
||||
if ( Event->key.keysym.sym == SDLK_HOME ) {
|
||||
if ( c == KEY_HOME ) {
|
||||
mPromptPos = 0;
|
||||
AutoPrompt(false);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if ( Event->type == SDL_KEYDOWN ) {
|
||||
|
||||
86
src/window/inputhelper.cpp
Normal file
86
src/window/inputhelper.cpp
Normal file
@@ -0,0 +1,86 @@
|
||||
#include "inputhelper.hpp"
|
||||
|
||||
namespace EE { namespace Window {
|
||||
|
||||
Uint32 eeConvertKeyCharacter( const Uint32& KeyCode, const Uint16& Unicode, const Uint32& Modifiers ) {
|
||||
Uint32 value = 0;
|
||||
|
||||
if ( Unicode < 255 ) {
|
||||
value = Unicode;
|
||||
}
|
||||
|
||||
if ( isCharacter( value ) ) {
|
||||
return value;
|
||||
}
|
||||
|
||||
switch ( KeyCode ) {
|
||||
case KEY_TAB: value = KEY_TAB; break;
|
||||
case KEY_LALT: value = KEY_LALT; break;
|
||||
case KEY_RALT: value = KEY_RALT; break;
|
||||
case KEY_LSHIFT: value = KEY_LSHIFT; break;
|
||||
case KEY_RSHIFT: value = KEY_RSHIFT; break;
|
||||
case KEY_LCTRL: value = KEY_RSHIFT; break;
|
||||
case KEY_RCTRL: value = KEY_LCTRL; break;
|
||||
case KEY_BACKSPACE: value = KEY_BACKSPACE; break;
|
||||
case KEY_PAUSE: value = KEY_PAUSE; break;
|
||||
case KEY_SPACE: value = KEY_SPACE; break;
|
||||
case KEY_ESCAPE: value = KEY_ESCAPE; break;
|
||||
case KEY_DELETE: value = KEY_DELETE; break;
|
||||
case KEY_INSERT: value = KEY_INSERT; break;
|
||||
case KEY_HOME: value = KEY_HOME; break;
|
||||
case KEY_END: value = KEY_END; break;
|
||||
case KEY_PAGEUP: value = KEY_PAGEUP; break;
|
||||
case KEY_PRINT: value = KEY_PRINT; break;
|
||||
case KEY_PAGEDOWN: value = KEY_PAGEDOWN; break;
|
||||
case KEY_F1: value = KEY_F1; break;
|
||||
case KEY_F2: value = KEY_F2; break;
|
||||
case KEY_F3: value = KEY_F3; break;
|
||||
case KEY_F4: value = KEY_F4; break;
|
||||
case KEY_F5: value = KEY_F5; break;
|
||||
case KEY_F6: value = KEY_F6; break;
|
||||
case KEY_F7: value = KEY_F7; break;
|
||||
case KEY_F8: value = KEY_F8; break;
|
||||
case KEY_F9: value = KEY_F9; break;
|
||||
case KEY_F10: value = KEY_F10; break;
|
||||
case KEY_F11: value = KEY_F11; break;
|
||||
case KEY_F12: value = KEY_F12; break;
|
||||
case KEY_F13: value = KEY_F13; break;
|
||||
case KEY_F14: value = KEY_F14; break;
|
||||
case KEY_F15: value = KEY_F15; break;
|
||||
case KEY_NUMLOCK: value = KEY_NUMLOCK; break;
|
||||
case KEY_CAPSLOCK: value = KEY_CAPSLOCK; break;
|
||||
case KEY_SCROLLOCK: value = KEY_SCROLLOCK; break;
|
||||
case KEY_RMETA: value = KEY_RMETA; break;
|
||||
case KEY_LMETA: value = KEY_LMETA; break;
|
||||
case KEY_LSUPER: value = KEY_LSUPER; break;
|
||||
case KEY_RSUPER: value = KEY_RSUPER; break;
|
||||
case KEY_MODE: value = KEY_MODE; break;
|
||||
case KEY_UP: value = KEY_UP; break;
|
||||
case KEY_DOWN: value = KEY_DOWN; break;
|
||||
case KEY_LEFT: value = KEY_LEFT; break;
|
||||
case KEY_RIGHT: value = KEY_RIGHT; break;
|
||||
case KEY_RETURN: value = KEY_RETURN; break;
|
||||
case KEY_KP_ENTER: value = KEY_KP_ENTER; break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
if ( !( Modifiers & KEYMOD_NUM ) ) {
|
||||
switch ( KeyCode ) {
|
||||
case KEY_KP0: value = KEY_INSERT; break;
|
||||
case KEY_KP1: value = KEY_END; break;
|
||||
case KEY_KP2: value = KEY_DOWN; break;
|
||||
case KEY_KP3: value = KEY_PAGEDOWN; break;
|
||||
case KEY_KP4: value = KEY_LEFT; break;
|
||||
case KEY_KP5: value = 0; break;
|
||||
case KEY_KP6: value = KEY_RIGHT; break;
|
||||
case KEY_KP7: value = KEY_HOME; break;
|
||||
case KEY_KP8: value = KEY_UP; break;
|
||||
case KEY_KP9: value = KEY_PAGEUP; break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
}}
|
||||
@@ -1,6 +1,9 @@
|
||||
#ifndef EE_INPUT_HELPER_HPP
|
||||
#define EE_INPUT_HELPER_HPP
|
||||
|
||||
#include "../base.hpp"
|
||||
#include "base.hpp"
|
||||
|
||||
namespace EE { namespace Window {
|
||||
|
||||
#define EE_BUTTON(X) ( 1 << ( ( X ) - 1 ) )
|
||||
@@ -28,263 +31,284 @@ namespace EE { namespace Window {
|
||||
/** EE_Event is just an SDL_Event */
|
||||
typedef SDL_Event EE_Event;
|
||||
|
||||
int EE_API convertKeyCharacter(EE_Event* event);
|
||||
Uint32 EE_API eeConvertKeyCharacter( const Uint32& KeyCode, const Uint16& Unicode, const Uint32& Modifiers );
|
||||
|
||||
/** @enum EE_KEY Enum of keyboard keys. */
|
||||
enum EE_KEY {
|
||||
KEY_UNKNOWN= SDLK_UNKNOWN,
|
||||
KEY_FIRST= SDLK_FIRST,
|
||||
KEY_BACKSPACE= SDLK_BACKSPACE,
|
||||
KEY_TAB= SDLK_TAB,
|
||||
KEY_CLEAR= SDLK_CLEAR,
|
||||
KEY_RETURN= SDLK_RETURN,
|
||||
KEY_PAUSE= SDLK_PAUSE,
|
||||
KEY_ESCAPE= SDLK_ESCAPE,
|
||||
KEY_SPACE= SDLK_SPACE,
|
||||
KEY_EXCLAIM= SDLK_EXCLAIM,
|
||||
KEY_QUOTEDBL= SDLK_QUOTEDBL,
|
||||
KEY_HASH= SDLK_HASH,
|
||||
KEY_DOLLAR= SDLK_DOLLAR,
|
||||
KEY_AMPERSAND= SDLK_AMPERSAND,
|
||||
KEY_QUOTE= SDLK_QUOTE,
|
||||
KEY_LEFTPAREN= SDLK_LEFTPAREN,
|
||||
KEY_RIGHTPAREN= SDLK_RIGHTPAREN,
|
||||
KEY_ASTERISK= SDLK_ASTERISK,
|
||||
KEY_PLUS= SDLK_PLUS,
|
||||
KEY_COMMA= SDLK_COMMA,
|
||||
KEY_MINUS= SDLK_MINUS,
|
||||
KEY_PERIOD= SDLK_PERIOD,
|
||||
KEY_SLASH= SDLK_SLASH,
|
||||
KEY_0= SDLK_0,
|
||||
KEY_1= SDLK_1,
|
||||
KEY_2= SDLK_2,
|
||||
KEY_3= SDLK_3,
|
||||
KEY_4= SDLK_4,
|
||||
KEY_5= SDLK_5,
|
||||
KEY_6= SDLK_6,
|
||||
KEY_7= SDLK_7,
|
||||
KEY_8= SDLK_8,
|
||||
KEY_9= SDLK_9,
|
||||
KEY_COLON= SDLK_COLON,
|
||||
KEY_SEMICOLON= SDLK_SEMICOLON,
|
||||
KEY_LESS= SDLK_LESS,
|
||||
KEY_EQUALS= SDLK_EQUALS,
|
||||
KEY_GREATER= SDLK_GREATER,
|
||||
KEY_QUESTION= SDLK_QUESTION,
|
||||
KEY_AT= SDLK_AT,
|
||||
KEY_UNKNOWN = SDLK_UNKNOWN,
|
||||
KEY_FIRST = SDLK_FIRST,
|
||||
KEY_BACKSPACE = SDLK_BACKSPACE,
|
||||
KEY_TAB = SDLK_TAB,
|
||||
KEY_CLEAR = SDLK_CLEAR,
|
||||
KEY_RETURN = SDLK_RETURN,
|
||||
KEY_PAUSE = SDLK_PAUSE,
|
||||
KEY_ESCAPE = SDLK_ESCAPE,
|
||||
KEY_SPACE = SDLK_SPACE,
|
||||
KEY_EXCLAIM = SDLK_EXCLAIM,
|
||||
KEY_QUOTEDBL = SDLK_QUOTEDBL,
|
||||
KEY_HASH = SDLK_HASH,
|
||||
KEY_DOLLAR = SDLK_DOLLAR,
|
||||
KEY_AMPERSAND = SDLK_AMPERSAND,
|
||||
KEY_QUOTE = SDLK_QUOTE,
|
||||
KEY_LEFTPAREN = SDLK_LEFTPAREN,
|
||||
KEY_RIGHTPAREN = SDLK_RIGHTPAREN,
|
||||
KEY_ASTERISK = SDLK_ASTERISK,
|
||||
KEY_PLUS = SDLK_PLUS,
|
||||
KEY_COMMA = SDLK_COMMA,
|
||||
KEY_MINUS = SDLK_MINUS,
|
||||
KEY_PERIOD = SDLK_PERIOD,
|
||||
KEY_SLASH = SDLK_SLASH,
|
||||
KEY_0 = SDLK_0,
|
||||
KEY_1 = SDLK_1,
|
||||
KEY_2 = SDLK_2,
|
||||
KEY_3 = SDLK_3,
|
||||
KEY_4 = SDLK_4,
|
||||
KEY_5 = SDLK_5,
|
||||
KEY_6 = SDLK_6,
|
||||
KEY_7 = SDLK_7,
|
||||
KEY_8 = SDLK_8,
|
||||
KEY_9 = SDLK_9,
|
||||
KEY_COLON = SDLK_COLON,
|
||||
KEY_SEMICOLON = SDLK_SEMICOLON,
|
||||
KEY_LESS = SDLK_LESS,
|
||||
KEY_EQUALS = SDLK_EQUALS,
|
||||
KEY_GREATER = SDLK_GREATER,
|
||||
KEY_QUESTION = SDLK_QUESTION,
|
||||
KEY_AT = SDLK_AT,
|
||||
|
||||
|
||||
/*
|
||||
Skip uppercase letters
|
||||
*/
|
||||
KEY_LEFTBRACKET= SDLK_LEFTBRACKET,
|
||||
KEY_BACKSLASH= SDLK_BACKSLASH,
|
||||
KEY_RIGHTBRACKET= SDLK_RIGHTBRACKET,
|
||||
KEY_CARET= SDLK_CARET,
|
||||
KEY_UNDERSCORE= SDLK_UNDERSCORE,
|
||||
KEY_BACKQUOTE= SDLK_BACKQUOTE, ///< GRAVE
|
||||
KEY_A= SDLK_a,
|
||||
KEY_B= SDLK_b,
|
||||
KEY_C= SDLK_c,
|
||||
KEY_D= SDLK_d,
|
||||
KEY_E= SDLK_e,
|
||||
KEY_F= SDLK_f,
|
||||
KEY_G= SDLK_g,
|
||||
KEY_H= SDLK_h,
|
||||
KEY_I= SDLK_i,
|
||||
KEY_J= SDLK_j,
|
||||
KEY_K= SDLK_k,
|
||||
KEY_L= SDLK_l,
|
||||
KEY_M= SDLK_m,
|
||||
KEY_N= SDLK_n,
|
||||
KEY_O= SDLK_o,
|
||||
KEY_P= SDLK_p,
|
||||
KEY_Q= SDLK_q,
|
||||
KEY_R= SDLK_r,
|
||||
KEY_S= SDLK_s,
|
||||
KEY_T= SDLK_t,
|
||||
KEY_U= SDLK_u,
|
||||
KEY_V= SDLK_v,
|
||||
KEY_W= SDLK_w,
|
||||
KEY_X= SDLK_x,
|
||||
KEY_Y= SDLK_y,
|
||||
KEY_Z= SDLK_z,
|
||||
KEY_DELETE= SDLK_DELETE,
|
||||
KEY_LEFTBRACKET = SDLK_LEFTBRACKET,
|
||||
KEY_BACKSLASH = SDLK_BACKSLASH,
|
||||
KEY_RIGHTBRACKET = SDLK_RIGHTBRACKET,
|
||||
KEY_CARET = SDLK_CARET,
|
||||
KEY_UNDERSCORE = SDLK_UNDERSCORE,
|
||||
KEY_BACKQUOTE = SDLK_BACKQUOTE, ///< GRAVE
|
||||
KEY_A = SDLK_a,
|
||||
KEY_B = SDLK_b,
|
||||
KEY_C = SDLK_c,
|
||||
KEY_D = SDLK_d,
|
||||
KEY_E = SDLK_e,
|
||||
KEY_F = SDLK_f,
|
||||
KEY_G = SDLK_g,
|
||||
KEY_H = SDLK_h,
|
||||
KEY_I = SDLK_i,
|
||||
KEY_J = SDLK_j,
|
||||
KEY_K = SDLK_k,
|
||||
KEY_L = SDLK_l,
|
||||
KEY_M = SDLK_m,
|
||||
KEY_N = SDLK_n,
|
||||
KEY_O = SDLK_o,
|
||||
KEY_P = SDLK_p,
|
||||
KEY_Q = SDLK_q,
|
||||
KEY_R = SDLK_r,
|
||||
KEY_S = SDLK_s,
|
||||
KEY_T = SDLK_t,
|
||||
KEY_U = SDLK_u,
|
||||
KEY_V = SDLK_v,
|
||||
KEY_W = SDLK_w,
|
||||
KEY_X = SDLK_x,
|
||||
KEY_Y = SDLK_y,
|
||||
KEY_Z = SDLK_z,
|
||||
KEY_DELETE = SDLK_DELETE,
|
||||
/* End of ASCII mapped keysyms */
|
||||
|
||||
/* Numeric keypad */
|
||||
KEY_KP0= SDLK_KP0,
|
||||
KEY_KP1= SDLK_KP1,
|
||||
KEY_KP2= SDLK_KP2,
|
||||
KEY_KP3= SDLK_KP3,
|
||||
KEY_KP4= SDLK_KP4,
|
||||
KEY_KP5= SDLK_KP5,
|
||||
KEY_KP6= SDLK_KP6,
|
||||
KEY_KP7= SDLK_KP7,
|
||||
KEY_KP8= SDLK_KP8,
|
||||
KEY_KP9= SDLK_KP9,
|
||||
KEY_KP_PEROID= SDLK_KP_PERIOD,
|
||||
KEY_KP_DIVIDE= SDLK_KP_DIVIDE,
|
||||
KEY_KP_MULTIPLY= SDLK_KP_MULTIPLY,
|
||||
KEY_KP_MINUS= SDLK_KP_MINUS,
|
||||
KEY_KP_PLUS= SDLK_KP_PLUS,
|
||||
KEY_KP_ENTER= SDLK_KP_ENTER,
|
||||
KEY_KP_EQUALS= SDLK_KP_EQUALS,
|
||||
KEY_KP0 = SDLK_KP0,
|
||||
KEY_KP1 = SDLK_KP1,
|
||||
KEY_KP2 = SDLK_KP2,
|
||||
KEY_KP3 = SDLK_KP3,
|
||||
KEY_KP4 = SDLK_KP4,
|
||||
KEY_KP5 = SDLK_KP5,
|
||||
KEY_KP6 = SDLK_KP6,
|
||||
KEY_KP7 = SDLK_KP7,
|
||||
KEY_KP8 = SDLK_KP8,
|
||||
KEY_KP9 = SDLK_KP9,
|
||||
KEY_KP_PEROID = SDLK_KP_PERIOD,
|
||||
KEY_KP_DIVIDE = SDLK_KP_DIVIDE,
|
||||
KEY_KP_MULTIPLY = SDLK_KP_MULTIPLY,
|
||||
KEY_KP_MINUS = SDLK_KP_MINUS,
|
||||
KEY_KP_PLUS = SDLK_KP_PLUS,
|
||||
KEY_KP_ENTER = SDLK_KP_ENTER,
|
||||
KEY_KP_EQUALS = SDLK_KP_EQUALS,
|
||||
|
||||
/* Arrows + Home/End pad */
|
||||
KEY_UP= SDLK_UP,
|
||||
KEY_DOWN= SDLK_DOWN,
|
||||
KEY_RIGHT= SDLK_RIGHT,
|
||||
KEY_LEFT= SDLK_LEFT,
|
||||
KEY_INSERT= SDLK_INSERT,
|
||||
KEY_HOME= SDLK_HOME,
|
||||
KEY_END= SDLK_END,
|
||||
KEY_PAGEUP= SDLK_PAGEUP,
|
||||
KEY_PAGEDOWN= SDLK_PAGEDOWN,
|
||||
KEY_UP = SDLK_UP,
|
||||
KEY_DOWN = SDLK_DOWN,
|
||||
KEY_RIGHT = SDLK_RIGHT,
|
||||
KEY_LEFT = SDLK_LEFT,
|
||||
KEY_INSERT = SDLK_INSERT,
|
||||
KEY_HOME = SDLK_HOME,
|
||||
KEY_END = SDLK_END,
|
||||
KEY_PAGEUP = SDLK_PAGEUP,
|
||||
KEY_PAGEDOWN = SDLK_PAGEDOWN,
|
||||
|
||||
/* Function keys */
|
||||
KEY_F1= SDLK_F1,
|
||||
KEY_F2= SDLK_F2,
|
||||
KEY_F3= SDLK_F3,
|
||||
KEY_F4= SDLK_F4,
|
||||
KEY_F5= SDLK_F5,
|
||||
KEY_F6= SDLK_F6,
|
||||
KEY_F7= SDLK_F7,
|
||||
KEY_F8= SDLK_F8,
|
||||
KEY_F9= SDLK_F9,
|
||||
KEY_F10= SDLK_F10,
|
||||
KEY_F11= SDLK_F11,
|
||||
KEY_F12= SDLK_F12,
|
||||
KEY_F13= SDLK_F13,
|
||||
KEY_F14= SDLK_F14,
|
||||
KEY_F15= SDLK_F15,
|
||||
KEY_F1 = SDLK_F1,
|
||||
KEY_F2 = SDLK_F2,
|
||||
KEY_F3 = SDLK_F3,
|
||||
KEY_F4 = SDLK_F4,
|
||||
KEY_F5 = SDLK_F5,
|
||||
KEY_F6 = SDLK_F6,
|
||||
KEY_F7 = SDLK_F7,
|
||||
KEY_F8 = SDLK_F8,
|
||||
KEY_F9 = SDLK_F9,
|
||||
KEY_F10 = SDLK_F10,
|
||||
KEY_F11 = SDLK_F11,
|
||||
KEY_F12 = SDLK_F12,
|
||||
KEY_F13 = SDLK_F13,
|
||||
KEY_F14 = SDLK_F14,
|
||||
KEY_F15 = SDLK_F15,
|
||||
|
||||
/* Key state modifier keys */
|
||||
KEY_NUMLOCK= SDLK_NUMLOCK,
|
||||
KEY_CAPSLOCK= SDLK_CAPSLOCK,
|
||||
KEY_SCROLLOCK= SDLK_SCROLLOCK,
|
||||
KEY_RSHIFT= SDLK_RSHIFT,
|
||||
KEY_LSHIFT= SDLK_LSHIFT,
|
||||
KEY_RCTRL= SDLK_RCTRL,
|
||||
KEY_LCTRL= SDLK_LCTRL,
|
||||
KEY_RALT= SDLK_RALT,
|
||||
KEY_LALT= SDLK_LALT,
|
||||
KEY_RMETA= SDLK_RMETA,
|
||||
KEY_LMETA= SDLK_LMETA,
|
||||
KEY_LSUPER= SDLK_LSUPER, ///< Left "Windows" key
|
||||
KEY_RSUPER= SDLK_RSUPER, ///< Right "Windows" key
|
||||
KEY_NUMLOCK = SDLK_NUMLOCK,
|
||||
KEY_CAPSLOCK = SDLK_CAPSLOCK,
|
||||
KEY_SCROLLOCK = SDLK_SCROLLOCK,
|
||||
KEY_RSHIFT = SDLK_RSHIFT,
|
||||
KEY_LSHIFT = SDLK_LSHIFT,
|
||||
KEY_RCTRL = SDLK_RCTRL,
|
||||
KEY_LCTRL = SDLK_LCTRL,
|
||||
KEY_RALT = SDLK_RALT,
|
||||
KEY_LALT = SDLK_LALT,
|
||||
KEY_RMETA = SDLK_RMETA,
|
||||
KEY_LMETA = SDLK_LMETA,
|
||||
KEY_LSUPER = SDLK_LSUPER, ///< Left "Windows" key
|
||||
KEY_RSUPER = SDLK_RSUPER, ///< Right "Windows" key
|
||||
|
||||
/* Miscellaneous function keys */
|
||||
KEY_HELP= SDLK_HELP,
|
||||
KEY_PRINT= SDLK_PRINT,
|
||||
KEY_SYSREQ= SDLK_SYSREQ,
|
||||
KEY_BREAK= SDLK_BREAK,
|
||||
KEY_MENU= SDLK_MENU,
|
||||
KEY_MODE= SDLK_MODE, ///< "Alt Gr" key
|
||||
KEY_COMPOSE= SDLK_COMPOSE, ///< Multi-key compose key
|
||||
KEY_POWER= SDLK_POWER, ///< Power Macintosh power key
|
||||
KEY_EURO= SDLK_EURO, ///< Some european keyboards
|
||||
KEY_UNDO= SDLK_UNDO, ///< Atari keyboard has Undo
|
||||
KEY_HELP = SDLK_HELP,
|
||||
KEY_PRINT = SDLK_PRINT,
|
||||
KEY_SYSREQ = SDLK_SYSREQ,
|
||||
KEY_BREAK = SDLK_BREAK,
|
||||
KEY_MENU = SDLK_MENU,
|
||||
KEY_MODE = SDLK_MODE, ///< "Alt Gr" key
|
||||
KEY_COMPOSE = SDLK_COMPOSE, ///< Multi-key compose key
|
||||
KEY_POWER = SDLK_POWER, ///< Power Macintosh power key
|
||||
KEY_EURO = SDLK_EURO, ///< Some european keyboards
|
||||
KEY_UNDO = SDLK_UNDO, ///< Atari keyboard has Undo
|
||||
|
||||
/* International keyboard syms */
|
||||
KEY_WORLD_0= SDLK_WORLD_0,
|
||||
KEY_WORLD_1= SDLK_WORLD_1,
|
||||
KEY_WORLD_2= SDLK_WORLD_2,
|
||||
KEY_WORLD_3= SDLK_WORLD_3,
|
||||
KEY_WORLD_4= SDLK_WORLD_4,
|
||||
KEY_WORLD_5= SDLK_WORLD_5,
|
||||
KEY_WORLD_6= SDLK_WORLD_6,
|
||||
KEY_WORLD_7= SDLK_WORLD_7,
|
||||
KEY_WORLD_8= SDLK_WORLD_8,
|
||||
KEY_WORLD_9= SDLK_WORLD_9,
|
||||
KEY_WORLD_10= SDLK_WORLD_10,
|
||||
KEY_WORLD_11= SDLK_WORLD_11,
|
||||
KEY_WORLD_12= SDLK_WORLD_12,
|
||||
KEY_WORLD_13= SDLK_WORLD_13,
|
||||
KEY_WORLD_14= SDLK_WORLD_14,
|
||||
KEY_WORLD_15= SDLK_WORLD_15,
|
||||
KEY_WORLD_16= SDLK_WORLD_16,
|
||||
KEY_WORLD_17= SDLK_WORLD_17,
|
||||
KEY_WORLD_18= SDLK_WORLD_18,
|
||||
KEY_WORLD_19= SDLK_WORLD_19,
|
||||
KEY_WORLD_20= SDLK_WORLD_20,
|
||||
KEY_WORLD_21= SDLK_WORLD_21,
|
||||
KEY_WORLD_22= SDLK_WORLD_22,
|
||||
KEY_WORLD_23= SDLK_WORLD_23,
|
||||
KEY_WORLD_24= SDLK_WORLD_24,
|
||||
KEY_WORLD_25= SDLK_WORLD_25,
|
||||
KEY_WORLD_26= SDLK_WORLD_26,
|
||||
KEY_WORLD_27= SDLK_WORLD_27,
|
||||
KEY_WORLD_28= SDLK_WORLD_28,
|
||||
KEY_WORLD_29= SDLK_WORLD_29,
|
||||
KEY_WORLD_30= SDLK_WORLD_30,
|
||||
KEY_WORLD_31= SDLK_WORLD_31,
|
||||
KEY_WORLD_32= SDLK_WORLD_32,
|
||||
KEY_WORLD_33= SDLK_WORLD_33,
|
||||
KEY_WORLD_34= SDLK_WORLD_34,
|
||||
KEY_WORLD_35= SDLK_WORLD_35,
|
||||
KEY_WORLD_36= SDLK_WORLD_36,
|
||||
KEY_WORLD_37= SDLK_WORLD_37,
|
||||
KEY_WORLD_38= SDLK_WORLD_38,
|
||||
KEY_WORLD_39= SDLK_WORLD_39,
|
||||
KEY_WORLD_40= SDLK_WORLD_40,
|
||||
KEY_WORLD_41= SDLK_WORLD_41,
|
||||
KEY_WORLD_42= SDLK_WORLD_42,
|
||||
KEY_WORLD_43= SDLK_WORLD_43,
|
||||
KEY_WORLD_44= SDLK_WORLD_44,
|
||||
KEY_WORLD_45= SDLK_WORLD_45,
|
||||
KEY_WORLD_46= SDLK_WORLD_46,
|
||||
KEY_WORLD_47= SDLK_WORLD_47,
|
||||
KEY_WORLD_48= SDLK_WORLD_48,
|
||||
KEY_WORLD_49= SDLK_WORLD_49,
|
||||
KEY_WORLD_50= SDLK_WORLD_50,
|
||||
KEY_WORLD_51= SDLK_WORLD_51,
|
||||
KEY_WORLD_52= SDLK_WORLD_52,
|
||||
KEY_WORLD_53= SDLK_WORLD_53,
|
||||
KEY_WORLD_54= SDLK_WORLD_54,
|
||||
KEY_WORLD_55= SDLK_WORLD_55,
|
||||
KEY_WORLD_56= SDLK_WORLD_56,
|
||||
KEY_WORLD_57= SDLK_WORLD_57,
|
||||
KEY_WORLD_58= SDLK_WORLD_58,
|
||||
KEY_WORLD_59= SDLK_WORLD_59,
|
||||
KEY_WORLD_60= SDLK_WORLD_60,
|
||||
KEY_WORLD_61= SDLK_WORLD_61,
|
||||
KEY_WORLD_62= SDLK_WORLD_62,
|
||||
KEY_WORLD_63= SDLK_WORLD_63,
|
||||
KEY_WORLD_64= SDLK_WORLD_64,
|
||||
KEY_WORLD_65= SDLK_WORLD_65,
|
||||
KEY_WORLD_66= SDLK_WORLD_66,
|
||||
KEY_WORLD_67= SDLK_WORLD_67,
|
||||
KEY_WORLD_68= SDLK_WORLD_68,
|
||||
KEY_WORLD_69= SDLK_WORLD_69,
|
||||
KEY_WORLD_70= SDLK_WORLD_70,
|
||||
KEY_WORLD_71= SDLK_WORLD_71,
|
||||
KEY_WORLD_72= SDLK_WORLD_72,
|
||||
KEY_WORLD_73= SDLK_WORLD_73,
|
||||
KEY_WORLD_74= SDLK_WORLD_74,
|
||||
KEY_WORLD_75= SDLK_WORLD_75,
|
||||
KEY_WORLD_76= SDLK_WORLD_76,
|
||||
KEY_WORLD_77= SDLK_WORLD_77,
|
||||
KEY_WORLD_78= SDLK_WORLD_78,
|
||||
KEY_WORLD_79= SDLK_WORLD_79,
|
||||
KEY_WORLD_80= SDLK_WORLD_80,
|
||||
KEY_WORLD_81= SDLK_WORLD_81,
|
||||
KEY_WORLD_82= SDLK_WORLD_82,
|
||||
KEY_WORLD_83= SDLK_WORLD_83,
|
||||
KEY_WORLD_84= SDLK_WORLD_84,
|
||||
KEY_WORLD_85= SDLK_WORLD_85,
|
||||
KEY_WORLD_86= SDLK_WORLD_86,
|
||||
KEY_WORLD_87= SDLK_WORLD_87,
|
||||
KEY_WORLD_88= SDLK_WORLD_88,
|
||||
KEY_WORLD_89= SDLK_WORLD_89,
|
||||
KEY_WORLD_90= SDLK_WORLD_90,
|
||||
KEY_WORLD_91= SDLK_WORLD_91,
|
||||
KEY_WORLD_92= SDLK_WORLD_92,
|
||||
KEY_WORLD_93= SDLK_WORLD_93,
|
||||
KEY_WORLD_94= SDLK_WORLD_94,
|
||||
KEY_WORLD_95= SDLK_WORLD_95
|
||||
KEY_WORLD_0 = SDLK_WORLD_0,
|
||||
KEY_WORLD_1 = SDLK_WORLD_1,
|
||||
KEY_WORLD_2 = SDLK_WORLD_2,
|
||||
KEY_WORLD_3 = SDLK_WORLD_3,
|
||||
KEY_WORLD_4 = SDLK_WORLD_4,
|
||||
KEY_WORLD_5 = SDLK_WORLD_5,
|
||||
KEY_WORLD_6 = SDLK_WORLD_6,
|
||||
KEY_WORLD_7 = SDLK_WORLD_7,
|
||||
KEY_WORLD_8 = SDLK_WORLD_8,
|
||||
KEY_WORLD_9 = SDLK_WORLD_9,
|
||||
KEY_WORLD_10 = SDLK_WORLD_10,
|
||||
KEY_WORLD_11 = SDLK_WORLD_11,
|
||||
KEY_WORLD_12 = SDLK_WORLD_12,
|
||||
KEY_WORLD_13 = SDLK_WORLD_13,
|
||||
KEY_WORLD_14 = SDLK_WORLD_14,
|
||||
KEY_WORLD_15 = SDLK_WORLD_15,
|
||||
KEY_WORLD_16 = SDLK_WORLD_16,
|
||||
KEY_WORLD_17 = SDLK_WORLD_17,
|
||||
KEY_WORLD_18 = SDLK_WORLD_18,
|
||||
KEY_WORLD_19 = SDLK_WORLD_19,
|
||||
KEY_WORLD_20 = SDLK_WORLD_20,
|
||||
KEY_WORLD_21 = SDLK_WORLD_21,
|
||||
KEY_WORLD_22 = SDLK_WORLD_22,
|
||||
KEY_WORLD_23 = SDLK_WORLD_23,
|
||||
KEY_WORLD_24 = SDLK_WORLD_24,
|
||||
KEY_WORLD_25 = SDLK_WORLD_25,
|
||||
KEY_WORLD_26 = SDLK_WORLD_26,
|
||||
KEY_WORLD_27 = SDLK_WORLD_27,
|
||||
KEY_WORLD_28 = SDLK_WORLD_28,
|
||||
KEY_WORLD_29 = SDLK_WORLD_29,
|
||||
KEY_WORLD_30 = SDLK_WORLD_30,
|
||||
KEY_WORLD_31 = SDLK_WORLD_31,
|
||||
KEY_WORLD_32 = SDLK_WORLD_32,
|
||||
KEY_WORLD_33 = SDLK_WORLD_33,
|
||||
KEY_WORLD_34 = SDLK_WORLD_34,
|
||||
KEY_WORLD_35 = SDLK_WORLD_35,
|
||||
KEY_WORLD_36 = SDLK_WORLD_36,
|
||||
KEY_WORLD_37 = SDLK_WORLD_37,
|
||||
KEY_WORLD_38 = SDLK_WORLD_38,
|
||||
KEY_WORLD_39 = SDLK_WORLD_39,
|
||||
KEY_WORLD_40 = SDLK_WORLD_40,
|
||||
KEY_WORLD_41 = SDLK_WORLD_41,
|
||||
KEY_WORLD_42 = SDLK_WORLD_42,
|
||||
KEY_WORLD_43 = SDLK_WORLD_43,
|
||||
KEY_WORLD_44 = SDLK_WORLD_44,
|
||||
KEY_WORLD_45 = SDLK_WORLD_45,
|
||||
KEY_WORLD_46 = SDLK_WORLD_46,
|
||||
KEY_WORLD_47 = SDLK_WORLD_47,
|
||||
KEY_WORLD_48 = SDLK_WORLD_48,
|
||||
KEY_WORLD_49 = SDLK_WORLD_49,
|
||||
KEY_WORLD_50 = SDLK_WORLD_50,
|
||||
KEY_WORLD_51 = SDLK_WORLD_51,
|
||||
KEY_WORLD_52 = SDLK_WORLD_52,
|
||||
KEY_WORLD_53 = SDLK_WORLD_53,
|
||||
KEY_WORLD_54 = SDLK_WORLD_54,
|
||||
KEY_WORLD_55 = SDLK_WORLD_55,
|
||||
KEY_WORLD_56 = SDLK_WORLD_56,
|
||||
KEY_WORLD_57 = SDLK_WORLD_57,
|
||||
KEY_WORLD_58 = SDLK_WORLD_58,
|
||||
KEY_WORLD_59 = SDLK_WORLD_59,
|
||||
KEY_WORLD_60 = SDLK_WORLD_60,
|
||||
KEY_WORLD_61 = SDLK_WORLD_61,
|
||||
KEY_WORLD_62 = SDLK_WORLD_62,
|
||||
KEY_WORLD_63 = SDLK_WORLD_63,
|
||||
KEY_WORLD_64 = SDLK_WORLD_64,
|
||||
KEY_WORLD_65 = SDLK_WORLD_65,
|
||||
KEY_WORLD_66 = SDLK_WORLD_66,
|
||||
KEY_WORLD_67 = SDLK_WORLD_67,
|
||||
KEY_WORLD_68 = SDLK_WORLD_68,
|
||||
KEY_WORLD_69 = SDLK_WORLD_69,
|
||||
KEY_WORLD_70 = SDLK_WORLD_70,
|
||||
KEY_WORLD_71 = SDLK_WORLD_71,
|
||||
KEY_WORLD_72 = SDLK_WORLD_72,
|
||||
KEY_WORLD_73 = SDLK_WORLD_73,
|
||||
KEY_WORLD_74 = SDLK_WORLD_74,
|
||||
KEY_WORLD_75 = SDLK_WORLD_75,
|
||||
KEY_WORLD_76 = SDLK_WORLD_76,
|
||||
KEY_WORLD_77 = SDLK_WORLD_77,
|
||||
KEY_WORLD_78 = SDLK_WORLD_78,
|
||||
KEY_WORLD_79 = SDLK_WORLD_79,
|
||||
KEY_WORLD_80 = SDLK_WORLD_80,
|
||||
KEY_WORLD_81 = SDLK_WORLD_81,
|
||||
KEY_WORLD_82 = SDLK_WORLD_82,
|
||||
KEY_WORLD_83 = SDLK_WORLD_83,
|
||||
KEY_WORLD_84 = SDLK_WORLD_84,
|
||||
KEY_WORLD_85 = SDLK_WORLD_85,
|
||||
KEY_WORLD_86 = SDLK_WORLD_86,
|
||||
KEY_WORLD_87 = SDLK_WORLD_87,
|
||||
KEY_WORLD_88 = SDLK_WORLD_88,
|
||||
KEY_WORLD_89 = SDLK_WORLD_89,
|
||||
KEY_WORLD_90 = SDLK_WORLD_90,
|
||||
KEY_WORLD_91 = SDLK_WORLD_91,
|
||||
KEY_WORLD_92 = SDLK_WORLD_92,
|
||||
KEY_WORLD_93 = SDLK_WORLD_93,
|
||||
KEY_WORLD_94 = SDLK_WORLD_94,
|
||||
KEY_WORLD_95 = SDLK_WORLD_95
|
||||
};
|
||||
|
||||
enum EE_KEY_MOD {
|
||||
KEYMOD_NONE = KMOD_NONE,
|
||||
KEYMOD_LSHIFT = KMOD_LSHIFT,
|
||||
KEYMOD_RSHIFT = KMOD_RSHIFT,
|
||||
KEYMOD_LCTRL = KMOD_LCTRL,
|
||||
KEYMOD_RCTRL = KMOD_RCTRL,
|
||||
KEYMOD_LALT = KMOD_LALT,
|
||||
KEYMOD_RALT = KMOD_RALT,
|
||||
KEYMOD_LMETA = KMOD_LMETA,
|
||||
KEYMOD_RMETA = KMOD_RMETA,
|
||||
KEYMOD_NUM = KMOD_NUM,
|
||||
KEYMOD_CAPS = KMOD_CAPS,
|
||||
KEYMOD_MODE = KMOD_MODE,
|
||||
KEYMOD_RESERVED = KMOD_RESERVED
|
||||
};
|
||||
|
||||
#define KEYMOD_CTRL ( KEYMOD_LCTRL | KEYMOD_RCTRL )
|
||||
#define KEYMOD_SHIFT ( KEYMOD_LSHIFT | KEYMOD_RSHIFT )
|
||||
#define KEYMOD_ALT ( KEYMOD_LALT | KEYMOD_RALT )
|
||||
#define KEYMOD_META ( KEYMOD_LMETA | KEYMOD_RMETA )
|
||||
|
||||
}}
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user