public override void FlagsChanged(NSEvent theEvent) { var theKey = (NSEventModifierMask)Enum.ToObject(typeof(NSEventModifierMask), (uint)theEvent.ModifierFlags & 0xFFFF0000); int count = Util.NumberOfSetBits((int)theKey); //Console.WriteLine(count); if (theKey == 0 || lastKeyCount > count) { Host.onKeyUp(new KeyEventArgs(theEvent)); //Console.WriteLine("keyUp"); } else { Host.onKeyDown(new KeyEventArgs(theEvent)); //Console.WriteLine("keyDown"); } lastKeyCount = count; base.FlagsChanged(theEvent); }