可以在IOKit中获取Constant或Enum的字符串表示吗?

时间:2010-09-13 12:16:56

标签: c++ cocoa macos iokit

有没有办法获取IOKit中定义的常量和枚举的字符串表示?

我将草料放入IOKit并试图控制注销USB设备返回的一些参数。但我最终得到了数字列表。还有其他方法可以列出这些含义吗?

例如在IOHIDKeys.h中

enum IOHIDElementType {
    kIOHIDElementTypeInput_Misc        = 1,
    kIOHIDElementTypeInput_Button      = 2,
    kIOHIDElementTypeInput_Axis        = 3,
    kIOHIDElementTypeInput_ScanCodes   = 4,
    kIOHIDElementTypeOutput            = 129,
    kIOHIDElementTypeFeature           = 257,
    kIOHIDElementTypeCollection        = 513
};
typedef enum IOHIDElementType IOHIDElementType;
在IOHIDUsageTables.h中,我需要查找十六进制值并在标题中找到它,例如:

kHIDUsage_GD_Joystick   = 0x04, /* Application Collection */
kHIDUsage_GD_GamePad    = 0x05, /* Application Collection */
kHIDUsage_GD_Keyboard   = 0x06, /* Application Collection */
kHIDUsage_GD_Keypad = 0x07, /* Application Collection */

1 个答案:

答案 0 :(得分:1)

您可以使用经典切换方法,例如

const char *IOHIDElemtType2str(IOHIDElementType type)
{
    switch(type)
    {
        case kIOHIDElementTypeInput_Misc:
            return "kIOHidElementTypeInput_Misc";
    }
}

等等。