Отправка ключевого события с помощью Xseb XsendEvent (без XTEST) - PullRequest
0 голосов
/ 22 марта 2019

Я хочу отправить 'a' с модификатором Shift в окно (с windowId wid) и ожидать, что оно отправит заглавная «А». Но он всегда отправляет строчные буквы «а» Я применяю модификатор shift к состоянию ключевого события. Что мне здесь не хватает?

    XKeyEvent xkpe;
    xkpe.type = KeyPress;
    xkpe.display = disp;
    xkpe.window = wid;
    xkpe.root = root;
    xkpe.subwindow = None;
    xkpe.time = CurrentTime;
    xkpe.x = 0;
    xkpe.y = 0;

    Window dummy;
    unsigned int mask,dummyUInt;
    int ret,dummyInt;
    ret = XQueryPointer(xkpe.display, xkpe.window, &dummy, &dummy,
        &dummyInt, &dummyInt, &dummyInt, &dummyInt, &mask);

    if(ret == 0){
        qDebug() << "XTranslateCoordinates unsuccessfull returning early";
        return;
    }

    xkpe.state = mask | ShiftMask;
    xkpe.keycode = XKeysymToKeycode(xkpe.display,XK_a);
    xkpe.same_screen = True;

    ret = XSendEvent(xkpe.display, wid, False, KeyPressMask | KeyReleaseMask, (XEvent *)&xkpe);

Дайте мне знать, поможет ли рабочий код ответить на этот вопрос.

...