Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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);

		}
	}
}
Ejemplo n.º 3
0
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);
}
Ejemplo n.º 4
0
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);

			}
		}

	}

}
Ejemplo n.º 5
0
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;
}
Ejemplo n.º 6
0
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;
}