Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/xwt.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius Ungureanu <maungu@microsoft.com>2022-03-02 07:35:24 +0300
committerMarius Ungureanu <maungu@microsoft.com>2022-03-02 07:39:40 +0300
commitfd28876f98e55dff8e94d8fcc425d9cb5102a08f (patch)
tree047bbf086f9257db07425cbe970688bf1d920abf
parent81dae1389134703ef4764f7b49b0f54ea9467b36 (diff)
Fix up KeyboardUtil so it doesn't do interop unnecessarily
-rw-r--r--Xwt.XamMac/Xwt.Mac/KeyboardUtil.cs23
1 files changed, 9 insertions, 14 deletions
diff --git a/Xwt.XamMac/Xwt.Mac/KeyboardUtil.cs b/Xwt.XamMac/Xwt.Mac/KeyboardUtil.cs
index a2e317da..8fd72784 100644
--- a/Xwt.XamMac/Xwt.Mac/KeyboardUtil.cs
+++ b/Xwt.XamMac/Xwt.Mac/KeyboardUtil.cs
@@ -33,19 +33,16 @@ namespace Xwt.Mac
{
public static KeyEventArgs ToXwtKeyEventArgs (this NSEvent keyEvent)
{
- NSEventModifierMask mask;
- Key key = GetXwtKey(keyEvent, out mask);
- ModifierKeys mod = mask.ToXwtValue ();
- return new KeyEventArgs (key, keyEvent.KeyCode, mod, keyEvent.IsARepeat, (long)TimeSpan.FromSeconds (keyEvent.Timestamp).TotalMilliseconds, keyEvent.Characters, keyEvent.CharactersIgnoringModifiers, keyEvent);
+ var characters = keyEvent.Characters;
+ var charactersIgnoringModifiers = keyEvent.CharactersIgnoringModifiers;
+ var keyCode = keyEvent.KeyCode;
+ var modifierFlags = keyEvent.ModifierFlags;
+
+ Key key = GetXwtKey(keyCode);
+ return new KeyEventArgs (key, keyCode, modifierFlags.ToXwtValue(), keyEvent.IsARepeat, (long)TimeSpan.FromSeconds (keyEvent.Timestamp).TotalMilliseconds, characters, charactersIgnoringModifiers, keyEvent);
}
- static Key RemoveShift(Key key, ref NSEventModifierMask mask)
- {
- mask &= ~NSEventModifierMask.ShiftKeyMask;
- return key;
- }
-
- static Key GetXwtKey (NSEvent keyEvent, out NSEventModifierMask modMask)
+ static Key GetXwtKey (ushort keyCode)
{
// NSEvent.KeyCode is the physical key pressed according to an ANSI US keyboard.
// With this pressing the м key on a Cyrillac keyboard or ㅍ in Korean both return v
@@ -54,10 +51,8 @@ namespace Xwt.Mac
// For compatibility reasons the Key field parses Characters/CharactersIgnoringModifiers into a
// Xwt.Key enum value, but most of unicode characters are not parsed so KeyEventArgs.Key probably
// should be considered obsolete.
- modMask = keyEvent.ModifierFlags;
-
// special keys
- switch (keyEvent.KeyCode) {
+ switch (keyCode) {
case 0: return Key.a;
case 1: return Key.s;
case 2: return Key.d;