我正在尝试使用 Mono 在 Mac 上运行 .net 2 Windows.Forms 应用程序。该应用程序具有用于所有功能的组合键快捷方式,这些快捷方式具有预定义的默认值,并且可以由用户重新配置。Form KeyDown 事件处理程序查找要执行的操作。
我的问题是将修饰符和 KeyCode 与按下的实际键相关联。我不介意是否需要为 Mac 添加一些映射,但我至少需要 3 个修饰键。然而,在 Mac 上的 4 个修饰符中,似乎很少能产生明显的结果。我得到: Shift - 按预期工作 Ctrl - 报告不同的 KeyCode,但具有正确的修饰符(例如 Ctrl+N 具有 Modifiers = Control 和 KeyCode 14 = "RButton, Clear")。
Alt - 报告其他未修改的键(例如 Alt+R 给出 KeyCode = 168 = "BrowserRefresh") Cmd - 报告为 Alt 并带有预期的 KeyCode(例如 Cmd+N 显示为 Alt-N)
我认为 Cmd 键通常用于在 Windows 上使用 Ctrl 的地方。谁能建议我应该尝试使用三个 Mac 键中的哪一个?最重要的是如何解析 KeyEventArgs 以一致地报告一个基本键和三个可选修饰符?
Mono 是最新版本(截至一两周前),它是 MacBook Air、OS X 10.8.1,如果这有什么不同的话。