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 <marius.ungureanu@xamarin.com>2022-03-03 17:40:23 +0300
committerGitHub <noreply@github.com>2022-03-03 17:40:23 +0300
commit5a0fb30747192a577a5abf27772becc172a4d135 (patch)
treeece1eaca0390a40e0dc6a5e93f3ccf5ba891c976
parent45d2cb2c968afceabdb1cb8bf9200a5603fbda6c (diff)
parentfd28876f98e55dff8e94d8fcc425d9cb5102a08f (diff)
Merge pull request #1088 from mono/dev/therzok/keycode-fixes
Fix up KeyboardUtil so it doesn't marshal strings unnecessarily multi…
-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;