我正在寻找一种方法来确定运行游戏的Mac是否连接了多个鼠标。典型的现实世界示例是MacBook(内置触控板),外接鼠标连接。
我的游戏对常见配置有不同的控制设置,如键盘+鼠标,只有键盘(例如,只有触控板的MacBook,没有鼠标)和游戏手柄。理想情况下,我将能够在游戏中检测到这一点并相应地设置控件。
我打算支持Mac OS 10.7 +。
我可以使用Cocoa(或非Cocoa)API获取此信息吗?
作为参考,我已经问过(并得到了答案)基于Windows的计算机similar question。
答案 0 :(得分:1)
你应该处理IOKit ......以下示例列举了连接到系统的所有USB设备,你可以使用它来查看是否连接了指点设备:
#include <IOKit/IOKitLib.h>
#include <IOKit/usb/IOUSBLib.h>
int main(int argc, const char *argv[])
{
CFMutableDictionaryRef matchingDict;
io_iterator_t iter;
kern_return_t kr;
io_service device;
/* set up a matching dictionary for the class */
matchingDict = IOServiceMatching(kIOUSBDeviceClassName);
if (matchingDict == NULL)
{
return -1; // fail
}
/* Now we have a dictionary, get an iterator.*/
kr = IOServiceGetMatchingServices(kIOMasterPortDefault, matchingDict, &iter);
if (kr != KERN_SUCCESS)
{
return -1;
}
/* iterate */
while ((device = IOIteratorNext(iter)))
{
/* do something with device, eg. check properties */
/* ... */
/* And free the reference taken before continuing to the next item */
IOObjectRelease(device);
}
/* Done, release the iterator */
IOObjectRelase(iter);
return 0;
}
内置触控板应视为连接的USB设备,但我不确定......
答案 1 :(得分:1)
我最终使用ManyMouse,这是一个跨平台库,用于检测连接到计算机的鼠标数量。在OSX上,它使用HIDManager来检测鼠标。一旦它构建完成,连接到系统的鼠标数量就是单行:
const int available_mice = ManyMouse_Init();