fix multitap for keyboard events, in a way that doesnt break scrolling etc

This commit is contained in:
Chris Forbes
2011-10-10 13:07:31 +13:00
parent 3027c9d6f2
commit dc8726a6a0
3 changed files with 7 additions and 7 deletions

View File

@@ -70,5 +70,6 @@ namespace OpenRA
public string KeyName; public string KeyName;
public Modifiers Modifiers; public Modifiers Modifiers;
public int VirtKey; public int VirtKey;
public int MultiTapCount;
} }
} }

View File

@@ -26,13 +26,10 @@ public static class MultiTapDetection
return clickHistory.GetTapCount(xy); return clickHistory.GetTapCount(xy);
} }
static readonly string[] KeyNameModifiers = new [] { "", "", "DoubleTapOf_", "TripleTapOf_" }; public static int DetectFromKeyboard(string KeyName)
public static string DetectFromKeyboard(string KeyName)
{ {
var keyHistory = KeyHistoryCache[KeyName]; var keyHistory = KeyHistoryCache[KeyName];
var count = keyHistory.GetTapCount(int2.Zero); return keyHistory.GetTapCount(int2.Zero);
return KeyNameModifiers[count];
} }
} }

View File

@@ -116,14 +116,16 @@ namespace OpenRA.Renderer.SdlCommon
case Sdl.SDL_KEYUP: case Sdl.SDL_KEYUP:
{ {
var keyName = Sdl.SDL_GetKeyName( e.key.keysym.sym );
var keyEvent = new KeyInput var keyEvent = new KeyInput
{ {
Event = KeyInputEvent.Up, Event = KeyInputEvent.Up,
Modifiers = mods, Modifiers = mods,
UnicodeChar = (char)e.key.keysym.unicode, UnicodeChar = (char)e.key.keysym.unicode,
// KeyName = MultiTapDetection.DetectFromKeyboard(Sdl.SDL_GetKeyName( e.key.keysym.sym )),
KeyName = Sdl.SDL_GetKeyName( e.key.keysym.sym ), KeyName = Sdl.SDL_GetKeyName( e.key.keysym.sym ),
VirtKey = e.key.keysym.sym VirtKey = e.key.keysym.sym,
MultiTapCount = MultiTapDetection.DetectFromKeyboard(keyName)
}; };
inputHandler.OnKeyInput( keyEvent ); inputHandler.OnKeyInput( keyEvent );