Skip to content

Commit

Permalink
Merge pull request #4290 from pchote/text-fix
Browse files Browse the repository at this point in the history
Attempt to parse unexpected key events as text.
  • Loading branch information
Mailaender committed Dec 11, 2013
2 parents 0c19912 + 719c9c1 commit f76caa5
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 7 deletions.
6 changes: 0 additions & 6 deletions OpenRA.FileFormats/Exts.cs
Expand Up @@ -82,12 +82,6 @@ public static bool HasModifier(this Modifiers k, Modifiers mod)
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()
Expand Down
17 changes: 16 additions & 1 deletion OpenRA.Renderer.SdlCommon/SdlInput.cs
Expand Up @@ -151,8 +151,16 @@ public class SdlInput
{ 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
Expand Down Expand Up @@ -242,7 +250,14 @@ public void PumpInput(IInputHandler inputHandler)
// 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;
Expand All @@ -269,7 +284,7 @@ public void PumpInput(IInputHandler inputHandler)
else
inputHandler.OnKeyInput(keyEvent);

if (keyEvent.IsValidInput())
if (IsValidInput(keyEvent.UnicodeChar))
inputHandler.OnTextInput(keyEvent.UnicodeChar.ToString());

break;
Expand Down

0 comments on commit f76caa5

Please sign in to comment.