int PDC_get_key(void) { pdc_key_modifiers = 0L; if (!key_count) { DWORD count; ReadConsoleInput(pdc_con_in, &save_ip, 1, &count); event_count--; if (save_ip.EventType == MOUSE_EVENT) key_count = 1; else if (save_ip.EventType == KEY_EVENT) key_count = _get_key_count(); } if (key_count) { key_count--; switch (save_ip.EventType) { case KEY_EVENT: return _process_key_event(); case MOUSE_EVENT: return _process_mouse_event(); } } return -1; }
void QNitpickerPlatformWindow::_handle_input(unsigned int) { for (int i = 0, num_ev = _input_session.flush(); i < num_ev; i++) { Input::Event *ev = &_ev_buf[i]; bool const is_key_event = ev->type() == Input::Event::PRESS || ev->type() == Input::Event::RELEASE; bool const is_mouse_button_event = is_key_event && (ev->code() == Input::BTN_LEFT || ev->code() == Input::BTN_MIDDLE || ev->code() == Input::BTN_RIGHT); if (ev->type() == Input::Event::MOTION || ev->type() == Input::Event::WHEEL || is_mouse_button_event) { _process_mouse_event(ev); } else if (is_key_event && (ev->code() < 128)) { _process_key_event(ev); } } }
void QNitpickerPlatformWindow::_handle_input(unsigned int) { QList<Input::Event> touch_events; _input_session.for_each_event([&] (Input::Event const &event) { bool const is_key_event = event.type() == Input::Event::PRESS || event.type() == Input::Event::RELEASE; bool const is_mouse_button_event = is_key_event && (event.code() == Input::BTN_LEFT || event.code() == Input::BTN_MIDDLE || event.code() == Input::BTN_RIGHT); if (event.type() == Input::Event::MOTION || event.type() == Input::Event::WHEEL || is_mouse_button_event) { _process_mouse_event(event); } else if (event.type() == Input::Event::TOUCH) { touch_events.push_back(event); } else if (event.type() == Input::Event::CHARACTER) { Input::Event::Utf8 const utf8 = event.utf8(); if ((utf8.b0 >= 1) && (utf8.b0 <= 26)) { /* Ctrl-A .. Ctrl-Z */ QWindowSystemInterface::handleKeyEvent(0, QEvent::KeyPress, Qt::Key_A + (utf8.b0 - 1), Qt::ControlModifier); QWindowSystemInterface::handleKeyEvent(0, QEvent::KeyRelease, Qt::Key_A + (utf8.b0 - 1), Qt::ControlModifier); } else { char const utf8_string[] = { (char)utf8.b0, (char)utf8.b1, (char)utf8.b2, (char)utf8.b3, '\0' }; QWindowSystemInterface::handleKeyEvent(0, QEvent::KeyPress, 0, 0, QString::fromUtf8(utf8_string)); QWindowSystemInterface::handleKeyEvent(0, QEvent::KeyRelease, 0, 0, QString::fromUtf8(utf8_string)); } } else if (is_key_event && (event.code() < 128)) { _process_key_event(event); } }); /* process all gathered touch events */ _process_touch_events(touch_events); }
void QNitpickerPlatformWindow::handle_events() { /* handle resize events */ if (_signal_receiver.pending()) { _signal_receiver.wait_for_signal(); Framebuffer::Mode mode(_nitpicker_session.mode()); if ((mode.width() != _current_mode.width()) || (mode.height() != _current_mode.height()) || (mode.format() != _current_mode.format())) { QRect geo(geometry()); geo.setWidth(mode.width()); geo.setHeight(mode.height()); QWindowSystemInterface::handleGeometryChange(window(), geo); setGeometry(geo); } } /* handle input events */ if (_input_session.is_pending()) { for (int i = 0, num_ev = _input_session.flush(); i < num_ev; i++) { Input::Event *ev = &_ev_buf[i]; bool const is_key_event = ev->type() == Input::Event::PRESS || ev->type() == Input::Event::RELEASE; bool const is_mouse_button_event = is_key_event && (ev->code() == Input::BTN_LEFT || ev->code() == Input::BTN_MIDDLE || ev->code() == Input::BTN_RIGHT); if (ev->type() == Input::Event::MOTION || ev->type() == Input::Event::WHEEL || is_mouse_button_event) { _process_mouse_event(ev); } else if (is_key_event && (ev->code() < 128)) { _process_key_event(ev); } } } }
int PDC_get_key(void) { switch (event.type) { case SDL_QUIT: exit(1); case SDL_WINDOWEVENT: switch (event.window.event) { case SDL_WINDOWEVENT_SIZE_CHANGED: pdc_sheight = event.window.data2; pdc_swidth = event.window.data1; pdc_screen = SDL_GetWindowSurface(pdc_window); touchwin(curscr); wrefresh(curscr); if (!SP->resized) { SP->resized = TRUE; SP->key_code = TRUE; return KEY_RESIZE; } break; case SDL_WINDOWEVENT_RESTORED: case SDL_WINDOWEVENT_EXPOSED: SDL_UpdateWindowSurface(pdc_window); break; } break; case SDL_MOUSEMOTION: SDL_ShowCursor(SDL_ENABLE); case SDL_MOUSEBUTTONUP: case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEWHEEL: oldkey = SDLK_SPACE; if (SP->_trap_mbe) return _process_mouse_event(); break; case SDL_KEYUP: case SDL_KEYDOWN: case SDL_TEXTINPUT: PDC_mouse_set(); return _process_key_event(); case SDL_USEREVENT: PDC_blink_text(); } return -1; }
int PDC_get_key(void) { switch (event.type) { case SDL_QUIT: exit(1); case SDL_VIDEORESIZE: if (pdc_own_screen && (event.resize.h / pdc_fheight != LINES || event.resize.w / pdc_fwidth != COLS)) { pdc_sheight = event.resize.h; pdc_swidth = event.resize.w; if (!SP->resized) { SP->resized = TRUE; return KEY_RESIZE; } } break; case SDL_MOUSEMOTION: SDL_ShowCursor(SDL_ENABLE); case SDL_MOUSEBUTTONUP: case SDL_MOUSEBUTTONDOWN: oldkey = SDLK_SPACE; if (SP->_trap_mbe) return _process_mouse_event(); break; case SDL_KEYUP: case SDL_KEYDOWN: PDC_mouse_set(); return _process_key_event(); } return -1; }