我正在寻找一种方法,以确定Mac运行我的游戏是否有多个鼠标连接。典型的现实世界的例子是一个带有外部鼠标连接的MacBook (内置触控板)。
我的游戏有不同的控制设置为常见的配置,如keyboard+mouse,只有键盘(例如,一个MacBook只有触控板,没有鼠标)和游戏垫。理想情况下,我将能够在游戏中检测到这一点,并相应地设置控件。
我计划支持Mac 10.7+。
我是否可以使用Cocoa (或非Cocoa) API来获取这些信息?
作为参考,我已经询问(并得到了一个答案)的相似问题为基于Windows的计算机.
发布于 2014-04-12 17:43:54
最后,我使用了ManyMouse,一个跨平台的库,用来检测连接到计算机上的老鼠的数量。在OSX上,它使用HIDManager检测小鼠。一旦它被建立起来,获得连接到系统上的老鼠的数量就只有一条直线:
const int available_mice = ManyMouse_Init();发布于 2014-04-11 20:20:15
你应该和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设备,但我不确定.
https://stackoverflow.com/questions/23017879
复制相似问题