bool Window::on_key_press_event(GdkEventKey* _pstEvent) { // The menu accelerators are disabled when it is hidden if (_pstEvent->keyval == GDK_KEY_F11 && !m_poMenuBar->is_visible()) { vToggleFullscreen(); return true; } // Rewind key CTRL+B if (m_state_count_max > 0u && (_pstEvent->state & GDK_CONTROL_MASK) && _pstEvent->keyval == GDK_KEY_b) { // disable saves first and then connect new handler if (m_oEmuRewindSig.connected()) m_oEmuRewindSig.disconnect(); m_state_count_max = 0u; //return this->bOnEmuRewind(); m_oEmuRewindSig = Glib::signal_timeout().connect(sigc::mem_fun(*this, &Window::bOnEmuRewind), 65u); return true; } // Forward the keyboard event to the input module by faking a SDL event SDL_Event event; event.type = SDL_KEYDOWN; //event.key.timestamp = SDL_GetTicks(); //event.key.windowID = 0; //event.key.repeat = 0; //event.key.keysym.sym = (SDLKey)_pstEvent->keyval; event.key.keysym.sym = (SDL_Keycode)_pstEvent->keyval; inputProcessSDLEvent(event); return Gtk::Window::on_key_press_event(_pstEvent); }
bool Window::on_key_release_event(GdkEventKey * _pstEvent) { // Forward the keyboard event to the input module by faking a SDL event SDL_Event event; event.type = SDL_KEYUP; event.key.keysym.sym = (SDLKey)_pstEvent->keyval; inputProcessSDLEvent(event); return Gtk::Window::on_key_release_event(_pstEvent); }
void Window::vSDLPollEvents() { SDL_Event event; while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_JOYHATMOTION: case SDL_JOYBUTTONDOWN: case SDL_JOYBUTTONUP: case SDL_JOYAXISMOTION: case SDL_KEYDOWN: case SDL_KEYUP: inputProcessSDLEvent(event); break; } } }
bool Window::on_key_press_event(GdkEventKey * _pstEvent) { // The menu accelerators are disabled when it is hidden if (_pstEvent->keyval == GDK_F11 && !m_poMenuBar->is_visible()) { vToggleFullscreen(); return true; } // Forward the keyboard event to the input module by faking a SDL event SDL_Event event; event.type = SDL_KEYDOWN; event.key.keysym.sym = (SDLKey)_pstEvent->keyval; inputProcessSDLEvent(event); return Gtk::Window::on_key_press_event(_pstEvent); }
bool Window::on_key_release_event(GdkEventKey* _pstEvent) { // Rewind key CTRL+B if (_pstEvent->keyval == GDK_KEY_b /*&& !(_pstEvent->state & GDK_CONTROL_MASK)*/) { // connect save handler back if (m_oEmuRewindSig.connected()) m_oEmuRewindSig.disconnect(); m_state_count_max = m_poCoreConfig->oGetKey<unsigned short>("rewind_count_max"); m_oEmuRewindSig = Glib::signal_timeout().connect(sigc::mem_fun(*this, &Window::bOnEmuSaveStateRewind), m_rewind_interval); return true; } // Forward the keyboard event to the input module by faking a SDL event SDL_Event event; event.type = SDL_KEYUP; //event.key.timestamp = SDL_GetTicks(); //event.key.windowID = 0; //event.key.repeat = 0; //event.key.keysym.sym = (SDLKey)_pstEvent->keyval; event.key.keysym.sym = (SDL_Keycode)_pstEvent->keyval; inputProcessSDLEvent(event); return Gtk::Window::on_key_release_event(_pstEvent); }