void BladeRunnerEngine::handleEvents() { if (shouldQuit()) { _gameIsRunning = false; return; } Common::Event event; Common::EventManager *eventMan = _system->getEventManager(); while (eventMan->pollEvent(event)) { switch (event.type) { case Common::EVENT_KEYUP: handleKeyUp(event); break; case Common::EVENT_KEYDOWN: handleKeyDown(event); break; case Common::EVENT_LBUTTONUP: handleMouseAction(event.mouse.x, event.mouse.y, true, false); break; case Common::EVENT_RBUTTONUP: case Common::EVENT_MBUTTONUP: handleMouseAction(event.mouse.x, event.mouse.y, false, false); break; case Common::EVENT_LBUTTONDOWN: handleMouseAction(event.mouse.x, event.mouse.y, true, true); break; case Common::EVENT_RBUTTONDOWN: case Common::EVENT_MBUTTONDOWN: handleMouseAction(event.mouse.x, event.mouse.y, false, true); break; default: ; // nothing to do } } }
void Window::handleEvent(const SDL_Event &event) { switch (event.type) { case SDL_QUIT: quit = true; break; case SDL_ACTIVEEVENT: (event.active.gain == 1) ? isActive = true : isActive = false; break; case SDL_VIDEORESIZE: resize(event.resize.w, event.resize.h); break; case SDL_MOUSEBUTTONDOWN: if (event.button.button == SDL_BUTTON_WHEELUP) { from->z() += 0.5f; } else if (event.button.button == SDL_BUTTON_WHEELDOWN) { from->z() -= 0.5f; } break; case SDL_MOUSEMOTION: break; case SDL_KEYDOWN: handleKeyDown(event.key.keysym); break; case SDL_KEYUP: handleKeyUp(event.key.keysym); break; } handleKeyCombo(); }
bool OSystem_SDL::dispatchSDLEvent(SDL_Event &ev, Common::Event &event) { switch (ev.type) { case SDL_KEYDOWN: return handleKeyDown(ev, event); case SDL_KEYUP: return handleKeyUp(ev, event); case SDL_MOUSEMOTION: return handleMouseMotion(ev, event); case SDL_MOUSEBUTTONDOWN: return handleMouseButtonDown(ev, event); case SDL_MOUSEBUTTONUP: return handleMouseButtonUp(ev, event); case SDL_JOYBUTTONDOWN: return handleJoyButtonDown(ev, event); case SDL_JOYBUTTONUP: return handleJoyButtonUp(ev, event); case SDL_JOYAXISMOTION: return handleJoyAxisMotion(ev, event); case SDL_VIDEOEXPOSE: //_forceFull = true; break; case SDL_QUIT: event.type = Common::EVENT_QUIT; return true; } return false; }
bool CameraManipulator::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& us) { switch(ea.getEventType()) { case(osgGA::GUIEventAdapter::FRAME): { return handleFrame(ea, us); } default: break; } if (ea.getHandled()) return false; switch(ea.getEventType()) { case(osgGA::GUIEventAdapter::PUSH): { return handlePush(ea, us); } case(osgGA::GUIEventAdapter::RELEASE): { return handleRelease(ea, us); } case(osgGA::GUIEventAdapter::DRAG): case(osgGA::GUIEventAdapter::SCROLL): { return handleScroll(ea, us); } case(osgGA::GUIEventAdapter::MOVE): { return false; } case(osgGA::GUIEventAdapter::KEYDOWN): { return handleKeyDown(ea, us); } case(osgGA::GUIEventAdapter::KEYUP): { return handleKeyUp( ea, us ); } case(osgGA::GUIEventAdapter::FRAME): { if (_thrown) { if (calcMovement()) us.requestRedraw(); } return false; } default: return false; } }
void GenericCodeEditor::keyPressEvent(QKeyEvent * event) { hideMouseCursor(event); QTextCursor cursor( textCursor() ); bool updateCursor = false; if (event == QKeySequence::InsertLineSeparator) { // override to avoid entering a "soft" new line cursor.insertBlock(); updateCursor = true; } else { switch (event->key()) { case Qt::Key_BraceRight: case Qt::Key_BracketRight: case Qt::Key_ParenRight: handleKeyRightParentheses( event, cursor ); break; case Qt::Key_Delete: handleKeyDelete( event, cursor ); break; case Qt::Key_Backspace: handleKeyBackspace( event, cursor, updateCursor ); break; case Qt::Key_Down: handleKeyDown( event, cursor ); break; case Qt::Key_Up: handleKeyUp( event, cursor ); break; default: QPlainTextEdit::keyPressEvent(event); } } if (updateCursor) { cursor.setVerticalMovementX(-1); setTextCursor( cursor ); ensureCursorVisible(); } if (mDoc->keyDownActionEnabled() || Main::documentManager()->globalKeyDownActionEnabled()) doKeyAction(event); }
bool SdlEventSource::dispatchSDLEvent(SDL_Event &ev, Common::Event &event) { switch (ev.type) { case SDL_KEYDOWN: return handleKeyDown(ev, event); case SDL_KEYUP: return handleKeyUp(ev, event); case SDL_MOUSEMOTION: return handleMouseMotion(ev, event); case SDL_MOUSEBUTTONDOWN: return handleMouseButtonDown(ev, event); case SDL_MOUSEBUTTONUP: return handleMouseButtonUp(ev, event); case SDL_JOYBUTTONDOWN: return handleJoyButtonDown(ev, event); case SDL_JOYBUTTONUP: return handleJoyButtonUp(ev, event); case SDL_JOYAXISMOTION: return handleJoyAxisMotion(ev, event); case SDL_JOYHATMOTION: return handleJoyHatMotion(ev, event); case SDL_VIDEOEXPOSE: if (_graphicsManager) _graphicsManager->notifyVideoExpose(); return false; case SDL_VIDEORESIZE: if (_graphicsManager) { _graphicsManager->notifyResize(ev.resize.w, ev.resize.h); // If the screen changed, send an Common::EVENT_SCREEN_CHANGED int screenID = ((OSystem_SDL *)g_system)->getGraphicsManager()->getScreenChangeID(); if (screenID != _lastScreenID) { _lastScreenID = screenID; event.type = Common::EVENT_SCREEN_CHANGED; return true; } } return false; case SDL_QUIT: event.type = Common::EVENT_QUIT; return true; } return false; }
void TetrisState::handleInput(Tetris & tetris, SDL_Event e) { switch (e.type) { case SDL_MOUSEBUTTONDOWN: handleMouseDown(tetris, e); break; case SDL_MOUSEBUTTONUP: handleMouseUp(tetris, e); break; case SDL_KEYDOWN: handleKeyDown(tetris, e); break; case SDL_KEYUP: handleKeyUp(tetris, e); break; default: break; } }
bool SdlEventSource::dispatchSDLEvent(SDL_Event &ev, Common::Event &event) { switch (ev.type) { case SDL_KEYDOWN: return handleKeyDown(ev, event); case SDL_KEYUP: return handleKeyUp(ev, event); case SDL_MOUSEMOTION: return handleMouseMotion(ev, event); case SDL_MOUSEBUTTONDOWN: return handleMouseButtonDown(ev, event); case SDL_MOUSEBUTTONUP: return handleMouseButtonUp(ev, event); case SDL_JOYBUTTONDOWN: return handleJoyButtonDown(ev, event); case SDL_JOYBUTTONUP: return handleJoyButtonUp(ev, event); case SDL_JOYAXISMOTION: return handleJoyAxisMotion(ev, event); case SDL_VIDEOEXPOSE: if (_graphicsManager) _graphicsManager->notifyVideoExpose(); return false; case SDL_VIDEORESIZE: if (_graphicsManager) _graphicsManager->notifyResize(ev.resize.w, ev.resize.h); return false; case SDL_QUIT: event.type = Common::EVENT_QUIT; return true; } return false; }
bool SdlEventSource::dispatchSDLEvent(SDL_Event &ev, Common::Event &event) { switch (ev.type) { case SDL_KEYDOWN: return handleKeyDown(ev, event); case SDL_KEYUP: return handleKeyUp(ev, event); case SDL_MOUSEMOTION: return handleMouseMotion(ev, event); case SDL_MOUSEBUTTONDOWN: return handleMouseButtonDown(ev, event); case SDL_MOUSEBUTTONUP: return handleMouseButtonUp(ev, event); case SDL_JOYBUTTONDOWN: return handleJoyButtonDown(ev, event); case SDL_JOYBUTTONUP: return handleJoyButtonUp(ev, event); case SDL_JOYAXISMOTION: return handleJoyAxisMotion(ev, event); #if SDL_VERSION_ATLEAST(2, 0, 0) case SDL_MOUSEWHEEL: { Sint32 yDir = ev.wheel.y; // HACK: It seems we want the mouse coordinates supplied // with a mouse wheel event. However, SDL2 does not supply // these, thus we use whatever we got last time. It seems // these are always stored in _km.x, _km.y. if (!processMouseEvent(event, _km.x / MULTIPLIER, _km.y / MULTIPLIER)) { return false; } if (yDir < 0) { event.type = Common::EVENT_WHEELDOWN; return true; } else if (yDir > 0) { event.type = Common::EVENT_WHEELUP; return true; } else { return false; } } case SDL_TEXTINPUT: { // When we get a TEXTINPUT event it means we got some user input for // which no KEYDOWN exists. SDL 1.2 introduces a "fake" key down+up // in such cases. We will do the same to mimic it's behavior. event.type = Common::EVENT_KEYDOWN; event.kbd = Common::KeyState(Common::KEYCODE_INVALID, convUTF8ToUTF32(ev.text.text), 0); SDLModToOSystemKeyFlags(SDL_GetModState(), event); // Set the scroll lock sticky flag if (_scrollLock) event.kbd.flags |= Common::KBD_SCRL; // Fake a key up when we have a proper ascii value. _queuedFakeKeyUp = (event.kbd.ascii != 0); _fakeKeyUp = event; _fakeKeyUp.type = Common::EVENT_KEYUP; return _queuedFakeKeyUp; } case SDL_WINDOWEVENT: switch (ev.window.event) { case SDL_WINDOWEVENT_EXPOSED: if (_graphicsManager) _graphicsManager->notifyVideoExpose(); return false; // SDL2 documentation indicate that SDL_WINDOWEVENT_SIZE_CHANGED is sent either as a result // of the size being changed by an external event (for example the user resizing the window // or going fullscreen) or a call to the SDL API (for example SDL_SetWindowSize). On the // other hand SDL_WINDOWEVENT_RESIZED is only sent for resize resulting from an external event, // and is always preceded by a SDL_WINDOWEVENT_SIZE_CHANGED event. // We need to handle the programmatic resize as well so that the graphics manager always know // the current size. See comments in SdlWindow::createOrUpdateWindow for details of one case // where we need to call SDL_SetWindowSize and we need the resulting event to be processed. // However if the documentation is correct we can ignore SDL_WINDOWEVENT_RESIZED since when we // get one we should always get a SDL_WINDOWEVENT_SIZE_CHANGED as well. case SDL_WINDOWEVENT_SIZE_CHANGED: //case SDL_WINDOWEVENT_RESIZED: return handleResizeEvent(event, ev.window.data1, ev.window.data2); default: return false; } #else case SDL_VIDEOEXPOSE: if (_graphicsManager) _graphicsManager->notifyVideoExpose(); return false; case SDL_VIDEORESIZE: return handleResizeEvent(event, ev.resize.w, ev.resize.h); #endif case SDL_QUIT: event.type = Common::EVENT_QUIT; return true; } return false; }
bool SdlEventSource::dispatchSDLEvent(SDL_Event &ev, Common::Event &event) { switch (ev.type) { case SDL_KEYDOWN: return handleKeyDown(ev, event); case SDL_KEYUP: return handleKeyUp(ev, event); case SDL_MOUSEMOTION: return handleMouseMotion(ev, event); case SDL_MOUSEBUTTONDOWN: return handleMouseButtonDown(ev, event); case SDL_MOUSEBUTTONUP: return handleMouseButtonUp(ev, event); case SDL_JOYBUTTONDOWN: return handleJoyButtonDown(ev, event); case SDL_JOYBUTTONUP: return handleJoyButtonUp(ev, event); case SDL_JOYAXISMOTION: return handleJoyAxisMotion(ev, event); #if SDL_VERSION_ATLEAST(2, 0, 0) case SDL_MOUSEWHEEL: { Sint32 yDir = ev.wheel.y; #if SDL_VERSION_ATLEAST(2, 0, 4) if (ev.wheel.direction == SDL_MOUSEWHEEL_FLIPPED) { yDir *= -1; } #endif // HACK: It seems we want the mouse coordinates supplied // with a mouse wheel event. However, SDL2 does not supply // these, thus we use whatever we got last time. It seems // these are always stored in _km.x, _km.y. processMouseEvent(event, _km.x, _km.y); if (yDir < 0) { event.type = Common::EVENT_WHEELDOWN; return true; } else if (yDir > 0) { event.type = Common::EVENT_WHEELUP; return true; } else { return false; } } case SDL_TEXTINPUT: { // When we get a TEXTINPUT event it means we got some user input for // which no KEYDOWN exists. SDL 1.2 introduces a "fake" key down+up // in such cases. We will do the same to mimic it's behavior. event.type = Common::EVENT_KEYDOWN; event.kbd = Common::KeyState(Common::KEYCODE_INVALID, convUTF8ToUTF32(ev.text.text), 0); SDLModToOSystemKeyFlags(SDL_GetModState(), event); // Set the scroll lock sticky flag if (_scrollLock) event.kbd.flags |= Common::KBD_SCRL; // Fake a key up when we have a proper ascii value. _queuedFakeKeyUp = (event.kbd.ascii != 0); _fakeKeyUp = event; _fakeKeyUp.type = Common::EVENT_KEYUP; return _queuedFakeKeyUp; } case SDL_WINDOWEVENT: switch (ev.window.event) { case SDL_WINDOWEVENT_EXPOSED: if (_graphicsManager) _graphicsManager->notifyVideoExpose(); return false; case SDL_WINDOWEVENT_RESIZED: return handleResizeEvent(event, ev.window.data1, ev.window.data2); default: return false; } #else case SDL_VIDEOEXPOSE: if (_graphicsManager) _graphicsManager->notifyVideoExpose(); return false; case SDL_VIDEORESIZE: return handleResizeEvent(event, ev.resize.w, ev.resize.h); #endif case SDL_QUIT: event.type = Common::EVENT_QUIT; return true; } return false; }
/** Handles events. Returns true if handled, false otherwise.*/ bool OrbitCameraManipulator::handle( const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa ) { switch( ea.getEventType() ) { case osgGA::GUIEventAdapter::FRAME: return handleFrame( ea, aa ); case osgGA::GUIEventAdapter::RESIZE: return handleResize( ea, aa ); default: break; } if( ea.getHandled() ) { return false; } computeRayPointer( ea, aa ); bool handled = false; switch( ea.getEventType() ) { case osgGA::GUIEventAdapter::MOVE: handled = handleMouseMove( ea, aa ); break; case osgGA::GUIEventAdapter::DRAG: handled = handleMouseDrag( ea, aa ); break; case osgGA::GUIEventAdapter::PUSH: handled = handleMousePush( ea, aa ); break; case osgGA::GUIEventAdapter::RELEASE: handled = handleMouseRelease( ea, aa ); break; case osgGA::GUIEventAdapter::KEYDOWN: handled = handleKeyDown( ea, aa ); break; case osgGA::GUIEventAdapter::KEYUP: m_control_key_down = false; handled = handleKeyUp( ea, aa ); break; case osgGA::GUIEventAdapter::SCROLL: if( _flags & PROCESS_MOUSE_WHEEL ) handled = handleMouseWheel( ea, aa ); else handled = false; break; default: handled = false; } return handled; }