Merge pull request #4290 from pchote/text-fix
Attempt to parse unexpected key events as text.
This commit is contained in:
@@ -82,12 +82,6 @@ namespace OpenRA
|
||||
return (k & mod) == mod;
|
||||
}
|
||||
|
||||
public static bool IsValidInput(this KeyInput key)
|
||||
{
|
||||
return char.IsLetter(key.UnicodeChar) || char.IsDigit(key.UnicodeChar) ||
|
||||
char.IsSymbol(key.UnicodeChar) || char.IsSeparator(key.UnicodeChar) ||
|
||||
char.IsPunctuation(key.UnicodeChar);
|
||||
}
|
||||
|
||||
public static V GetOrAdd<K, V>(this Dictionary<K, V> d, K k)
|
||||
where V : new()
|
||||
|
||||
@@ -151,8 +151,16 @@ namespace OpenRA.Renderer.SdlCommon
|
||||
{ Sdl.SDLK_UNDO, Keycode.UNDO },
|
||||
};
|
||||
|
||||
|
||||
MouseButton lastButtonBits = (MouseButton)0;
|
||||
|
||||
static bool IsValidInput(char c)
|
||||
{
|
||||
return char.IsLetter(c) || char.IsDigit(c) ||
|
||||
char.IsSymbol(c) || char.IsSeparator(c) ||
|
||||
char.IsPunctuation(c);
|
||||
}
|
||||
|
||||
MouseButton MakeButton(byte b)
|
||||
{
|
||||
return b == Sdl.SDL_BUTTON_LEFT ? MouseButton.Left
|
||||
@@ -242,7 +250,14 @@ namespace OpenRA.Renderer.SdlCommon
|
||||
// Drop unknown keys
|
||||
Keycode keyCode;
|
||||
if (!KeyRemap.TryGetValue(e.key.keysym.sym, out keyCode))
|
||||
{
|
||||
// Try parsing it as text
|
||||
var c = (char)e.key.keysym.unicode;
|
||||
if (IsValidInput(c))
|
||||
inputHandler.OnTextInput(c.ToString());
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
var type = e.type == Sdl.SDL_KEYDOWN ?
|
||||
KeyInputEvent.Down : KeyInputEvent.Up;
|
||||
@@ -269,7 +284,7 @@ namespace OpenRA.Renderer.SdlCommon
|
||||
else
|
||||
inputHandler.OnKeyInput(keyEvent);
|
||||
|
||||
if (keyEvent.IsValidInput())
|
||||
if (IsValidInput(keyEvent.UnicodeChar))
|
||||
inputHandler.OnTextInput(keyEvent.UnicodeChar.ToString());
|
||||
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user