MAC OS-如何捕获按下的三个键-Xamarin.MAC?
我正在创建一个MacOS应用程序,我必须捕获与shift+a+感叹号键相同的三个按键 我将此方法放在AppDelegate.cs中MAC OS-如何捕获按下的三个键-Xamarin.MAC?,xamarin,cocoa,xamarin.mac,Xamarin,Cocoa,Xamarin.mac,我正在创建一个MacOS应用程序,我必须捕获与shift+a+感叹号键相同的三个按键 我将此方法放在AppDelegate.cs中 NSEvent.AddLocalMonitorForEventsMatchingMask(NSEventMask.KeyUp | NSEventMask.FlagsChanged , FlagsChanged); 我收到钥匙了 private static NSEvent FlagsChanged(NSEvent keyEvent) {
NSEvent.AddLocalMonitorForEventsMatchingMask(NSEventMask.KeyUp | NSEventMask.FlagsChanged , FlagsChanged);
我收到钥匙了
private static NSEvent FlagsChanged(NSEvent keyEvent)
{
var key = (NSKey)keyEvent.KeyCode;
if (!(keyEvent.Window?.Identifier is null))
{
if (key.Equals(NSKey.Escape))
return (keyEvent);
var especialKeysPressed = KeyConverterHelper.ConvertFlagsToString(keyEvent.ModifierFlags);
var keyPressed = KeyConverterHelper.ConvertVirtualKeyToKeyPressed(keyEvent.KeyCode);
if (key.Equals(NSKey.Command) ||
key.Equals(NSKey.Shift) ||
key.Equals(NSKey.Control) ||
key.Equals(NSKey.Return) ||
key.Equals(NSKey.Tab) ||
key.Equals(NSKey.Option) && keyPressed != KeyPressed.None)
{
return (keyEvent);
}
var chars = keyEvent.Characters;
if (keyPressed == KeyPressed.None)
return (keyEvent);
//todo: GET THE KEYS PRESSED WHERE (SHIFT + A + Exclamation ) for example
}
return (keyEvent);
}
一个
NSEvent
只携带一个非NSEventModifier键,您可以为该单个键事件同时捕获多个修饰符。您必须转到较低级别的API。有石英级别的事件)但请注意,应用程序需要根访问才能捕获低级别的自来水流。有IOKit
可以查看。。。就我个人而言,我从来没有看过macOS本机键盘是否启用了完全多扫描功能,如果启用了第三方键盘,是否通过IOKit HID驱动程序支持它们。一个NSEvent
只携带一个非NSEventModifier键,您可以为该单键事件同时捕获多个修改器。您必须转到较低级别的API。有石英级别的事件)但请注意,应用程序需要根访问才能捕获低级别的自来水流。有IOKit
可以查看。。。就我个人而言,我从来没有看过macOS本机键盘是否支持完全多扫描,如果第三方键盘支持,是否通过IOKit HID驱动程序支持。