mirror of
				https://github.com/vcmi/vcmi.git
				synced 2025-10-31 00:07:39 +02:00 
			
		
		
		
	fix shortcut modifier
This commit is contained in:
		| @@ -32,15 +32,22 @@ InputSourceKeyboard::InputSourceKeyboard() | ||||
| #endif | ||||
| } | ||||
|  | ||||
| std::string InputSourceKeyboard::getKeyNameWithModifiers(const std::string & keyName) const | ||||
| std::string InputSourceKeyboard::getKeyNameWithModifiers(const std::string & keyName, bool keyUp) | ||||
| { | ||||
| 	std::string result; | ||||
|  | ||||
| 	if (isKeyboardCtrlDown()) | ||||
| 	if(!keyUp) | ||||
| 	{ | ||||
| 		wasKeyboardCtrlDown = isKeyboardCtrlDown(); | ||||
| 		wasKeyboardAltDown = isKeyboardAltDown(); | ||||
| 		wasKeyboardShiftDown = isKeyboardShiftDown(); | ||||
| 	} | ||||
|  | ||||
| 	if (wasKeyboardCtrlDown) | ||||
| 		result += "Ctrl+"; | ||||
| 	if (isKeyboardAltDown()) | ||||
| 	if (wasKeyboardAltDown) | ||||
| 		result += "Alt+"; | ||||
| 	if (isKeyboardShiftDown()) | ||||
| 	if (wasKeyboardShiftDown) | ||||
| 		result += "Shift+"; | ||||
| 	result += keyName; | ||||
|  | ||||
| @@ -49,7 +56,7 @@ std::string InputSourceKeyboard::getKeyNameWithModifiers(const std::string & key | ||||
|  | ||||
| void InputSourceKeyboard::handleEventKeyDown(const SDL_KeyboardEvent & key) | ||||
| { | ||||
| 	std::string keyName = getKeyNameWithModifiers(SDL_GetKeyName(key.keysym.sym)); | ||||
| 	std::string keyName = getKeyNameWithModifiers(SDL_GetKeyName(key.keysym.sym), false); | ||||
| 	logGlobal->trace("keyboard: key '%s' pressed", keyName); | ||||
| 	assert(key.state == SDL_PRESSED); | ||||
|  | ||||
| @@ -111,7 +118,7 @@ void InputSourceKeyboard::handleEventKeyUp(const SDL_KeyboardEvent & key) | ||||
| 	if(key.repeat != 0) | ||||
| 		return; // ignore periodic event resends | ||||
|  | ||||
| 	std::string keyName = getKeyNameWithModifiers(SDL_GetKeyName(key.keysym.sym)); | ||||
| 	std::string keyName = getKeyNameWithModifiers(SDL_GetKeyName(key.keysym.sym), true); | ||||
| 	logGlobal->trace("keyboard: key '%s' released", keyName); | ||||
|  | ||||
| 	if (SDL_IsTextInputActive() == SDL_TRUE) | ||||
|   | ||||
| @@ -15,7 +15,11 @@ struct SDL_KeyboardEvent; | ||||
| /// Class that handles keyboard input from SDL events | ||||
| class InputSourceKeyboard | ||||
| { | ||||
| 	std::string getKeyNameWithModifiers(const std::string & keyName) const; | ||||
| 	bool wasKeyboardCtrlDown; | ||||
| 	bool wasKeyboardAltDown; | ||||
| 	bool wasKeyboardShiftDown; | ||||
|  | ||||
| 	std::string getKeyNameWithModifiers(const std::string & keyName, bool keyUp); | ||||
| public: | ||||
| 	InputSourceKeyboard(); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user