fix multitap for keyboard events, in a way that doesnt break scrolling etc
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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 );
|
||||||
|
|||||||
Reference in New Issue
Block a user