コード例 #1
0
ファイル: wxe_events.cpp プロジェクト: AugustoFernandes/otp
void wxeEvtListener::forward(wxEvent& event) 
{ 
#ifdef DEBUG
  if(!sendevent(&event, port)) 
    fprintf(stderr, "Couldn't send event!\r\n");
#else
sendevent(&event, port);
#endif
}
コード例 #2
0
ファイル: client.c プロジェクト: csimons/cswm
void
killclient(Arg *arg) {
    if(!sel)
        return;
    if(isprotodel(sel))
        sendevent(sel->win, wmatom[WMProtocols], wmatom[WMDelete]);
    else
        XKillClient(dpy, sel->win);
}
コード例 #3
0
ファイル: key.c プロジェクト: GregBowyer/wmii
static void
fake_keypress(ulong mod, KeyCode key) {
	XKeyEvent e;
	Client *c;

	c = disp.focus;
	if(c == nil || c->w.xid == 0)
		return;

	e.time = event_xtime;
	e.window = c->w.xid;
	e.state = mod;
	e.keycode = key;

	e.type = KeyPress;
	sendevent(&c->w, true, KeyPressMask, (XEvent*)&e);
	e.type = KeyRelease;
	sendevent(&c->w, true, KeyReleaseMask, (XEvent*)&e);

	sync();
}
コード例 #4
0
ファイル: xlib.c プロジェクト: misanthrop/crayfish
static void keyevent(Window w, unsigned code, int type)
{
	XKeyEvent e;
	e.display     = dpy;
	e.window      = w;
	e.root        = root;
	e.subwindow   = None;
	e.time        = CurrentTime;
	e.x = e.y = e.x_root = e.y_root = 1;
	e.same_screen = True;
	e.keycode     = code;
	e.state       = modifiers;
	e.type = type;
	sendevent(w, KeyPressMask, (XEvent*)&e);
}
コード例 #5
0
ファイル: xlib.c プロジェクト: misanthrop/crayfish
static void buttonevent(unsigned button, int type)
{
	XButtonEvent e;
	memset(&e, 0, sizeof(e));
	e.button = button;
	e.type = type;
	e.same_screen = True;
	e.subwindow = root;
	e.state = modifiers;
	do
	{
		e.window = e.subwindow;
		XQueryPointer(dpy, e.window, &e.root, &e.subwindow, &e.x_root, &e.y_root, &e.x, &e.y, &e.state);
	}
	while(e.subwindow);
	sendevent(PointerWindow, ButtonPressMask, (XEvent*)&e);
}
コード例 #6
0
ファイル: event.cpp プロジェクト: NotYours180/antimicro
// TODO: Change to only use this routine when using a relative mouse
// pointer to fake absolute mouse moves. Otherwise, don't worry about
// current position of the mouse and just send an absolute mouse pointer
// event.
void sendSpringEvent(PadderCommon::springModeInfo *fullSpring,
                     PadderCommon::springModeInfo *relativeSpring,
                     int* const mousePosX, int* const mousePosY)
{
    PadderCommon::mouseHelperObj.mouseTimer.stop();

    if ((fullSpring->displacementX >= -2.0 && fullSpring->displacementX <= 1.0 &&
        fullSpring->displacementY >= -2.0 && fullSpring->displacementY <= 1.0) ||
        (relativeSpring && (relativeSpring->displacementX >= -2.0 && relativeSpring->displacementX <= 1.0 &&
        relativeSpring->displacementY >= -2.0 && relativeSpring->displacementY <= 1.0)))
    {
        int xmovecoor = 0;
        int ymovecoor = 0;
        int width = 0;
        int height = 0;
        int midwidth = 0;
        int midheight = 0;
        int destSpringWidth = 0;
        int destSpringHeight = 0;
        int destMidWidth = 0;
        int destMidHeight = 0;
        int currentMouseX = 0;
        int currentMouseY = 0;

        //QDesktopWidget deskWid;
        if (fullSpring->screen >= PadderCommon::mouseHelperObj.getDesktopWidget()->screenCount())
        {
            fullSpring->screen = -1;
        }

        QRect deskRect = PadderCommon::mouseHelperObj.getDesktopWidget()->screenGeometry(fullSpring->screen);
        width = deskRect.width();
        height = deskRect.height();
#if defined(Q_OS_UNIX) && defined(WITH_X11)
        QPoint currentPoint;
  #if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
        if (QApplication::platformName() == QStringLiteral("xcb"))
        {
  #endif
            currentPoint = X11Extras::getInstance()->getPos();
  #if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
        }
        else
        {
            currentPoint = QCursor::pos();
        }
  #endif
#else
        QPoint currentPoint = QCursor::pos();
#endif
        currentMouseX = currentPoint.x();
        currentMouseY = currentPoint.y();

        midwidth = width / 2;
        midheight = height / 2;

        int springWidth = fullSpring->width;
        int springHeight = fullSpring->height;

        if (springWidth >= 2 && springHeight >= 2)
        {
            destSpringWidth = qMin(springWidth, width);
            destSpringHeight = qMin(springHeight, height);
        }
        else
        {
            destSpringWidth = width;
            destSpringHeight = height;
        }

        destMidWidth = destSpringWidth / 2;
        destMidHeight = destSpringHeight / 2;

        unsigned int pivotX = currentMouseX;
        unsigned int pivotY = currentMouseY;
        if (relativeSpring)
        {
            if (PadderCommon::mouseHelperObj.pivotPoint[0] != -1)
            {
                pivotX = PadderCommon::mouseHelperObj.pivotPoint[0];
            }
            else
            {
                pivotX = currentMouseX;
            }

            if (PadderCommon::mouseHelperObj.pivotPoint[1] != -1)
            {
                pivotY = PadderCommon::mouseHelperObj.pivotPoint[1];
            }
            else
            {
                pivotY = currentMouseY;
            }
        }

        xmovecoor = (fullSpring->displacementX >= -1.0) ? (midwidth + (fullSpring->displacementX * destMidWidth) + deskRect.x()): pivotX;
        ymovecoor = (fullSpring->displacementY >= -1.0) ? (midheight + (fullSpring->displacementY * destMidHeight) + deskRect.y()) : pivotY;

        unsigned int fullSpringDestX = xmovecoor;
        unsigned int fullSpringDestY = ymovecoor;

        unsigned int destRelativeWidth = 0;
        unsigned int destRelativeHeight = 0;
        if (relativeSpring && relativeSpring->width >= 2 && relativeSpring->height >= 2)
        {
            destRelativeWidth = relativeSpring->width;
            destRelativeHeight = relativeSpring->height;

            int xRelativeMoovCoor = 0;
            if (relativeSpring->displacementX >= -1.0)
            {
                xRelativeMoovCoor = (relativeSpring->displacementX * destRelativeWidth) / 2;
            }

            int yRelativeMoovCoor = 0;
            if (relativeSpring->displacementY >= -1.0)
            {
                yRelativeMoovCoor = (relativeSpring->displacementY * destRelativeHeight) / 2;
            }

            xmovecoor += xRelativeMoovCoor;
            ymovecoor += yRelativeMoovCoor;
        }


        if (mousePosX)
        {
            *mousePosX = xmovecoor;
        }

        if (mousePosY)
        {
            *mousePosY = ymovecoor;
        }

        if (xmovecoor != currentMouseX || ymovecoor != currentMouseY)
        {
            double diffx = abs(currentMouseX - xmovecoor);
            double diffy = abs(currentMouseY - ymovecoor);

            // If either position is set to center, force update.
            if (xmovecoor == (deskRect.x() + midwidth) || ymovecoor == (deskRect.y() + midheight))
            {
#if defined(Q_OS_UNIX)
                BaseEventHandler *handler = EventHandlerFactory::getInstance()->handler();
                if (fullSpring->screen <= -1)
                {
                    if (handler->getIdentifier() == "xtest")
                    {
                        EventHandlerFactory::getInstance()->handler()->sendMouseAbsEvent(xmovecoor,
                                                                                         ymovecoor);
                    }
                    else if (handler->getIdentifier() == "uinput")
                    {
                        EventHandlerFactory::getInstance()->handler()
                                ->sendMouseSpringEvent(xmovecoor, ymovecoor, width, height);
                    }
                }
                else
                {
                    EventHandlerFactory::getInstance()->handler()->sendMouseEvent(xmovecoor - currentMouseX,
                                                                                  ymovecoor - currentMouseY);
                }

#elif defined(Q_OS_WIN)
                if (fullSpring->screen <= -1)
                {
                    EventHandlerFactory::getInstance()->handler()
                            ->sendMouseSpringEvent(xmovecoor, ymovecoor, width, height);
                }
                else
                {
                    sendevent(xmovecoor - currentMouseX, ymovecoor - currentMouseY);
                }
#endif

            }
            else if (!PadderCommon::mouseHelperObj.springMouseMoving && relativeSpring &&
                (relativeSpring->displacementX >= -1.0 || relativeSpring->displacementY >= -1.0) &&
                (diffx >= destRelativeWidth*.013 || diffy >= destRelativeHeight*.013))
            {
                PadderCommon::mouseHelperObj.springMouseMoving = true;
#if defined(Q_OS_UNIX)
                BaseEventHandler *handler = EventHandlerFactory::getInstance()->handler();
                if (fullSpring->screen <= -1)
                {
                    if (handler->getIdentifier() == "xtest")
                    {
                        EventHandlerFactory::getInstance()->handler()->sendMouseAbsEvent(xmovecoor,
                                                                                         ymovecoor);
                    }
                    else if (handler->getIdentifier() == "uinput")
                    {
                        EventHandlerFactory::getInstance()->handler()
                                ->sendMouseSpringEvent(xmovecoor, ymovecoor, width, height);
                    }
                }
                else
                {
                    EventHandlerFactory::getInstance()->handler()->sendMouseEvent(xmovecoor - currentMouseX,
                                                                                  ymovecoor - currentMouseY);
                }

#elif defined(Q_OS_WIN)
                if (fullSpring->screen <= -1)
                {
                    EventHandlerFactory::getInstance()->handler()
                            ->sendMouseSpringEvent(xmovecoor, ymovecoor, width, height);
                }
                else
                {
                    sendevent(xmovecoor - currentMouseX, ymovecoor - currentMouseY);
                }
#endif
                PadderCommon::mouseHelperObj.mouseTimer.start(
                            qMax(JoyButton::getMouseRefreshRate(),
                                 JoyButton::getGamepadRefreshRate()) + 1);
            }
            else if (!PadderCommon::mouseHelperObj.springMouseMoving && (diffx >= destSpringWidth*.013 || diffy >= destSpringHeight*.013))
            {
                PadderCommon::mouseHelperObj.springMouseMoving = true;
#if defined(Q_OS_UNIX)

                BaseEventHandler *handler = EventHandlerFactory::getInstance()->handler();
                if (fullSpring->screen <= -1)
                {
                    if (handler->getIdentifier() == "xtest")
                    {
                        EventHandlerFactory::getInstance()->handler()->sendMouseAbsEvent(xmovecoor,
                                                                                         ymovecoor);
                    }
                    else if (handler->getIdentifier() == "uinput")
                    {
                        EventHandlerFactory::getInstance()->handler()
                                ->sendMouseSpringEvent(xmovecoor, ymovecoor, width, height);
                    }
                }
                else
                {
                    EventHandlerFactory::getInstance()->handler()->sendMouseEvent(xmovecoor - currentMouseX,
                                                                                  ymovecoor - currentMouseY);
                }


#elif defined(Q_OS_WIN)
                if (fullSpring->screen <= -1)
                {
                    EventHandlerFactory::getInstance()->handler()
                            ->sendMouseSpringEvent(xmovecoor, ymovecoor, width, height);
                }
                else
                {
                    sendevent(xmovecoor - currentMouseX, ymovecoor - currentMouseY);
                }
#endif

                PadderCommon::mouseHelperObj.mouseTimer.start(
                            qMax(JoyButton::getMouseRefreshRate(),
                                 JoyButton::getGamepadRefreshRate()) + 1);
            }

            else if (PadderCommon::mouseHelperObj.springMouseMoving && (diffx < 2 && diffy < 2))
            {
                PadderCommon::mouseHelperObj.springMouseMoving = false;
            }

            else if (PadderCommon::mouseHelperObj.springMouseMoving)
            {
#if defined(Q_OS_UNIX)
                BaseEventHandler *handler = EventHandlerFactory::getInstance()->handler();
                if (fullSpring->screen <= -1)
                {
                    if (handler->getIdentifier() == "xtest")
                    {
                        EventHandlerFactory::getInstance()->handler()->sendMouseAbsEvent(xmovecoor,
                                                                                         ymovecoor);
                    }
                    else if (handler->getIdentifier() == "uinput")
                    {
                        EventHandlerFactory::getInstance()->handler()
                                ->sendMouseSpringEvent(xmovecoor, ymovecoor, width, height);
                    }
                }
                else
                {
                    EventHandlerFactory::getInstance()->handler()->sendMouseEvent(xmovecoor - currentMouseX,
                                                                                  ymovecoor - currentMouseY);
                }

#elif defined(Q_OS_WIN)
                if (fullSpring->screen <= -1)
                {
                    EventHandlerFactory::getInstance()->handler()
                            ->sendMouseSpringEvent(xmovecoor, ymovecoor, width, height);
                }
                else
                {
                    sendevent(xmovecoor - currentMouseX, ymovecoor - currentMouseY);
                }
#endif

                PadderCommon::mouseHelperObj.mouseTimer.start(
                            qMax(JoyButton::getMouseRefreshRate(),
                                 JoyButton::getGamepadRefreshRate()) + 1);
            }


            PadderCommon::mouseHelperObj.previousCursorLocation[0] = currentMouseX;
            PadderCommon::mouseHelperObj.previousCursorLocation[1] = currentMouseY;
            PadderCommon::mouseHelperObj.pivotPoint[0] = fullSpringDestX;
            PadderCommon::mouseHelperObj.pivotPoint[1] = fullSpringDestY;
        }
        else if (PadderCommon::mouseHelperObj.previousCursorLocation[0] == xmovecoor &&
                 PadderCommon::mouseHelperObj.previousCursorLocation[1] == ymovecoor)
        {
            PadderCommon::mouseHelperObj.springMouseMoving = false;
        }
        else
        {
            PadderCommon::mouseHelperObj.previousCursorLocation[0] = currentMouseX;
            PadderCommon::mouseHelperObj.previousCursorLocation[1] = currentMouseY;
            PadderCommon::mouseHelperObj.pivotPoint[0] = fullSpringDestX;
            PadderCommon::mouseHelperObj.pivotPoint[1] = fullSpringDestY;

            PadderCommon::mouseHelperObj.mouseTimer.start(
                        qMax(JoyButton::getMouseRefreshRate(),
                             JoyButton::getGamepadRefreshRate()) + 1);
        }
    }
    else
    {
        PadderCommon::mouseHelperObj.springMouseMoving = false;
        PadderCommon::mouseHelperObj.pivotPoint[0] = -1;
        PadderCommon::mouseHelperObj.pivotPoint[1] = -1;
    }
}
コード例 #7
0
ファイル: main.cpp プロジェクト: CloudVPS/openpanel-grace
	void		 shutdown (void)
				 {
				 	sendevent ("shutdown");
				 	shutcond.wait ();
				 }
コード例 #8
0
ファイル: robert.cpp プロジェクト: barzooka/robert
int main(int argc, char* argv[])
{
    if (argc > 6)
    {
        print_usage();
        return 2; 
    }

    char* eventFilePath = NULL;

    int repeat = 1;
    int interval = -1;

    int repeatInterval = 1000;

    for (int i = 1; i < argc; i++)
    {
        char* arg = *(argv + i);
        if (!strncmp(arg, "-r:", 3))
        {
            repeat = atoi(arg + 3);
        }
        else if (!strncmp(arg, "-i:", 3))
        {
            interval = atoi(arg + 3) * 1000;
        }
        else if (!strncmp(arg, "-ri:", 4))
        {
            repeatInterval = atoi(arg + 4) * 1000;
        }
        else if (!strcmp(arg, "-d"))
        {
            gDebug = 1;
        }
        else if (!strcmp(arg, "-h"))
        {
            print_usage();
            return 0;
        }
        else if (!strcmp(arg, "-rec"))
        {
            return recordEvent("./event_queue");
        }
        else if (!strncmp(arg, "-rec:", 5))
        {
            return recordEvent(arg + 5);
        }
        else
        {
            if (i == 1 && strncmp(arg, "-", 1))
            {
                eventFilePath = argv[1];
            }
            else
            {
                printf("Unkown parameter %s\n", arg);
                print_usage();
                return 2;
            }
        }
    }

    memset(gFds, 0, sizeof(device_fd_map_t) * MAX_FD);

    if (repeat >= MAX_REPEAT)
    {
        printf("Repeat times %d limit exceed.\n", MAX_REPEAT - 1);
    }

    printf("Play with REPEATE=%d, INTERVAL=%d\n", repeat, interval);

    // control the repeat
    for (int r = 0; r != repeat; r = (r + 1) % MAX_REPEAT)
    {
        // open recorded event queue.
        FILE* file = NULL;

        if (eventFilePath)
        {
            file = fopen(eventFilePath, "rt");
            if (!file)
            {
                printf("Can not open file %s, is it exists?\n", eventFilePath);
                return 1;
            }
        }
        else
        {
            printf(">> No event file specified. Using stdin instead. <<\n");
            file = stdin;
            if (repeat != 1)
            {
                printf("WARNING: -r parameters can not be used while using stdin.\n");
                printf("         Reseting to -r:1\n");
                repeat = 1;
            }
        }

        char* first,* last;
        char buffer[1024];
        int sec = 0, usec = 0;
        char devicePath[256];
        unsigned int type = 0, code = 0, arg = 0;
        usecs_t timeOffset = 0;
        bool timeOffsetSet = false;
        usecs_t lastEventTime = 0;

        // starts playback
        while (fgets(buffer, 1024, file) != NULL)
        {
            sec = usec = -1;
            PRINT_IF(gDebug, "Parsing %s\n", buffer);
            splite(buffer, &first, &last);

            // try android 4.0 output style
            sscanf(first, "%d-%d: %s", &sec, &usec, devicePath);

            if (sec == -1 || usec == -1)
            {
                //try android 4.1 & 4.2 output style
                sscanf(first, "[%d.%d] %s", &sec, &usec, devicePath);
                if (sec == -1 || usec == -1)
                {
                    printf("Skiping invalid line: %s\n", buffer);
                    continue;  // This line is not a valid event record
                }
            }

            sscanf(last, "%x %x %x", &type, &code, &arg);

            PRINT_IF(gDebug, "Event Timestamp=%d.%ds\n", sec, usec);
            int fd = getOrOpenFd(devicePath);
            // Calculating times to sleep
            usecs_t sleepTime = 0;

            // event time stamp
            usecs_t time = combineTime(sec, usec);

            if (!timeOffsetSet)
            {
                timeOffsetSet = true;
                timeOffset = systemTime() - time;
            }

            sleepTime = (time + timeOffset) - systemTime();

            if (interval > 0)
            {
                usleep(interval);
            }
            else if (interval == 0)
            {
            }
            else if (sleepTime > 0)
            {
                PRINT_IF(gDebug || sleepTime > 1000000 /* 1s */, "Sleep %lld.%llds\n", sleepTime / 1000000, sleepTime % 1000000);
                usleep(sleepTime);
            }

            PRINT_IF(gDebug, "-> %s: %d, %d, %d\n", devicePath, type, code, arg);

            if (sendevent(fd, type ,code, arg) != 0)
                exit(0);
        }
        fclose(file);
        if (repeat < 0)
            printf ("Done playback [ %d / Forever ]\n", r + 1);
        else
            printf ("Done playback [ %d / %d ]\n", r + 1, repeat);
        if (repeatInterval > 0 && r + 1 != repeat)
            usleep(repeatInterval);
    }
    clearFds();
    printf("All done\n");
    exit(0);
}