【发布时间】:2021-03-01 16:17:39
【问题描述】:
我已经为 mac 制作了我的第一个程序,一个使用 Xamarin Mac Cocoa 的简单终端仿真。 要绘制终端,我使用 XiaSharp。 要获得我使用的输入:
NSEvent.AddLocalMonitorForEventsMatchingMask(NSEventMask.KeyDown, KeyboardEventHandler);
private NSEvent KeyboardEventHandler(NSEvent keyEvent)
{
//FOR GL KEY
if (keyEvent.KeyCode == 51) CSTSocket.SendByte(8); //Back
else if (keyEvent.KeyCode == 36|| keyEvent.KeyCode == 76) CSTSocket.SendByte(13); //Enter
else if (keyEvent.KeyCode == 49) CSTSocket.SendByte(32); //Space
else if (keyEvent.KeyCode == 123) CSTSocket.SendByte(8); //Arrow Left
else if (keyEvent.KeyCode == 126) CSTSocket.SendByte(11); //Arrow Up
else if (keyEvent.KeyCode == 124) CSTSocket.SendByte(12); //Arrow Right
else if (keyEvent.KeyCode == 125) CSTSocket.SendByte(22); //Arrow Down
}
这适用于一个窗口,但如果我添加更多窗口:
[Export("newWindow:")]
void NewDocument(NSObject sender)
{
// Get new window
var storyboard = NSStoryboard.FromName("Main", null);
var controller = storyboard.InstantiateControllerWithIdentifier("MainWindow") as NSWindowController;
// Display
controller.ShowWindow(this);
// Set the title
controller.Window.Title = (++WindowCount == 1) ? "Watermelon" : string.Format("Watermelon {0}", WindowCount);
}
问题:我同时输入每个创建的窗口。
是否有一个事件可以让我确定哪个窗口处于活动状态,或者是否有另一个键盘事件我必须使用?
感谢任何建议
示例图片: Picture
【问题讨论】:
标签: c# cocoa xamarin.mac