return bool(fgGetKeyModifiers() & KEYMOD_SUPER);
}
+static bool
+getModHyper ()
+{
+ return bool(fgGetKeyModifiers() & KEYMOD_HYPER);
+}
+
\f
////////////////////////////////////////////////////////////////////////
// Implementation of FGInput.
fgTie("/devices/status/keyboard/alt", getModAlt);
fgTie("/devices/status/keyboard/meta", getModMeta);
fgTie("/devices/status/keyboard/super", getModSuper);
+ fgTie("/devices/status/keyboard/hyper", getModHyper);
_key_event->tie("key", SGRawValuePointer<int>(&_key_code));
_key_event->tie("pressed", SGRawValuePointer<bool>(&_key_pressed));
_key_event->tie("modifier/alt", SGRawValuePointer<bool>(&_key_alt));
_key_event->tie("modifier/meta", SGRawValuePointer<bool>(&_key_meta));
_key_event->tie("modifier/super", SGRawValuePointer<bool>(&_key_super));
+ _key_event->tie("modifier/hyper", SGRawValuePointer<bool>(&_key_hyper));
}
void
fgUntie("/devices/status/keyboard/alt");
fgUntie("/devices/status/keyboard/meta");
fgUntie("/devices/status/keyboard/super");
+ fgUntie("/devices/status/keyboard/hyper");
_key_event->untie("key");
_key_event->untie("pressed");
_key_event->untie("modifier/alt");
_key_event->untie("modifier/meta");
_key_event->untie("modifier/super");
+ _key_event->untie("modifier/hyper");
}
void
_key_alt = bool(modifiers & KEYMOD_ALT);
_key_meta = bool(modifiers & KEYMOD_META);
_key_super = bool(modifiers & KEYMOD_SUPER);
+ _key_hyper = bool(modifiers & KEYMOD_HYPER);
_key_event->fireValueChanged();
if (!_key_code)
return;
if (node->getChild("mod-super") != 0)
_read_bindings(node->getChild("mod-super"), binding_list,
modifiers|KEYMOD_SUPER);
+
+ if (node->getChild("mod-hyper") != 0)
+ _read_bindings(node->getChild("mod-hyper"), binding_list,
+ modifiers|KEYMOD_HYPER);
}
static int osgToFGModifiers(int modifiers)
{
int result = 0;
- if (modifiers & (osgGA::GUIEventAdapter::MODKEY_LEFT_SHIFT |
- osgGA::GUIEventAdapter::MODKEY_RIGHT_SHIFT))
- result |= KEYMOD_SHIFT;
- if (modifiers & (osgGA::GUIEventAdapter::MODKEY_LEFT_CTRL |
- osgGA::GUIEventAdapter::MODKEY_RIGHT_CTRL))
- result |= KEYMOD_CTRL;
- if (modifiers & (osgGA::GUIEventAdapter::MODKEY_LEFT_ALT |
- osgGA::GUIEventAdapter::MODKEY_RIGHT_ALT))
- result |= KEYMOD_ALT;
- if (modifiers & (osgGA::GUIEventAdapter::MODKEY_LEFT_META |
- osgGA::GUIEventAdapter::MODKEY_RIGHT_META))
- result |= KEYMOD_META;
+ if (modifiers & osgGA::GUIEventAdapter::MODKEY_SHIFT)
+ result |= KEYMOD_SHIFT;
+
+ if (modifiers & osgGA::GUIEventAdapter::MODKEY_CTRL)
+ result |= KEYMOD_CTRL;
+
+ if (modifiers & osgGA::GUIEventAdapter::MODKEY_ALT)
+ result |= KEYMOD_ALT;
+
+ if (modifiers & osgGA::GUIEventAdapter::MODKEY_META)
+ result |= KEYMOD_META;
+
+ if (modifiers & osgGA::GUIEventAdapter::MODKEY_SUPER)
+ result |= KEYMOD_SUPER;
+
+ if (modifiers & osgGA::GUIEventAdapter::MODKEY_HYPER)
+ result |= KEYMOD_HYPER;
return result;
}