Merge pull request #4290 from pchote/text-fix

Attempt to parse unexpected key events as text.
This commit is contained in:
Matthias Mailänder
2013-12-11 09:17:28 -08:00
2 changed files with 16 additions and 7 deletions

View File

@@ -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()

View File

@@ -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;