# HG changeset patch # User Wuzzy # Date 1556662141 -7200 # Node ID 8bba7492558df4ae22ea0d2558acd85886398fe0 # Parent 0c231b5184c5b41080aca875f82b41bceea88cb1 Frontend: Refactor detection of keyboard keys in sdlkeys[] diff -r 0c231b5184c5 -r 8bba7492558d QTfrontend/sdlkeys.cpp --- a/QTfrontend/sdlkeys.cpp Tue Apr 30 22:43:48 2019 +0200 +++ b/QTfrontend/sdlkeys.cpp Wed May 01 00:09:01 2019 +0200 @@ -22,6 +22,7 @@ char sdlkeys[1024][2][128] = { + // Mouse {"mousel", QT_TRANSLATE_NOOP("binds (keys)", "Mouse: Left button")}, {"mousem", QT_TRANSLATE_NOOP("binds (keys)", "Mouse: Middle button")}, {"mouser", QT_TRANSLATE_NOOP("binds (keys)", "Mouse: Right button")}, @@ -29,6 +30,8 @@ {"mousex2", QT_TRANSLATE_NOOP("binds (keys)", "Mouse: X2 button")}, {"wheelup", QT_TRANSLATE_NOOP("binds (keys)", "Mouse: Wheel up")}, {"wheeldown", QT_TRANSLATE_NOOP("binds (keys)", "Mouse: Wheel down")}, + + // Keyboard {"backspace", QT_TRANSLATE_NOOP("binds (keys)", "Backspace")}, {"tab", QT_TRANSLATE_NOOP("binds (keys)", "Tab")}, {"clear", QT_TRANSLATE_NOOP("binds (keys)", "Clear")}, @@ -139,6 +142,9 @@ {"left_gui", QT_TRANSLATE_NOOP("binds (keys)", "Left GUI")} }; +// helper list for sdlkeys. true for keyboard keys, false for other +bool sdlkeys_iskeyboard[1024]; + // button name definitions for Microsoft's XBox360 controller // don't modify button order! char xb360buttons[10][128] = diff -r 0c231b5184c5 -r 8bba7492558d QTfrontend/sdlkeys.h --- a/QTfrontend/sdlkeys.h Tue Apr 30 22:43:48 2019 +0200 +++ b/QTfrontend/sdlkeys.h Wed May 01 00:09:01 2019 +0200 @@ -20,6 +20,7 @@ #define SDLKEYS_H extern char sdlkeys[1024][2][128]; +extern bool sdlkeys_iskeyboard[1024]; extern char xb360buttons[10][128]; extern char xbox360axes[10][128]; extern char xb360dpad[128]; diff -r 0c231b5184c5 -r 8bba7492558d QTfrontend/util/DataManager.cpp --- a/QTfrontend/util/DataManager.cpp Tue Apr 30 22:43:48 2019 +0200 +++ b/QTfrontend/util/DataManager.cpp Wed May 01 00:09:01 2019 +0200 @@ -165,7 +165,7 @@ QStandardItem * item = new QStandardItem(); QString keyId = QString(sdlkeys[j][0]); QString keyDisplay; - bool isKeyboard = !QString(sdlkeys[j][1]).contains(": "); + bool isKeyboard = sdlkeys_iskeyboard[j] == true; if (keyId == "none" || (!isKeyboard)) keyDisplay = HWApplication::translate("binds (keys)", sdlkeys[j][1]); else diff -r 0c231b5184c5 -r 8bba7492558d QTfrontend/util/SDLInteraction.cpp --- a/QTfrontend/util/SDLInteraction.cpp Tue Apr 30 22:43:48 2019 +0200 +++ b/QTfrontend/util/SDLInteraction.cpp Wed May 01 00:09:01 2019 +0200 @@ -50,14 +50,25 @@ m_musicTrack = ""; m_isPlayingMusic = false; lastchannel = 0; + int i; + // Initialize sdlkeys_iskeyboard + for (i=0; i<1024; i++) { + // First 7 entries are mouse buttons (see sdlkeys.cpp) + if ((i > 6) && (sdlkeys[i][0][0] != '\0')) + sdlkeys_iskeyboard[i] = true; + else + sdlkeys_iskeyboard[i] = false; + } + if(SDL_NumJoysticks()) addGameControllerKeys(); - int i = 0; + // Add special "none" key at the end of list + i = 0; while(i < 1024 && sdlkeys[i][1][0] != '\0') i++; sprintf(sdlkeys[i][0], "none"); - sprintf(sdlkeys[i++][1], "%s", HWApplication::translate("binds (keys)", unboundcontrol).toUtf8().constData()); + sprintf(sdlkeys[i][1], "%s", HWApplication::translate("binds (keys)", unboundcontrol).toUtf8().constData()); SDL_QuitSubSystem(SDL_INIT_JOYSTICK);