X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FInput%2FFGMacOSXEventInput.cxx;h=5c0fe4505d9facfd795b2d1e8a10db6bb08167f4;hb=e59fabaf8276a0f49266e47ff2f59a93b0c7700c;hp=28c3094cccfa84c0653d891f8d43c181eea19531;hpb=b1b4b7ecf48c4420d4445979c36cbf3f80be616a;p=flightgear.git diff --git a/src/Input/FGMacOSXEventInput.cxx b/src/Input/FGMacOSXEventInput.cxx index 28c3094cc..5c0fe4505 100644 --- a/src/Input/FGMacOSXEventInput.cxx +++ b/src/Input/FGMacOSXEventInput.cxx @@ -39,10 +39,12 @@ using std::string; value; }) #define GetHIDElementStringValue(element, key) ({ \ - const char *buf = ""; \ + const char *ref = ""; \ + const char *buf = ref; \ CFStringRef refType = (CFStringRef)CFDictionaryGetValue(element, CFSTR(key)); \ if (refType) { \ buf = CFStringGetCStringPtr(refType, CFStringGetSystemEncoding()); \ + if (!buf) buf = ref; \ } \ buf; }) @@ -126,19 +128,19 @@ struct HIDTypes HID_USAGE_TABLE[] = { {GD_USAGE(kHIDUsage_GD_Vbrz), kHIDUsageAxis, "z-rel-vector"}, {GD_USAGE(kHIDUsage_GD_Vno), kHIDUsageAxis, "no-vector"}, - {GD_USAGE(kHIDUsage_GD_SystemPowerDown), kHIDUsageOSC, "button-system-power-down"}, - {GD_USAGE(kHIDUsage_GD_SystemSleep), kHIDUsageOSC, "button-system-sleep"}, - {GD_USAGE(kHIDUsage_GD_SystemWakeUp), kHIDUsageOSC, "button-system-wake-up"}, - {GD_USAGE(kHIDUsage_GD_SystemContextMenu), kHIDUsageOSC, "button-system-context-menu"}, - {GD_USAGE(kHIDUsage_GD_SystemMainMenu), kHIDUsageOSC, "button-system-main-menu"}, - {GD_USAGE(kHIDUsage_GD_SystemAppMenu), kHIDUsageOSC, "button-system-app-menu"}, - {GD_USAGE(kHIDUsage_GD_SystemMenuHelp), kHIDUsageOSC, "button-system-menu-help"}, - {GD_USAGE(kHIDUsage_GD_SystemMenuExit), kHIDUsageOSC, "button-system-menu-exit"}, - {GD_USAGE(kHIDUsage_GD_SystemMenu), kHIDUsageOSC, "button-system-menu"}, - {GD_USAGE(kHIDUsage_GD_SystemMenuRight), kHIDUsageRTC, "button-system-menu-right"}, - {GD_USAGE(kHIDUsage_GD_SystemMenuLeft), kHIDUsageRTC, "button-system-menu-left"}, - {GD_USAGE(kHIDUsage_GD_SystemMenuUp), kHIDUsageRTC, "button-system-menu-up"}, - {GD_USAGE(kHIDUsage_GD_SystemMenuDown), kHIDUsageRTC, "button-system-menu-down"}, + {GD_USAGE(kHIDUsage_GD_SystemPowerDown), kHIDUsageOSC, "system-power-down"}, + {GD_USAGE(kHIDUsage_GD_SystemSleep), kHIDUsageOSC, "system-sleep"}, + {GD_USAGE(kHIDUsage_GD_SystemWakeUp), kHIDUsageOSC, "system-wake-up"}, + {GD_USAGE(kHIDUsage_GD_SystemContextMenu), kHIDUsageOSC, "system-context-menu"}, + {GD_USAGE(kHIDUsage_GD_SystemMainMenu), kHIDUsageOSC, "system-main-menu"}, + {GD_USAGE(kHIDUsage_GD_SystemAppMenu), kHIDUsageOSC, "system-app-menu"}, + {GD_USAGE(kHIDUsage_GD_SystemMenuHelp), kHIDUsageOSC, "system-menu-help"}, + {GD_USAGE(kHIDUsage_GD_SystemMenuExit), kHIDUsageOSC, "system-menu-exit"}, + {GD_USAGE(kHIDUsage_GD_SystemMenu), kHIDUsageOSC, "system-menu"}, + {GD_USAGE(kHIDUsage_GD_SystemMenuRight), kHIDUsageRTC, "system-menu-right"}, + {GD_USAGE(kHIDUsage_GD_SystemMenuLeft), kHIDUsageRTC, "system-menu-left"}, + {GD_USAGE(kHIDUsage_GD_SystemMenuUp), kHIDUsageRTC, "system-menu-up"}, + {GD_USAGE(kHIDUsage_GD_SystemMenuDown), kHIDUsageRTC, "system-menu-down"}, {GD_USAGE(kHIDUsage_GD_DPadUp), kHIDUsageOOC, "dpad-up"}, {GD_USAGE(kHIDUsage_GD_DPadDown), kHIDUsageOOC, "dpad-down"}, {GD_USAGE(kHIDUsage_GD_DPadRight), kHIDUsageOOC, "dpad-right"}, @@ -151,7 +153,7 @@ struct HIDTypes HID_USAGE_TABLE[] = { {GAME_USAGE(kHIDUsage_Game_MoveForwardOrBackward), kHIDUsageAxis, "y-move"}, {GAME_USAGE(kHIDUsage_Game_MoveUpOrDown), kHIDUsageAxis, "z-move"}, {GAME_USAGE(kHIDUsage_Game_LeanRightOrLeft), kHIDUsageAxis, "x-lean"}, - {GAME_USAGE(kHIDUsage_Game_LeanForwardOrBackward), kHIDUsageAxis, "z-lean"}, + {GAME_USAGE(kHIDUsage_Game_LeanForwardOrBackward), kHIDUsageAxis, "y-lean"}, // General Control Devices Page {GDC_USAGE(0x20), kHIDUsageDV, "battery-strength"}, @@ -382,7 +384,7 @@ ButtonElement::ButtonElement(CFDictionaryRef element, long page, long usage) : { if (name == "") { stringstream ss; - ss << (page == kHIDPage_KeyboardOrKeypad ? "keyboard-" : "button-") << usage; + ss << (page == kHIDPage_KeyboardOrKeypad ? "keyboard-" : "button-") << usage - 1; ss >> name; } } @@ -498,7 +500,7 @@ void HIDElementFactory::parseElement(CFDictionaryRef element, FGMacOSXInputDevic // FIXME: Any other elegant way for counting the same usage on a device? // This is mainly needed for feature / hat elements to avoid assigning the sane event name. elementCount[inputDevice][USAGE_KEY(page, usage)] += 1; - + switch (usageType) { case kHIDUsageAxis: inputDevice->addElement(new AxisElement(element, page, usage)); @@ -519,7 +521,7 @@ void HIDElementFactory::parseElement(CFDictionaryRef element, FGMacOSXInputDevic break; default: - if (page == kHIDPage_Button || type == kIOHIDElementTypeInput_Button && usage > 0) { + if ((page == kHIDPage_Button || type == kIOHIDElementTypeInput_Button) && usage > 0) { // FIXME: most of KeyboardOrKeypad elements should be treated as Selector type, not as Button... inputDevice->addElement(new ButtonElement(element, page, usage)); } else if (page == kHIDPage_LEDs && usage > 0) {