rendered paste bodydiff --git a/src/Main/FGManipulator.cxx b/src/Main/FGManipulator.cxxindex 0586419..191f6fd 100644--- a/src/Main/FGManipulator.cxx+++ b/src/Main/FGManipulator.cxx@@ -276,5 +276,23 @@ void FGManipulator::handleKey(const osgGA::GUIEventAdapter& ea, int& key, currentModifiers = modifiers; if (eventType == osgGA::GUIEventAdapter::KEYUP) modifiers |= KEYMOD_RELEASED;++ if (key >= 0 && key < sizeof(release_keys)) {+ if (modifiers & KEYMOD_RELEASED) {+ key = release_keys[key];+ } else {+ release_keys[key] = key;+ if (key >= 1 && key <= 26) {+ release_keys[key + '@'] = key;+ release_keys[key + '`'] = key;+ } else if (key >= 'A' && key <= 'Z') {+ release_keys[key - '@'] = key;+ release_keys[tolower(key)] = key;+ } else if (key >= 'a' && key <= 'z') {+ release_keys[key - '`'] = key;+ release_keys[toupper(key)] = key;+ }+ }+ } }×diff --git a/src/Main/FGManipulator.hxx b/src/Main/FGManipulator.hxxindex 4ad190d..edfcd9f 100644--- a/src/Main/FGManipulator.hxx+++ b/src/Main/FGManipulator.hxx@@ -139,5 +139,6 @@ protected: bool mouseWarped; // workaround for osgViewer double scroll events bool scrollButtonPressed;+ int release_keys[128]; }; #endif