- attempt to fix previous messup with keyboard keys
This commit is contained in:
parent
792d0aa665
commit
c3286bf1a0
|
@ -176,14 +176,14 @@ bool Window::handleEvent() {
|
||||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] Raw SDL key [%d] mod [%d] unicode [%d] scancode [%d] keyName [%s]\n",__FILE__,__FUNCTION__,__LINE__,event.key.keysym.sym,event.key.keysym.mod,event.key.keysym.unicode,event.key.keysym.scancode,keyName.c_str());
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] Raw SDL key [%d] mod [%d] unicode [%d] scancode [%d] keyName [%s]\n",__FILE__,__FUNCTION__,__LINE__,event.key.keysym.sym,event.key.keysym.mod,event.key.keysym.unicode,event.key.keysym.scancode,keyName.c_str());
|
||||||
|
|
||||||
/* handle ALT+Return */
|
/* handle ALT+Return */
|
||||||
if(event.key.keysym.unicode == SDLK_RETURN
|
if(keyName == "return"
|
||||||
&& (event.key.keysym.mod & (KMOD_LALT | KMOD_RALT))) {
|
&& (event.key.keysym.mod & (KMOD_LALT | KMOD_RALT))) {
|
||||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d] SDLK_RETURN pressed.\n",__FILE__,__FUNCTION__,__LINE__);
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s %d] SDLK_RETURN pressed.\n",__FILE__,__FUNCTION__,__LINE__);
|
||||||
toggleFullscreen();
|
toggleFullscreen();
|
||||||
}
|
}
|
||||||
if(global_window) {
|
if(global_window) {
|
||||||
global_window->eventKeyDown(getKey(event.key.keysym,true));
|
global_window->eventKeyDown(getKey(event.key.keysym,true));
|
||||||
global_window->eventKeyPress(static_cast<char>(event.key.keysym.unicode));
|
global_window->eventKeyPress(static_cast<char>(event.key.keysym.sym));
|
||||||
|
|
||||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||||
}
|
}
|
||||||
|
@ -590,18 +590,19 @@ MouseButton Window::getMouseButton(int sdlButton) {
|
||||||
char Window::getKey(SDL_keysym keysym,bool skipSpecialKeys) {
|
char Window::getKey(SDL_keysym keysym,bool skipSpecialKeys) {
|
||||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] keysym.sym [%d] skipSpecialKeys = %d.\n",__FILE__,__FUNCTION__,__LINE__,keysym.sym,skipSpecialKeys);
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d] keysym.sym [%d] skipSpecialKeys = %d.\n",__FILE__,__FUNCTION__,__LINE__,keysym.sym,skipSpecialKeys);
|
||||||
|
|
||||||
|
string keyName = SDL_GetKeyName(keysym.sym);
|
||||||
|
|
||||||
if(skipSpecialKeys == false) {
|
if(skipSpecialKeys == false) {
|
||||||
switch(keysym.unicode) {
|
if(keyName == "left alt" || keyName == "right alt") {
|
||||||
case SDLK_LALT:
|
return vkAlt;
|
||||||
case SDLK_RALT:
|
|
||||||
return vkAlt;
|
|
||||||
case SDLK_LCTRL:
|
|
||||||
case SDLK_RCTRL:
|
|
||||||
return vkControl;
|
|
||||||
case SDLK_LSHIFT:
|
|
||||||
case SDLK_RSHIFT:
|
|
||||||
return vkShift;
|
|
||||||
}
|
}
|
||||||
|
else if(keyName == "left ctrl" || keyName == "right ctrl") {
|
||||||
|
return vkControl;
|
||||||
|
}
|
||||||
|
else if(keyName == "left shift" || keyName == "right shift") {
|
||||||
|
return vkShift;
|
||||||
|
}
|
||||||
|
|
||||||
if(keysym.mod & (KMOD_LALT | KMOD_RALT)) {
|
if(keysym.mod & (KMOD_LALT | KMOD_RALT)) {
|
||||||
return vkAlt;
|
return vkAlt;
|
||||||
}
|
}
|
||||||
|
@ -612,147 +613,193 @@ char Window::getKey(SDL_keysym keysym,bool skipSpecialKeys) {
|
||||||
return vkShift;
|
return vkShift;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
switch(keysym.unicode) {
|
if(keyName == "plus sign" || keyName == "keypad plus") {
|
||||||
case SDLK_PLUS:
|
return vkAdd;
|
||||||
case SDLK_KP_PLUS:
|
}
|
||||||
return vkAdd;
|
if(keyName == "minus sign" || keyName == "keypad minus") {
|
||||||
case SDLK_MINUS:
|
return vkSubtract;
|
||||||
case SDLK_KP_MINUS:
|
}
|
||||||
return vkSubtract;
|
if(keyName == "escape") {
|
||||||
case SDLK_ESCAPE:
|
return vkEscape;
|
||||||
return vkEscape;
|
}
|
||||||
case SDLK_UP:
|
if(keyName == "up arrow") {
|
||||||
return vkUp;
|
return vkUp;
|
||||||
case SDLK_LEFT:
|
}
|
||||||
return vkLeft;
|
if(keyName == "left arrow") {
|
||||||
case SDLK_RIGHT:
|
return vkLeft;
|
||||||
return vkRight;
|
}
|
||||||
case SDLK_DOWN:
|
if(keyName == "right arrow") {
|
||||||
return vkDown;
|
return vkRight;
|
||||||
case SDLK_RETURN:
|
}
|
||||||
case SDLK_KP_ENTER:
|
if(keyName == "down arrow") {
|
||||||
return vkReturn;
|
return vkDown;
|
||||||
case SDLK_TAB:
|
}
|
||||||
return vkTab;
|
if(keyName == "return" || keyName == "keypad enter") {
|
||||||
case SDLK_BACKSPACE:
|
return vkReturn;
|
||||||
return vkBack;
|
}
|
||||||
case SDLK_DELETE:
|
if(keyName == "tab") {
|
||||||
return vkDelete;
|
return vkTab;
|
||||||
case SDLK_PRINT:
|
}
|
||||||
return vkPrint;
|
if(keyName == "backspace") {
|
||||||
case SDLK_PAUSE:
|
return vkBack;
|
||||||
return vkPause;
|
}
|
||||||
case SDLK_F1:
|
if(keyName == "delete") {
|
||||||
return vkF1;
|
return vkDelete;
|
||||||
break;
|
}
|
||||||
case SDLK_F2:
|
if(keyName == "print-screen") {
|
||||||
return vkF2;
|
return vkPrint;
|
||||||
break;
|
}
|
||||||
case SDLK_F3:
|
if(keyName == "pause") {
|
||||||
return vkF3;
|
return vkPause;
|
||||||
break;
|
}
|
||||||
case SDLK_F4:
|
if(keyName == "F1") {
|
||||||
return vkF4;
|
return vkF1;
|
||||||
break;
|
}
|
||||||
case SDLK_F5:
|
if(keyName == "F2") {
|
||||||
return vkF5;
|
return vkF2;
|
||||||
break;
|
}
|
||||||
case SDLK_F6:
|
if(keyName == "F3") {
|
||||||
return vkF6;
|
return vkF3;
|
||||||
break;
|
}
|
||||||
case SDLK_F7:
|
if(keyName == "F4") {
|
||||||
return vkF7;
|
return vkF4;
|
||||||
break;
|
}
|
||||||
case SDLK_F8:
|
if(keyName == "F5") {
|
||||||
return vkF8;
|
return vkF5;
|
||||||
break;
|
}
|
||||||
case SDLK_F9:
|
if(keyName == "F6") {
|
||||||
return vkF9;
|
return vkF6;
|
||||||
break;
|
}
|
||||||
case SDLK_F10:
|
if(keyName == "F7") {
|
||||||
return vkF10;
|
return vkF7;
|
||||||
break;
|
}
|
||||||
case SDLK_F11:
|
if(keyName == "F8") {
|
||||||
return vkF11;
|
return vkF8;
|
||||||
break;
|
}
|
||||||
case SDLK_F12:
|
if(keyName == "F9") {
|
||||||
return vkF12;
|
return vkF9;
|
||||||
break;
|
}
|
||||||
case SDLK_0:
|
if(keyName == "F10") {
|
||||||
return '0';
|
return vkF10;
|
||||||
case SDLK_1:
|
}
|
||||||
return '1';
|
if(keyName == "F11") {
|
||||||
case SDLK_2:
|
return vkF11;
|
||||||
return '2';
|
}
|
||||||
case SDLK_3:
|
if(keyName == "F12") {
|
||||||
return '3';
|
return vkF12;
|
||||||
case SDLK_4:
|
}
|
||||||
return '4';
|
if(keyName == "0") {
|
||||||
case SDLK_5:
|
return '0';
|
||||||
return '5';
|
}
|
||||||
case SDLK_6:
|
if(keyName == "1") {
|
||||||
return '6';
|
return '1';
|
||||||
case SDLK_7:
|
}
|
||||||
return '7';
|
if(keyName == "2") {
|
||||||
case SDLK_8:
|
return '2';
|
||||||
return '8';
|
}
|
||||||
case SDLK_9:
|
if(keyName == "3") {
|
||||||
return '9';
|
return '3';
|
||||||
case SDLK_QUESTION:
|
}
|
||||||
return '?';
|
if(keyName == "4") {
|
||||||
case SDLK_a:
|
return '4';
|
||||||
return 'A';
|
}
|
||||||
case SDLK_b:
|
if(keyName == "5") {
|
||||||
return 'B';
|
return '5';
|
||||||
case SDLK_c:
|
}
|
||||||
return 'C';
|
if(keyName == "6") {
|
||||||
case SDLK_d:
|
return '6';
|
||||||
return 'D';
|
}
|
||||||
case SDLK_e:
|
if(keyName == "7") {
|
||||||
return 'E';
|
return '7';
|
||||||
case SDLK_f:
|
}
|
||||||
return 'F';
|
if(keyName == "8") {
|
||||||
case SDLK_g:
|
return '8';
|
||||||
return 'G';
|
}
|
||||||
case SDLK_h:
|
if(keyName == "9") {
|
||||||
return 'H';
|
return '9';
|
||||||
case SDLK_i:
|
}
|
||||||
return 'I';
|
if(keyName == "question mark") {
|
||||||
case SDLK_j:
|
return '?';
|
||||||
return 'J';
|
}
|
||||||
case SDLK_k:
|
if(keyName == "a") {
|
||||||
return 'K';
|
return 'A';
|
||||||
case SDLK_l:
|
}
|
||||||
return 'L';
|
if(keyName == "b") {
|
||||||
case SDLK_m:
|
return 'B';
|
||||||
return 'M';
|
}
|
||||||
case SDLK_n:
|
if(keyName == "c") {
|
||||||
return 'N';
|
return 'C';
|
||||||
case SDLK_o:
|
}
|
||||||
return 'O';
|
if(keyName == "d") {
|
||||||
case SDLK_p:
|
return 'D';
|
||||||
return 'P';
|
}
|
||||||
case SDLK_q:
|
if(keyName == "e") {
|
||||||
return 'Q';
|
return 'E';
|
||||||
case SDLK_r:
|
}
|
||||||
return 'R';
|
if(keyName == "f") {
|
||||||
case SDLK_s:
|
return 'F';
|
||||||
return 'S';
|
}
|
||||||
case SDLK_t:
|
if(keyName == "g") {
|
||||||
return 'T';
|
return 'G';
|
||||||
case SDLK_u:
|
}
|
||||||
return 'U';
|
if(keyName == "h") {
|
||||||
case SDLK_v:
|
return 'H';
|
||||||
return 'V';
|
}
|
||||||
case SDLK_w:
|
if(keyName == "i") {
|
||||||
return 'W';
|
return 'I';
|
||||||
case SDLK_x:
|
}
|
||||||
return 'X';
|
if(keyName == "j") {
|
||||||
case SDLK_y:
|
return 'J';
|
||||||
return 'Y';
|
}
|
||||||
case SDLK_z:
|
if(keyName == "k") {
|
||||||
return 'Z';
|
return 'K';
|
||||||
default:
|
}
|
||||||
|
if(keyName == "l") {
|
||||||
|
return 'L';
|
||||||
|
}
|
||||||
|
if(keyName == "m") {
|
||||||
|
return 'M';
|
||||||
|
}
|
||||||
|
if(keyName == "n") {
|
||||||
|
return 'N';
|
||||||
|
}
|
||||||
|
if(keyName == "o") {
|
||||||
|
return 'O';
|
||||||
|
}
|
||||||
|
if(keyName == "p") {
|
||||||
|
return 'P';
|
||||||
|
}
|
||||||
|
if(keyName == "q") {
|
||||||
|
return 'Q';
|
||||||
|
}
|
||||||
|
if(keyName == "r") {
|
||||||
|
return 'R';
|
||||||
|
}
|
||||||
|
if(keyName == "s") {
|
||||||
|
return 'S';
|
||||||
|
}
|
||||||
|
if(keyName == "t") {
|
||||||
|
return 'T';
|
||||||
|
}
|
||||||
|
if(keyName == "u") {
|
||||||
|
return 'U';
|
||||||
|
}
|
||||||
|
if(keyName == "v") {
|
||||||
|
return 'V';
|
||||||
|
}
|
||||||
|
if(keyName == "w") {
|
||||||
|
return 'W';
|
||||||
|
}
|
||||||
|
if(keyName == "x") {
|
||||||
|
return 'X';
|
||||||
|
}
|
||||||
|
if(keyName == "y") {
|
||||||
|
return 'Y';
|
||||||
|
}
|
||||||
|
if(keyName == "z") {
|
||||||
|
return 'Z';
|
||||||
|
}
|
||||||
|
else {
|
||||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||||
Uint16 c = keysym.unicode;
|
Uint16 c = keysym.unicode;
|
||||||
if((c & 0xFF80) == 0) {
|
if((c & 0xFF80) == 0) {
|
||||||
|
@ -764,7 +811,7 @@ char Window::getKey(SDL_keysym keysym,bool skipSpecialKeys) {
|
||||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
|
||||||
|
|
||||||
if(skipSpecialKeys == true) {
|
if(skipSpecialKeys == true) {
|
||||||
switch(keysym.unicode) {
|
switch(keysym.sym) {
|
||||||
case SDLK_LALT:
|
case SDLK_LALT:
|
||||||
case SDLK_RALT:
|
case SDLK_RALT:
|
||||||
return vkAlt;
|
return vkAlt;
|
||||||
|
@ -787,12 +834,11 @@ char Window::getKey(SDL_keysym keysym,bool skipSpecialKeys) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
c = keysym.unicode;
|
c = keysym.sym;
|
||||||
}
|
}
|
||||||
|
|
||||||
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %u] c = [%d]\n",__FILE__,__FUNCTION__,__LINE__,c);
|
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %u] c = [%d]\n",__FILE__,__FUNCTION__,__LINE__,c);
|
||||||
return (c & 0xFF);
|
return (c & 0xFF);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user