假设您正在为 Mac OS X 创建游戏。事实上,假设您正在创建 Quake,只是现在是 2011 年,您更愿意只使用现代的、未弃用的框架。
您希望您的游戏在用户按下(或释放)某个键时收到通知,any key,在键盘上。这包括修饰键,例如 Shift 和 Control。编辑添加:另外,您想知道是否按下了修饰键的左侧或右侧版本。
您还希望您的游戏有一个配置屏幕,用户可以在其中检查和修改键盘配置。它应该包含以下内容:
你做什么工作?我一直在努力寻找一个good回答这个问题已经一天左右了,但还没有成功。
这就是我想出的:
- 子类 NSResponder,实现 keyUp: 和 keyDown:,如这个答案 https://stackoverflow.com/questions/275088/how-do-i-collect-key-input-in-a-video-game-style-cocoa-app/275113。这种方法的一个问题是,当用户仅按下修饰键时, keyUp: 和 keyDown: 将不会被调用。要解决这个问题,您可以实现 flagsChanged:,但这感觉就像一个黑客。
- Use a 石英事件水龙头 http://developer.apple.com/library/mac/documentation/Carbon/Reference/QuartzEventServicesRef/Reference/reference.html#//apple_ref/c/func/CGEventTapCreate。仅当应用程序以 root 身份运行或用户启用了辅助设备的访问权限时,此功能才有效。此外,修饰键事件仍然不算作常规键事件。
- 使用 HI 工具箱。 10.6 开发人员文档中几乎没有提及它。它似乎非常非常不赞成。
那么,执行此操作的正确方法是什么?这确实感觉像是一个应该有一个众所周知的、有详细记录的解决方案的问题。这并不是说游戏是非常小众的。
正如其他人所说,使用没有什么问题-flagsChanged:
。还有另一种选择:使用 IOKit HID API。无论如何,您应该将其用于操纵杆/游戏手柄输入,甚至鼠标输入;键盘输入可能方便也可能不方便,具体取决于您在做什么。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)