]> git.mxchange.org Git - flightgear.git/blobdiff - src/Input/input.cxx
Add David Culp's AI model manager code which is derived from David Luff's AI/ATC...
[flightgear.git] / src / Input / input.cxx
index 4a099e4f894a88fc27112d88a556de9d0563a8a5..54cecb9c2a07a624da0500d7ca0c1de5e5e48347 100644 (file)
@@ -454,7 +454,7 @@ FGInput::_init_joystick ()
     jsJoystick * js = new jsJoystick(i);
     _joystick_bindings[i].js = js;
     if (js->notWorking()) {
-      SG_LOG(SG_INPUT, SG_WARN, "Joystick " << i << " not found");
+      SG_LOG(SG_INPUT, SG_DEBUG, "Joystick " << i << " not found");
       continue;
     } else {
       bool found_js = false;
@@ -847,22 +847,27 @@ FGInput::_read_bindings (const SGPropertyNode * node,
 const vector<FGBinding *> &
 FGInput::_find_key_bindings (unsigned int k, int modifiers)
 {
+  unsigned char kc = (unsigned char)k;
   button &b = _key_bindings[k];
 
                                 // Try it straight, first.
   if (b.bindings[modifiers].size() > 0)
     return b.bindings[modifiers];
 
+                                // Alt-Gr is CTRL+ALT
+  else if (modifiers&(FG_MOD_CTRL|FG_MOD_ALT))
+    return _find_key_bindings(k, modifiers&~(FG_MOD_CTRL|FG_MOD_ALT));
+
                                 // Try removing the control modifier
                                 // for control keys.
-  else if ((modifiers&FG_MOD_CTRL) && iscntrl(k))
+  else if ((modifiers&FG_MOD_CTRL) && iscntrl(kc))
     return _find_key_bindings(k, modifiers&~FG_MOD_CTRL);
 
                                 // Try removing shift modifier 
                                 // for upper case or any punctuation
                                 // (since different keyboards will
                                 // shift different punctuation types)
-  else if ((modifiers&FG_MOD_SHIFT) && (isupper(k) || ispunct(k)))
+  else if ((modifiers&FG_MOD_SHIFT) && (isupper(kc) || ispunct(kc)))
     return _find_key_bindings(k, modifiers&~FG_MOD_SHIFT);
 
                                 // Try removing alt modifier for