C# Xamarin Mac在不同窗口中的键盘输入

C# Xamarin Mac在不同窗口中的键盘输入,c#,cocoa,xamarin.mac,C#,Cocoa,Xamarin.mac,我为mac编写了第一个程序,这是一个使用Xamarin mac Cocoa的简单终端仿真。 为了画终端,我使用夏普。 要获取我使用的输入,请执行以下操作: NSEvent.AddLocalMonitorForEventsMatchingMask(NSEventMask.KeyDown,KeyboardEventHandler); 私有NSEvent KeyboardEventHandler(NSEvent keyEvent) { //对于GL键 if(keyEvent.KeyCode==51)c

我为mac编写了第一个程序,这是一个使用Xamarin mac Cocoa的简单终端仿真。 为了画终端,我使用夏普。 要获取我使用的输入,请执行以下操作:

NSEvent.AddLocalMonitorForEventsMatchingMask(NSEventMask.KeyDown,KeyboardEventHandler);
私有NSEvent KeyboardEventHandler(NSEvent keyEvent)
{
//对于GL键
if(keyEvent.KeyCode==51)cstssocket.SendByte(8);//返回
else if(keyEvent.KeyCode==36 | | keyEvent.KeyCode==76)cstssocket.SendByte(13);//输入
else if(keyEvent.KeyCode==49)cstssocket.SendByte(32);//空格
else if(keyEvent.KeyCode==123)cstssocket.SendByte(8);//向左箭头
else if(keyEvent.KeyCode==126)cstssocket.SendByte(11);//向上箭头
else if(keyEvent.KeyCode==124)cstssocket.SendByte(12);//向右箭头
else if(keyEvent.KeyCode==125)cstssocket.SendByte(22);//向下箭头
}
这在一个窗口中效果很好,但如果我添加更多具有以下功能的窗口:

[导出(“新窗口:”)]
作废新文档(NSObject发件人)
{
//获取新窗口
var storyboard=NSStoryboard.FromName(“Main”,null);
var controller=storyboard.instanceControllerWithiIdentifier(“主窗口”)作为NSWindowController;
//展示
controller.ShowWindow(此);
//设置标题
controller.Window.Title=(++WindowCount==1)?“西瓜”:string.Format(“西瓜{0}”,WindowCount);
}
问题:我在同一时间键入每个创建的窗口

是否存在我可以确定哪个窗口处于活动状态的事件,或者是否存在我必须使用的另一个键盘事件

任何建议都将不胜感激

示例图片:

我自己想出来的:

在ViewController.cs中,如果窗口具有输入焦点,则可以获得布尔值:

this.View.Windows.IsKeyWindow