- fix special keys in sld2 (like arrow key)

This commit is contained in:
SoftCoder 2015-10-08 17:04:43 -07:00
parent 8991507526
commit 6707343ac4
3 changed files with 28 additions and 24 deletions

View File

@ -4601,6 +4601,8 @@ void Game::keyDown(SDL_KeyboardEvent key) {
return; return;
} }
//printf("In game checking keypress for key [%d]\n",key.keysym.sym);
try { try {
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] key = [%c] [%d] gameStarted [%d]\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__,key.keysym.sym,key.keysym.sym, gameStarted); if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] key = [%c] [%d] gameStarted [%d]\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__,key.keysym.sym,key.keysym.sym, gameStarted);
if(gameStarted == false || totalRenderFps <= 0) { if(gameStarted == false || totalRenderFps <= 0) {
@ -4641,6 +4643,8 @@ void Game::keyDown(SDL_KeyboardEvent key) {
setMarkerKeyAllowsModifier = true; setMarkerKeyAllowsModifier = true;
} }
//printf("In game checking keypress for key [%d] camera left [%d]\n",key.keysym.sym,configKeys.getSDLKey("CameraModeLeft"));
if(isKeyPressed(configKeys.getSDLKey("RenderInGamePerformance"),key, false) == true) { if(isKeyPressed(configKeys.getSDLKey("RenderInGamePerformance"),key, false) == true) {
renderInGamePerformance = !renderInGamePerformance; renderInGamePerformance = !renderInGamePerformance;

View File

@ -1093,6 +1093,8 @@ void MainWindow::toggleLanguage(string language) {
void MainWindow::eventKeyDown(SDL_KeyboardEvent key) { void MainWindow::eventKeyDown(SDL_KeyboardEvent key) {
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] [%d]\n",__FILE__,__FUNCTION__,__LINE__,key.keysym.sym); SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] [%d]\n",__FILE__,__FUNCTION__,__LINE__,key.keysym.sym);
//printf("In mainwindow checking keypress for key [%d]\n",key.keysym.sym);
SDL_keysym keystate = key.keysym; SDL_keysym keystate = key.keysym;
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] key = [%c][%d]\n",__FILE__,__FUNCTION__,__LINE__,key,key); SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] key = [%c][%d]\n",__FILE__,__FUNCTION__,__LINE__,key,key);

View File

@ -79,29 +79,26 @@ static HWND GetSDLWindow()
#endif #endif
static bool isUnprintableChar(SDL_keysym key) static bool isUnprintableChar(SDL_keysym key) {
{ switch (key.sym) {
// U+0000 to U+001F are control characters // We want to allow some, which are handled specially
if (key.sym < 0x20) case SDLK_RETURN:
{ case SDLK_TAB:
switch (key.sym) case SDLK_BACKSPACE:
{ case SDLK_DELETE:
// We want to allow some, which are handled specially case SDLK_HOME:
case SDLK_RETURN: case SDLK_TAB: case SDLK_END:
case SDLK_BACKSPACE: case SDLK_DELETE: case SDLK_LEFT:
case SDLK_HOME: case SDLK_END: case SDLK_RIGHT:
case SDLK_LEFT: case SDLK_RIGHT: case SDLK_UP:
case SDLK_UP: case SDLK_DOWN: case SDLK_DOWN:
case SDLK_PAGEUP: case SDLK_PAGEDOWN: case SDLK_PAGEUP:
return true; case SDLK_PAGEDOWN:
return true;
// Ignore the others default:
default: // U+0000 to U+001F are control characters
return true; return (key.sym < 0x20);
}
} }
return false;
} }
Window::Window() { Window::Window() {
@ -280,7 +277,7 @@ bool Window::handleEvent() {
if(SystemFlags::VERBOSE_MODE_ENABLED) printf ("In [%s::%s Line: %d] Raw SDL key [%d - %c] mod [%d] scancode [%d] keyName [%s]\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__,event.key.keysym.sym,event.key.keysym.sym,event.key.keysym.mod,event.key.keysym.scancode,keyName.c_str()); if(SystemFlags::VERBOSE_MODE_ENABLED) printf ("In [%s::%s Line: %d] Raw SDL key [%d - %c] mod [%d] scancode [%d] keyName [%s]\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__,event.key.keysym.sym,event.key.keysym.sym,event.key.keysym.mod,event.key.keysym.scancode,keyName.c_str());
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] Raw SDL key [%d] mod [%d] scancode [%d] keyName [%s]\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__,event.key.keysym.sym,event.key.keysym.mod,event.key.keysym.scancode,keyName.c_str()); if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] Raw SDL key [%d] mod [%d] scancode [%d] keyName [%s]\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__,event.key.keysym.sym,event.key.keysym.mod,event.key.keysym.scancode,keyName.c_str());
//printf("In SDL_TEXTINPUT key [%s] keyName [%s] mod: %d\n",event.text.text,keyName.c_str(),event.key.keysym.mod); //printf("In SDL_TEXTINPUT key [%s] keyName [%s] mod: %d global_window: %p\n",event.text.text,keyName.c_str(),event.key.keysym.mod,global_window);
/* handle ALT+Return */ /* handle ALT+Return */
if((keyName == "Return" || keyName == "Enter") if((keyName == "Return" || keyName == "Enter")
@ -304,6 +301,7 @@ bool Window::handleEvent() {
//event.key.keysym.mod = SDL_GetModState(); //event.key.keysym.mod = SDL_GetModState();
event.key.keysym.sym = event.text.text[0]; event.key.keysym.sym = event.text.text[0];
global_window->eventKeyDown(event.key); global_window->eventKeyDown(event.key);
global_window->eventKeyPress(event.key); global_window->eventKeyPress(event.key);
@ -331,7 +329,7 @@ bool Window::handleEvent() {
// Stop unprintable characters (ctrl+, alt+ and escape), // Stop unprintable characters (ctrl+, alt+ and escape),
// also prevent ` and/or ~ appearing in console every time it's toggled. // also prevent ` and/or ~ appearing in console every time it's toggled.
if (!isUnprintableChar(event.key.keysym)) { if (!isUnprintableChar(event.key.keysym)) {
//printf("In SDL_KEYDOWN key SKIP\n"); //printf("In SDL_KEYDOWN key SKIP [%d]\n",event.key.keysym.sym);
break; break;
} }
codeLocation = "i"; codeLocation = "i";