+
+ int key = 0;
+ switch (k) {
+ case 0x1b: key = osgGA::GUIEventAdapter::KEY_Escape; break;
+ case '\n': key = osgGA::GUIEventAdapter::KEY_Return; break;
+ case '\b': key = osgGA::GUIEventAdapter::KEY_BackSpace; break;
+ case 0x7f: key = osgGA::GUIEventAdapter::KEY_Delete; break;
+ case '\t': key = osgGA::GUIEventAdapter::KEY_Tab; break;
+ case PU_KEY_LEFT: key = osgGA::GUIEventAdapter::KEY_Left; break;
+ case PU_KEY_UP: key = osgGA::GUIEventAdapter::KEY_Up; break;
+ case PU_KEY_RIGHT: key = osgGA::GUIEventAdapter::KEY_Right; break;
+ case PU_KEY_DOWN: key = osgGA::GUIEventAdapter::KEY_Down; break;
+ case PU_KEY_PAGE_UP: key = osgGA::GUIEventAdapter::KEY_Page_Up; break;
+ case PU_KEY_PAGE_DOWN: key = osgGA::GUIEventAdapter::KEY_Page_Down; break;
+ case PU_KEY_HOME: key = osgGA::GUIEventAdapter::KEY_Home; break;
+ case PU_KEY_END: key = osgGA::GUIEventAdapter::KEY_End; break;
+ case PU_KEY_INSERT: key = osgGA::GUIEventAdapter::KEY_Insert; break;
+ case PU_KEY_F1: key = osgGA::GUIEventAdapter::KEY_F1; break;
+ case PU_KEY_F2: key = osgGA::GUIEventAdapter::KEY_F2; break;
+ case PU_KEY_F3: key = osgGA::GUIEventAdapter::KEY_F3; break;
+ case PU_KEY_F4: key = osgGA::GUIEventAdapter::KEY_F4; break;
+ case PU_KEY_F5: key = osgGA::GUIEventAdapter::KEY_F5; break;
+ case PU_KEY_F6: key = osgGA::GUIEventAdapter::KEY_F6; break;
+ case PU_KEY_F7: key = osgGA::GUIEventAdapter::KEY_F7; break;
+ case PU_KEY_F8: key = osgGA::GUIEventAdapter::KEY_F8; break;
+ case PU_KEY_F9: key = osgGA::GUIEventAdapter::KEY_F9; break;
+ case PU_KEY_F10: key = osgGA::GUIEventAdapter::KEY_F10; break;
+ case PU_KEY_F11: key = osgGA::GUIEventAdapter::KEY_F11; break;
+ case PU_KEY_F12: key = osgGA::GUIEventAdapter::KEY_F12; break;
+ default: key = k; break;
+ }
+ unsigned int osgModifiers = getOSGModifiers(mods);
+ osgGA::EventQueue& queue = *gw->getEventQueue();
+ queue.getCurrentEventState()->setModKeyMask(osgModifiers);
+ if (mods & KEYMOD_RELEASED)
+ queue.keyRelease((osgGA::GUIEventAdapter::KeySymbol)key);
+ else
+ queue.keyPress((osgGA::GUIEventAdapter::KeySymbol)key);