- more keyboard bugfixes so some special keys above 255 work
This commit is contained in:
parent
4874d31ddd
commit
f07b7a3603
|
@ -457,7 +457,6 @@ char Config::translateStringToCharKey(const string &value) const {
|
|||
else if(value == "vkPause") {
|
||||
result = vkPause;
|
||||
}
|
||||
|
||||
else {
|
||||
string sError = "Unsupported key translation [" + value + "]";
|
||||
throw runtime_error(sError.c_str());
|
||||
|
@ -468,7 +467,92 @@ char Config::translateStringToCharKey(const string &value) const {
|
|||
result = value[1];
|
||||
}
|
||||
else {
|
||||
result = value[0];
|
||||
bool foundKey = false;
|
||||
if(value.length() > 1) {
|
||||
for(int i = SDLK_UNKNOWN; i < SDLK_LAST; ++i) {
|
||||
SDLKey key = static_cast<SDLKey>(i);
|
||||
string keyName = SDL_GetKeyName(key);
|
||||
if(value == keyName) {
|
||||
if(key > 255) {
|
||||
if(value == "left") {
|
||||
result = vkLeft;
|
||||
}
|
||||
else if(value == "right") {
|
||||
result = vkRight;
|
||||
}
|
||||
else if(value == "up") {
|
||||
result = vkUp;
|
||||
}
|
||||
else if(value == "down") {
|
||||
result = vkDown;
|
||||
}
|
||||
else if(value == "add") {
|
||||
result = vkAdd;
|
||||
}
|
||||
else if(value == "subtract") {
|
||||
result = vkSubtract;
|
||||
}
|
||||
else if(value == "escape") {
|
||||
result = vkEscape;
|
||||
}
|
||||
else if(value == "f1") {
|
||||
result = vkF1;
|
||||
}
|
||||
else if(value == "f2") {
|
||||
result = vkF2;
|
||||
}
|
||||
else if(value == "f3") {
|
||||
result = vkF3;
|
||||
}
|
||||
else if(value == "f4") {
|
||||
result = vkF4;
|
||||
}
|
||||
else if(value == "f5") {
|
||||
result = vkF5;
|
||||
}
|
||||
else if(value == "f6") {
|
||||
result = vkF6;
|
||||
}
|
||||
else if(value == "f7") {
|
||||
result = vkF7;
|
||||
}
|
||||
else if(value == "f8") {
|
||||
result = vkF8;
|
||||
}
|
||||
else if(value == "f9") {
|
||||
result = vkF9;
|
||||
}
|
||||
else if(value == "f10") {
|
||||
result = vkF10;
|
||||
}
|
||||
else if(value == "f11") {
|
||||
result = vkF11;
|
||||
}
|
||||
else if(value == "f12") {
|
||||
result = vkF12;
|
||||
}
|
||||
else if(value == "print-screen") {
|
||||
result = vkPrint;
|
||||
}
|
||||
else if(value == "pause") {
|
||||
result = vkPause;
|
||||
}
|
||||
else {
|
||||
result = -key;
|
||||
}
|
||||
}
|
||||
else {
|
||||
result = key;
|
||||
}
|
||||
foundKey = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(foundKey == false) {
|
||||
result = value[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -331,20 +331,28 @@ void MenuStateKeysetup::keyUp(char key) {
|
|||
if(hotkeyIndex >= 0) {
|
||||
if(hotkeyChar != 0) {
|
||||
string keyName = SDL_GetKeyName(static_cast<SDLKey>(hotkeyChar));
|
||||
|
||||
key = hotkeyChar;
|
||||
|
||||
if(SystemFlags::VERBOSE_MODE_ENABLED) printf ("In [%s::%s Line: %d] keyName [%s] char [%d][%d]\n",__FILE__,__FUNCTION__,__LINE__,keyName.c_str(),hotkeyChar,key);
|
||||
|
||||
SDLKey keysym = SDLK_UNKNOWN;
|
||||
if(keyName == "unknown key") {
|
||||
Config &configKeys = Config::getInstance(std::pair<ConfigType,ConfigType>(cfgMainKeys,cfgUserKeys));
|
||||
SDLKey keysym = configKeys.translateSpecialStringToSDLKey(hotkeyChar);
|
||||
keysym = configKeys.translateSpecialStringToSDLKey(hotkeyChar);
|
||||
|
||||
if(SystemFlags::VERBOSE_MODE_ENABLED) printf ("In [%s::%s Line: %d] keysym [%d]\n",__FILE__,__FUNCTION__,__LINE__,keysym);
|
||||
|
||||
// SDL skips capital letters
|
||||
if(keysym >= 65 && keysym <= 90) {
|
||||
keysym = (SDLKey)((int)keysym + 32);
|
||||
}
|
||||
key = keysym;
|
||||
if(keysym < 255) {
|
||||
key = keysym;
|
||||
}
|
||||
keyName = SDL_GetKeyName(keysym);
|
||||
}
|
||||
|
||||
if(SystemFlags::VERBOSE_MODE_ENABLED) printf ("In [%s::%s Line: %d] keyName [%s] char [%d]\n",__FILE__,__FUNCTION__,__LINE__,keyName.c_str(),hotkeyChar);
|
||||
if(SystemFlags::VERBOSE_MODE_ENABLED) printf ("In [%s::%s Line: %d] keyName [%s] char [%d][%d]\n",__FILE__,__FUNCTION__,__LINE__,keyName.c_str(),hotkeyChar,key);
|
||||
|
||||
if(keyName != "unknown key") {
|
||||
GraphicLabel *label= labels[hotkeyIndex];
|
||||
|
@ -355,15 +363,25 @@ void MenuStateKeysetup::keyUp(char key) {
|
|||
for(int i = 0; i < userProperties.size(); ++i) {
|
||||
string hotKeyName = userProperties[i].first;
|
||||
if(nameValuePair.first == hotKeyName) {
|
||||
userProperties[i].second = "";
|
||||
userProperties[i].second.push_back(key);
|
||||
if(keysym > 255) {
|
||||
userProperties[i].second = keyName;
|
||||
}
|
||||
else {
|
||||
userProperties[i].second = "";
|
||||
userProperties[i].second.push_back(key);
|
||||
}
|
||||
isNewUserKeyEntry = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(isNewUserKeyEntry == true) {
|
||||
pair<string,string> newNameValuePair = nameValuePair;
|
||||
newNameValuePair.second = key;
|
||||
if(keysym > 255) {
|
||||
newNameValuePair.second = keyName;
|
||||
}
|
||||
else {
|
||||
newNameValuePair.second = key;
|
||||
}
|
||||
userProperties.push_back(newNameValuePair);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -633,7 +633,12 @@ char Window::getRawKey(SDL_keysym keysym) {
|
|||
char Window::getNormalKey(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);
|
||||
|
||||
SDLKey unicodeKey = static_cast<SDLKey>(getRawKey(keysym));
|
||||
//SDLKey unicodeKey = static_cast<SDLKey>(getRawKey(keysym));
|
||||
char c = getRawKey(keysym);
|
||||
SDLKey unicodeKey;
|
||||
if(c > SDLK_UNKNOWN && c < SDLK_LAST) {
|
||||
unicodeKey = static_cast<SDLKey>(c);
|
||||
}
|
||||
if(unicodeKey == 0) {
|
||||
unicodeKey = keysym.sym;
|
||||
}
|
||||
|
@ -709,40 +714,40 @@ char Window::getNormalKey(SDL_keysym keysym,bool skipSpecialKeys) {
|
|||
return ' ';
|
||||
}
|
||||
|
||||
if(keyName == "f1") {
|
||||
if(keyName == "f1" || keyName == "F1") {
|
||||
return vkF1;
|
||||
}
|
||||
if(keyName == "f2") {
|
||||
if(keyName == "f2" || keyName == "F2") {
|
||||
return vkF2;
|
||||
}
|
||||
if(keyName == "f3") {
|
||||
if(keyName == "f3" || keyName == "F3") {
|
||||
return vkF3;
|
||||
}
|
||||
if(keyName == "f4") {
|
||||
if(keyName == "f4" || keyName == "F4") {
|
||||
return vkF4;
|
||||
}
|
||||
if(keyName == "f5") {
|
||||
if(keyName == "f5" || keyName == "F5") {
|
||||
return vkF5;
|
||||
}
|
||||
if(keyName == "f6") {
|
||||
if(keyName == "f6" || keyName == "F6") {
|
||||
return vkF6;
|
||||
}
|
||||
if(keyName == "f7") {
|
||||
if(keyName == "f7" || keyName == "F7") {
|
||||
return vkF7;
|
||||
}
|
||||
if(keyName == "f8") {
|
||||
if(keyName == "f8" || keyName == "F8") {
|
||||
return vkF8;
|
||||
}
|
||||
if(keyName == "f9") {
|
||||
if(keyName == "f9" || keyName == "F9") {
|
||||
return vkF9;
|
||||
}
|
||||
if(keyName == "f10") {
|
||||
if(keyName == "f10" || keyName == "F10") {
|
||||
return vkF10;
|
||||
}
|
||||
if(keyName == "f11") {
|
||||
if(keyName == "f11" || keyName == "F11") {
|
||||
return vkF11;
|
||||
}
|
||||
if(keyName == "f12") {
|
||||
if(keyName == "f12" || keyName == "F12") {
|
||||
return vkF12;
|
||||
}
|
||||
if(keyName == "0") {
|
||||
|
|
Loading…
Reference in New Issue