首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有一种方法可以确定Mac是否有多个鼠标连接?

有没有一种方法可以确定Mac是否有多个鼠标连接?
EN

Stack Overflow用户
提问于 2014-04-11 16:25:44
回答 2查看 310关注 0票数 1

我正在寻找一种方法,以确定Mac运行我的游戏是否有多个鼠标连接。典型的现实世界的例子是一个带有外部鼠标连接的MacBook (内置触控板)。

我的游戏有不同的控制设置为常见的配置,如keyboard+mouse,只有键盘(例如,一个MacBook只有触控板,没有鼠标)和游戏垫。理想情况下,我将能够在游戏中检测到这一点,并相应地设置控件。

我计划支持Mac 10.7+。

我是否可以使用Cocoa (或非Cocoa) API来获取这些信息?

作为参考,我已经询问(并得到了一个答案)的相似问题为基于Windows的计算机.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-12 17:43:54

最后,我使用了ManyMouse,一个跨平台的库,用来检测连接到计算机上的老鼠的数量。在OSX上,它使用HIDManager检测小鼠。一旦它被建立起来,获得连接到系统上的老鼠的数量就只有一条直线:

代码语言:javascript
复制
const int available_mice = ManyMouse_Init();
票数 1
EN

Stack Overflow用户

发布于 2014-04-11 20:20:15

你应该和IOKit打交道..。下面的示例枚举连接到系统的所有USB设备,您可以使用它来查看是否有附加的指向设备:

代码语言:javascript
复制
#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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23017879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档