private OSStatus ProcessKeyboardEvent(IntPtr inCaller, IntPtr inEvent, EventInfo evt, IntPtr userData) { System.Diagnostics.Debug.Assert(evt.EventClass == EventClass.Keyboard); MacOSKeyCode code = (MacOSKeyCode)0; char charCode = '\0'; switch (evt.KeyboardEventKind) { case KeyboardEventKind.RawKeyDown: case KeyboardEventKind.RawKeyRepeat: case KeyboardEventKind.RawKeyUp: GetCharCodes(inEvent, out code, out charCode); mKeyPressArgs.KeyChar = charCode; break; } OpenTK.Input.Key key; switch (evt.KeyboardEventKind) { case KeyboardEventKind.RawKeyRepeat: if (InputDriver.Keyboard[0].KeyRepeat) { goto case KeyboardEventKind.RawKeyDown; } break; case KeyboardEventKind.RawKeyDown: Keymap.TryGetValue(code, out key); // Legacy keyboard API InputDriver.Keyboard[0].SetKey(key, (uint)code, true); // Raise KeyDown for new keyboard API mKeyDownArgs.Key = key; KeyDown(this, mKeyDownArgs); // Raise KeyPress for new keyboard API if (!Char.IsControl(mKeyPressArgs.KeyChar)) { OnKeyPress(mKeyPressArgs); } return(OSStatus.NoError); case KeyboardEventKind.RawKeyUp: Keymap.TryGetValue(code, out key); // Legacy keyboard API InputDriver.Keyboard[0].SetKey(key, (uint)code, false); // Raise KeyUp for new keyboard API mKeyUpArgs.Key = key; KeyUp(this, mKeyUpArgs); return(OSStatus.NoError); case KeyboardEventKind.RawKeyModifiersChanged: ProcessModifierKey(inEvent); return(OSStatus.NoError); } return(OSStatus.EventNotHandled); }
void ProcessKey(MacOSKeyCode code, bool pressed) { if (pressed) { ProcessKeyDown(code); } else { ProcessKeyUp(code); } }
private OSStatus ProcessKeyboardEvent(IntPtr inCaller, IntPtr inEvent, EventInfo evt, IntPtr userData) { System.Diagnostics.Debug.Assert(evt.EventClass == EventClass.Keyboard); MacOSKeyCode code = (MacOSKeyCode)0; char charCode = '\0'; switch (evt.KeyboardEventKind) { case KeyboardEventKind.RawKeyDown: case KeyboardEventKind.RawKeyRepeat: case KeyboardEventKind.RawKeyUp: GetCharCodes(inEvent, out code, out charCode); mKeyPressArgs.KeyChar = charCode; break; } switch (evt.KeyboardEventKind) { case KeyboardEventKind.RawKeyRepeat: if (InputDriver.Keyboard[0].KeyRepeat) { goto case KeyboardEventKind.RawKeyDown; } break; case KeyboardEventKind.RawKeyDown: { OpenTK.Input.Key key; if (Keymap.TryGetValue(code, out key)) { InputDriver.Keyboard[0][key] = true; OnKeyPress(mKeyPressArgs); } return(OSStatus.NoError); } case KeyboardEventKind.RawKeyUp: { OpenTK.Input.Key key; if (Keymap.TryGetValue(code, out key)) { InputDriver.Keyboard[0][key] = false; } return(OSStatus.NoError); } case KeyboardEventKind.RawKeyModifiersChanged: ProcessModifierKey(inEvent); return(OSStatus.NoError); } return(OSStatus.EventNotHandled); }
private OSStatus ProcessKeyboardEvent(IntPtr inCaller, IntPtr inEvent, EventInfo evt, IntPtr userData) { MacOSKeyCode code = MacOSKeyCode.A; char charCode = char.MinValue; switch (evt.KeyboardEventKind) { case KeyboardEventKind.RawKeyDown: case KeyboardEventKind.RawKeyRepeat: case KeyboardEventKind.RawKeyUp: CarbonGLNative.GetCharCodes(inEvent, out code, out charCode); this.mKeyPressArgs.KeyChar = charCode; break; } switch (evt.KeyboardEventKind) { case KeyboardEventKind.RawKeyDown: Key index1; if (CarbonGLNative.Keymap.TryGetValue(code, out index1)) { this.InputDriver.Keyboard[0][index1] = true; this.OnKeyPress(this.mKeyPressArgs); } return(OSStatus.NoError); case KeyboardEventKind.RawKeyRepeat: if (!this.InputDriver.Keyboard[0].KeyRepeat) { break; } else { goto case KeyboardEventKind.RawKeyDown; } case KeyboardEventKind.RawKeyUp: Key index2; if (CarbonGLNative.Keymap.TryGetValue(code, out index2)) { this.InputDriver.Keyboard[0][index2] = false; } return(OSStatus.NoError); case KeyboardEventKind.RawKeyModifiersChanged: this.ProcessModifierKey(inEvent); return(OSStatus.NoError); } return(OSStatus.EventNotHandled); }
OSStatus ProcessKeyboardEvent(IntPtr inCaller, IntPtr inEvent, EventInfo evt, IntPtr userData) { MacOSKeyCode code = (MacOSKeyCode)0; char charCode = '\0'; //Debug.Print("Processing Keyboard event {0}", (KeyboardEventKind)evt.EventKind); switch ((KeyboardEventKind)evt.EventKind) { case KeyboardEventKind.RawKeyDown: case KeyboardEventKind.RawKeyRepeat: case KeyboardEventKind.RawKeyUp: code = API.GetEventKeyboardKeyCode(inEvent); charCode = API.GetEventKeyboardChar(inEvent); break; } Key tkKey; if (!Keymap.TryGetValue(code, out tkKey)) { Debug.Print("{0} not mapped, ignoring press.", code); return(OSStatus.NoError); } switch ((KeyboardEventKind)evt.EventKind) { case KeyboardEventKind.RawKeyRepeat: Keyboard.KeyRepeat = true; goto case KeyboardEventKind.RawKeyDown; case KeyboardEventKind.RawKeyDown: Keyboard.Set(tkKey, true); RaiseKeyPress(charCode); return(OSStatus.NoError); case KeyboardEventKind.RawKeyUp: Keyboard.Set(tkKey, false); return(OSStatus.NoError); case KeyboardEventKind.RawKeyModifiersChanged: ProcessModifierKey(inEvent); return(OSStatus.NoError); } return(OSStatus.EventNotHandled); }
private OSStatus ProcessKeyboardEvent(IntPtr inCaller, IntPtr inEvent, EventInfo evt, IntPtr userData) { MacOSKeyCode code = (MacOSKeyCode)0; char charCode = '\0'; //Debug.Print("Processing Keyboard event {0}", (KeyboardEventKind)evt.EventKind); switch ((KeyboardEventKind)evt.EventKind) { case KeyboardEventKind.RawKeyDown: case KeyboardEventKind.RawKeyRepeat: case KeyboardEventKind.RawKeyUp: GetCharCodes(inEvent, out code, out charCode); mKeyPressArgs.KeyChar = charCode; break; } if (!Keymap.ContainsKey(code)) { Debug.Print("{0} not mapped, ignoring press.", code); return(OSStatus.NoError); } switch ((KeyboardEventKind)evt.EventKind) { case KeyboardEventKind.RawKeyRepeat: keyboard.KeyRepeat = true; goto case KeyboardEventKind.RawKeyDown; case KeyboardEventKind.RawKeyDown: keyboard[Keymap[code]] = true; OnKeyPress(mKeyPressArgs); return(OSStatus.NoError); case KeyboardEventKind.RawKeyUp: keyboard[Keymap[code]] = false; return(OSStatus.NoError); case KeyboardEventKind.RawKeyModifiersChanged: ProcessModifierKey(inEvent); return(OSStatus.NoError); default: return(OSStatus.EventNotHandled); } }
void ProcessKeyUp(MacOSKeyCode code) { Key key; Keymap.TryGetValue(code, out key); // Legacy keyboard API KeyboardDevice keyboard = InputDriver.Keyboard[0]; keyboard.SetKey(key, (uint)code, false); // Raise KeyUp for new keyboard API mKeyUpArgs.Key = key; mKeyDownArgs.Modifiers = keyboard.GetModifiers(); KeyUp(this, mKeyUpArgs); }
private OSStatus ProcessKeyboardEvent(IntPtr inCaller, IntPtr inEvent, EventInfo evt, IntPtr userData) { System.Diagnostics.Debug.Assert(evt.EventClass == EventClass.Keyboard); MacOSKeyCode code = (MacOSKeyCode)0; char charCode = '\0'; //Debug.Print("Processing keyboard event {0}", evt.KeyboardEventKind); switch (evt.KeyboardEventKind) { case KeyboardEventKind.RawKeyDown: case KeyboardEventKind.RawKeyRepeat: case KeyboardEventKind.RawKeyUp: GetCharCodes(inEvent, out code, out charCode); mKeyPressArgs.KeyChar = charCode; break; } switch (evt.KeyboardEventKind) { case KeyboardEventKind.RawKeyRepeat: InputDriver.Keyboard[0].KeyRepeat = true; goto case KeyboardEventKind.RawKeyDown; case KeyboardEventKind.RawKeyDown: OnKeyPress(mKeyPressArgs); InputDriver.Keyboard[0][Keymap[code]] = true; return(OSStatus.NoError); case KeyboardEventKind.RawKeyUp: InputDriver.Keyboard[0][Keymap[code]] = false; return(OSStatus.NoError); case KeyboardEventKind.RawKeyModifiersChanged: ProcessModifierKey(inEvent); return(OSStatus.NoError); default: return(OSStatus.EventNotHandled); } }
void ProcessKeyDown(MacOSKeyCode code) { Key key; Keymap.TryGetValue(code, out key); // Legacy keyboard API KeyboardDevice keyboard = InputDriver.Keyboard[0]; keyboard.SetKey(key, (uint)code, true); // Raise KeyDown for new keyboard API mKeyDownArgs.Key = key; mKeyDownArgs.Modifiers = keyboard.GetModifiers(); KeyDown(this, mKeyDownArgs); // Raise KeyPress for new keyboard API if (!Char.IsControl(mKeyPressArgs.KeyChar)) { OnKeyPress(mKeyPressArgs); } }
private static void GetCharCodes(IntPtr inEvent, out MacOSKeyCode code, out char charCode) { code = API.GetEventKeyboardKeyCode(inEvent); charCode = API.GetEventKeyboardChar(inEvent); }
public static Key GetKey(MacOSKeyCode code) { // comments indicate members of the Key enum that are missing switch (code) { case MacOSKeyCode.A: return Key.A; case MacOSKeyCode.OptionAlt: return Key.AltLeft; // AltRight case MacOSKeyCode.B: return Key.B; case MacOSKeyCode.Backslash: return Key.BackSlash; case MacOSKeyCode.Backspace: return Key.BackSpace; case MacOSKeyCode.BracketLeft: return Key.BracketLeft; case MacOSKeyCode.BracketRight: return Key.BracketRight; case MacOSKeyCode.C: return Key.C; // Capslock // Clear case MacOSKeyCode.Comma: return Key.Comma; case MacOSKeyCode.Control: return Key.ControlLeft; // ControlRight case MacOSKeyCode.D: return Key.D; case MacOSKeyCode.Del: return Key.Delete; case MacOSKeyCode.Down: return Key.Down; case MacOSKeyCode.E: return Key.E; case MacOSKeyCode.End: return Key.End; case MacOSKeyCode.Enter: return Key.Enter; case MacOSKeyCode.Return: return Key.Enter; case MacOSKeyCode.Esc: return Key.Escape; case MacOSKeyCode.F: return Key.F; case MacOSKeyCode.F1: return Key.F1; case MacOSKeyCode.F2: return Key.F2; case MacOSKeyCode.F3: return Key.F3; case MacOSKeyCode.F4: return Key.F4; case MacOSKeyCode.F5: return Key.F5; case MacOSKeyCode.F6: return Key.F6; case MacOSKeyCode.F7: return Key.F7; case MacOSKeyCode.F8: return Key.F8; case MacOSKeyCode.F9: return Key.F9; case MacOSKeyCode.F10: return Key.F10; case MacOSKeyCode.F11: return Key.F11; case MacOSKeyCode.F12: return Key.F12; case MacOSKeyCode.F13: return Key.F13; case MacOSKeyCode.F14: return Key.F14; case MacOSKeyCode.F15: return Key.F15; // F16-F35 case MacOSKeyCode.G: return Key.G; case MacOSKeyCode.H: return Key.H; case MacOSKeyCode.Home: return Key.Home; case MacOSKeyCode.I: return Key.I; case MacOSKeyCode.Insert: return Key.Insert; case MacOSKeyCode.J: return Key.J; case MacOSKeyCode.K: return Key.K; case MacOSKeyCode.KeyPad_0: return Key.Keypad0; case MacOSKeyCode.KeyPad_1: return Key.Keypad1; case MacOSKeyCode.KeyPad_2: return Key.Keypad2; case MacOSKeyCode.KeyPad_3: return Key.Keypad3; case MacOSKeyCode.KeyPad_4: return Key.Keypad4; case MacOSKeyCode.KeyPad_5: return Key.Keypad5; case MacOSKeyCode.KeyPad_6: return Key.Keypad6; case MacOSKeyCode.KeyPad_7: return Key.Keypad7; case MacOSKeyCode.KeyPad_8: return Key.Keypad8; case MacOSKeyCode.KeyPad_9: return Key.Keypad9; case MacOSKeyCode.KeyPad_Add: return Key.KeypadAdd; case MacOSKeyCode.KeyPad_Decimal: return Key.KeypadDecimal; case MacOSKeyCode.KeyPad_Divide: return Key.KeypadDivide; case MacOSKeyCode.KeyPad_Enter: return Key.KeypadEnter; case MacOSKeyCode.KeyPad_Multiply: return Key.KeypadMultiply; case MacOSKeyCode.KeyPad_Subtract: return Key.KeypadSubtract; //case MacOSKeyCode.KeyPad_Equal; case MacOSKeyCode.L: return Key.L; case MacOSKeyCode.Left: return Key.Left; case MacOSKeyCode.M: return Key.M; //Key.MaxKeys case MacOSKeyCode.Menu: return Key.Menu; case MacOSKeyCode.Minus: return Key.Minus; case MacOSKeyCode.N: return Key.N; case MacOSKeyCode.Key_0: return Key.Number0; case MacOSKeyCode.Key_1: return Key.Number1; case MacOSKeyCode.Key_2: return Key.Number2; case MacOSKeyCode.Key_3: return Key.Number3; case MacOSKeyCode.Key_4: return Key.Number4; case MacOSKeyCode.Key_5: return Key.Number5; case MacOSKeyCode.Key_6: return Key.Number6; case MacOSKeyCode.Key_7: return Key.Number7; case MacOSKeyCode.Key_8: return Key.Number8; case MacOSKeyCode.Key_9: return Key.Number9; // Numlock case MacOSKeyCode.O: return Key.O; case MacOSKeyCode.P: return Key.P; case MacOSKeyCode.Pagedown: return Key.PageDown; case MacOSKeyCode.Pageup: return Key.PageUp; // Pause case MacOSKeyCode.Period: return Key.Period; case MacOSKeyCode.Equals: return Key.Plus; // PrintScreen case MacOSKeyCode.Q: return Key.Q; case MacOSKeyCode.Quote: return Key.Quote; case MacOSKeyCode.R: return Key.R; case MacOSKeyCode.Right: return Key.Right; case MacOSKeyCode.S: return Key.S; // ScrollLock case MacOSKeyCode.Semicolon: return Key.Semicolon; case MacOSKeyCode.Shift: return Key.ShiftLeft; //Key.ShiftRight case MacOSKeyCode.Slash: return Key.Slash; // Key.Sleep case MacOSKeyCode.Space: return Key.Space; case MacOSKeyCode.T: return Key.T; case MacOSKeyCode.Tab: return Key.Tab; case MacOSKeyCode.Tilde: return Key.Tilde; case MacOSKeyCode.U: return Key.U; case MacOSKeyCode.Up: return Key.Up; case MacOSKeyCode.V: return Key.V; case MacOSKeyCode.W: return Key.W; case MacOSKeyCode.Command: return Key.WinLeft; // WinKeyRight case MacOSKeyCode.X: return Key.X; case MacOSKeyCode.Y: return Key.Y; case MacOSKeyCode.Z: return Key.Z; default: return Key.Unknown; } }
public override void ProcessEvents() { base.ProcessEvents(); while (true) { var e = Cocoa.SendIntPtr(NSApplication.Handle, selNextEventMatchingMask, uint.MaxValue, IntPtr.Zero, NSDefaultRunLoopMode, true); if (e == IntPtr.Zero) { break; } var type = (NSEventType)Cocoa.SendInt(e, selType); switch (type) { case NSEventType.KeyDown: { MacOSKeyCode keyCode = (MacOSKeyCode)Cocoa.SendUshort(e, selKeyCode); var isARepeat = Cocoa.SendBool(e, selIsARepeat); Key key = MacOSKeyMap.GetKey(keyCode); OnKeyDown(key, isARepeat); var s = Cocoa.FromNSString(Cocoa.SendIntPtr(e, selCharactersIgnoringModifiers)); foreach (var c in s) { int intVal = (int)c; if (!Char.IsControl(c) && (intVal < 63232 || intVal > 63235)) { // For some reason, arrow keys (mapped 63232-63235) // are seen as non-control characters, so get rid of those. OnKeyPress(c); } } } break; case NSEventType.KeyUp: { MacOSKeyCode keyCode = (MacOSKeyCode)Cocoa.SendUshort(e, selKeyCode); Key key = MacOSKeyMap.GetKey(keyCode); OnKeyUp(key); } break; case NSEventType.FlagsChanged: { var modifierFlags = (NSEventModifierMask)Cocoa.SendUint(e, selModifierFlags); UpdateModifierFlags(GetModifiers(modifierFlags)); } break; case NSEventType.MouseEntered: { var eventTrackingArea = Cocoa.SendIntPtr(e, selTrackingArea); var trackingAreaOwner = Cocoa.SendIntPtr(eventTrackingArea, selOwner); if (trackingAreaOwner == windowInfo.ViewHandle) { if (selectedCursor != MouseCursor.Default) { //SetCursor(selectedCursor); } OnMouseEnter(EventArgs.Empty); } } break; case NSEventType.MouseExited: { var eventTrackingArea = Cocoa.SendIntPtr(e, selTrackingArea); var trackingAreaOwner = Cocoa.SendIntPtr(eventTrackingArea, selOwner); if (trackingAreaOwner == windowInfo.ViewHandle) { if (selectedCursor != MouseCursor.Default) { //SetCursor(MouseCursor.Default); } OnMouseLeave(EventArgs.Empty); } } break; case NSEventType.LeftMouseDragged: case NSEventType.RightMouseDragged: case NSEventType.OtherMouseDragged: case NSEventType.MouseMoved: { Point p = new Point(MouseState.X, MouseState.Y); if (CursorVisible) { // Use absolute coordinates var pf = Cocoa.SendPoint(e, selLocationInWindowOwner); // Convert from points to pixel coordinates var rf = Cocoa.SendRect(windowInfo.Handle, selConvertRectToBacking, new RectangleF(pf.X, pf.Y, 0, 0)); // See CocoaDrawingGuide under "Converting from Window to View Coordinates" p = new Point( MathHelper.Clamp((int)Math.Round(rf.X), 0, Width), MathHelper.Clamp((int)Math.Round(Height - rf.Y), 0, Height)); } else { // Mouse has been disassociated, // use relative coordinates var dx = Cocoa.SendFloat(e, selDeltaX); var dy = Cocoa.SendFloat(e, selDeltaY); p = new Point( MathHelper.Clamp((int)Math.Round(p.X + dx), 0, Width), MathHelper.Clamp((int)Math.Round(p.Y + dy), 0, Height)); } // Only raise events when the mouse has actually moved if (MouseState.X != p.X || MouseState.Y != p.Y) { OnMouseMove(p.X, p.Y); } } break; case NSEventType.CursorUpdate: break; case NSEventType.ScrollWheel: { float dx, dy; if (Cocoa.SendBool(e, selHasPreciseScrollingDeltas)) { dx = Cocoa.SendFloat(e, selScrollingDeltaX) * MacOSFactory.ScrollFactor; dy = Cocoa.SendFloat(e, selScrollingDeltaY) * MacOSFactory.ScrollFactor; } else { dx = Cocoa.SendFloat(e, selDeltaX); dy = Cocoa.SendFloat(e, selDeltaY); } // Only raise wheel events when the user has actually scrolled if (dx != 0 || dy != 0) { OnMouseWheel(dx, dy); } } break; case NSEventType.LeftMouseDown: case NSEventType.RightMouseDown: case NSEventType.OtherMouseDown: { var buttonNumber = Cocoa.SendInt(e, selButtonNumber); OnMouseDown(GetMouseButton(buttonNumber)); } break; case NSEventType.LeftMouseUp: case NSEventType.RightMouseUp: case NSEventType.OtherMouseUp: { var buttonNumber = Cocoa.SendInt(e, selButtonNumber); OnMouseUp(GetMouseButton(buttonNumber)); } break; } Cocoa.SendVoid(NSApplication.Handle, selSendEvent, e); } // Handle closing if (shouldClose) { shouldClose = false; // PerformClose is equivalent to pressing the close-button, which // does not work in a borderless window. Handle this special case. if (GetStyleMask() == NSWindowStyle.Borderless) { if (WindowShouldClose(IntPtr.Zero, IntPtr.Zero, IntPtr.Zero)) { Cocoa.SendVoid(windowInfo.Handle, selClose); } } else { Cocoa.SendVoid(windowInfo.Handle, selPerformClose, windowInfo.Handle); } } }
public static Key GetKey(MacOSKeyCode code) { // comments indicate members of the Key enum that are missing switch (code) { case MacOSKeyCode.A: return(Key.A); case MacOSKeyCode.OptionAlt: return(Key.AltLeft); // AltRight case MacOSKeyCode.B: return(Key.B); case MacOSKeyCode.Backslash: return(Key.BackSlash); case MacOSKeyCode.Backspace: return(Key.BackSpace); case MacOSKeyCode.BracketLeft: return(Key.BracketLeft); case MacOSKeyCode.BracketRight: return(Key.BracketRight); case MacOSKeyCode.C: return(Key.C); // Capslock // Clear case MacOSKeyCode.Comma: return(Key.Comma); case MacOSKeyCode.Control: return(Key.ControlLeft); // ControlRight case MacOSKeyCode.D: return(Key.D); case MacOSKeyCode.Del: return(Key.Delete); case MacOSKeyCode.Down: return(Key.Down); case MacOSKeyCode.E: return(Key.E); case MacOSKeyCode.End: return(Key.End); case MacOSKeyCode.Enter: return(Key.Enter); case MacOSKeyCode.Return: return(Key.Enter); case MacOSKeyCode.Esc: return(Key.Escape); case MacOSKeyCode.F: return(Key.F); case MacOSKeyCode.F1: return(Key.F1); case MacOSKeyCode.F2: return(Key.F2); case MacOSKeyCode.F3: return(Key.F3); case MacOSKeyCode.F4: return(Key.F4); case MacOSKeyCode.F5: return(Key.F5); case MacOSKeyCode.F6: return(Key.F6); case MacOSKeyCode.F7: return(Key.F7); case MacOSKeyCode.F8: return(Key.F8); case MacOSKeyCode.F9: return(Key.F9); case MacOSKeyCode.F10: return(Key.F10); case MacOSKeyCode.F11: return(Key.F11); case MacOSKeyCode.F12: return(Key.F12); case MacOSKeyCode.F13: return(Key.F13); case MacOSKeyCode.F14: return(Key.F14); case MacOSKeyCode.F15: return(Key.F15); // F16-F35 case MacOSKeyCode.G: return(Key.G); case MacOSKeyCode.H: return(Key.H); case MacOSKeyCode.Home: return(Key.Home); case MacOSKeyCode.I: return(Key.I); case MacOSKeyCode.Insert: return(Key.Insert); case MacOSKeyCode.J: return(Key.J); case MacOSKeyCode.K: return(Key.K); case MacOSKeyCode.KeyPad_0: return(Key.Keypad0); case MacOSKeyCode.KeyPad_1: return(Key.Keypad1); case MacOSKeyCode.KeyPad_2: return(Key.Keypad2); case MacOSKeyCode.KeyPad_3: return(Key.Keypad3); case MacOSKeyCode.KeyPad_4: return(Key.Keypad4); case MacOSKeyCode.KeyPad_5: return(Key.Keypad5); case MacOSKeyCode.KeyPad_6: return(Key.Keypad6); case MacOSKeyCode.KeyPad_7: return(Key.Keypad7); case MacOSKeyCode.KeyPad_8: return(Key.Keypad8); case MacOSKeyCode.KeyPad_9: return(Key.Keypad9); case MacOSKeyCode.KeyPad_Add: return(Key.KeypadAdd); case MacOSKeyCode.KeyPad_Decimal: return(Key.KeypadDecimal); case MacOSKeyCode.KeyPad_Divide: return(Key.KeypadDivide); case MacOSKeyCode.KeyPad_Enter: return(Key.KeypadEnter); case MacOSKeyCode.KeyPad_Multiply: return(Key.KeypadMultiply); case MacOSKeyCode.KeyPad_Subtract: return(Key.KeypadSubtract); //case MacOSKeyCode.KeyPad_Equal; case MacOSKeyCode.L: return(Key.L); case MacOSKeyCode.Left: return(Key.Left); case MacOSKeyCode.M: return(Key.M); //Key.MaxKeys case MacOSKeyCode.Menu: return(Key.Menu); case MacOSKeyCode.Minus: return(Key.Minus); case MacOSKeyCode.N: return(Key.N); case MacOSKeyCode.Key_0: return(Key.Number0); case MacOSKeyCode.Key_1: return(Key.Number1); case MacOSKeyCode.Key_2: return(Key.Number2); case MacOSKeyCode.Key_3: return(Key.Number3); case MacOSKeyCode.Key_4: return(Key.Number4); case MacOSKeyCode.Key_5: return(Key.Number5); case MacOSKeyCode.Key_6: return(Key.Number6); case MacOSKeyCode.Key_7: return(Key.Number7); case MacOSKeyCode.Key_8: return(Key.Number8); case MacOSKeyCode.Key_9: return(Key.Number9); // Numlock case MacOSKeyCode.O: return(Key.O); case MacOSKeyCode.P: return(Key.P); case MacOSKeyCode.Pagedown: return(Key.PageDown); case MacOSKeyCode.Pageup: return(Key.PageUp); // Pause case MacOSKeyCode.Period: return(Key.Period); case MacOSKeyCode.Equals: return(Key.Plus); // PrintScreen case MacOSKeyCode.Q: return(Key.Q); case MacOSKeyCode.Quote: return(Key.Quote); case MacOSKeyCode.R: return(Key.R); case MacOSKeyCode.Right: return(Key.Right); case MacOSKeyCode.S: return(Key.S); // ScrollLock case MacOSKeyCode.Semicolon: return(Key.Semicolon); case MacOSKeyCode.Shift: return(Key.ShiftLeft); //Key.ShiftRight case MacOSKeyCode.Slash: return(Key.Slash); // Key.Sleep case MacOSKeyCode.Space: return(Key.Space); case MacOSKeyCode.T: return(Key.T); case MacOSKeyCode.Tab: return(Key.Tab); case MacOSKeyCode.Tilde: return(Key.Tilde); case MacOSKeyCode.U: return(Key.U); case MacOSKeyCode.Up: return(Key.Up); case MacOSKeyCode.V: return(Key.V); case MacOSKeyCode.W: return(Key.W); case MacOSKeyCode.Command: return(Key.WinLeft); // WinKeyRight case MacOSKeyCode.X: return(Key.X); case MacOSKeyCode.Y: return(Key.Y); case MacOSKeyCode.Z: return(Key.Z); default: return(Key.Unknown); } }