Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. XK_question generates asterisk key
Forum Updated to NodeBB v4.3 + New Features

XK_question generates asterisk key

Scheduled Pinned Locked Moved General and Desktop
1 Posts 1 Posters 1.3k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Offline
    T Offline
    t3chNo
    wrote on last edited by
    #1

    Hi, i'm writing a keyboard simulating app and i have a problem. I use Xlib to generate fake keyboard inputs. Sample code:
    @
    void InputSimulatorPrivate::keyPress(Qt::Key key)
    {
    XKeyEvent event;
    memset(&event, 0, sizeof(XKeyEvent));

    qDebug() << "InputSimulatorPrivate::keyPress:" << keyNameMap[key];
    
    event.type = KeyPress;
    event.keycode = keyMap[key];
    event.display = QX11Info::display();
    
    qDebug() << "InputSimulatorPrivate::keyRelease: keycode:" << QString::number(event.keycode, 16);
    
    XQueryPointer(QX11Info::display(),
                  RootWindow(QX11Info::display(), DefaultScreen(QX11Info::display())),
                  &event.root,
                  &event.window,
                  &event.x_root,
                  &event.y_root,
                  &event.x,
                  &event.y,
                  &event.state);
    
    event.subwindow = event.window;
    
    while(event.subwindow) {
        event.window = event.subwindow;
        XQueryPointer(QX11Info::display(), event.window,
                      &event.root,
                      &event.subwindow,
                      &event.x_root,
                      &event.y_root,
                      &event.x,
                      &event.y,
                      &event.state);
    }
    
    event.state = modifiers;
    
    if (XSendEvent(QX11Info::display(), event.window, True, KeyPressMask, (XEvent *) &event) == 0) {
        qDebug() << "InputSimulator::keyPress: XSendEvent error";
        return;
    }
    
    if (key == Qt::Key_Shift)
        modifiers |= ShiftMask;
    else if (key == Qt::Key_Control)
        modifiers |= ControlMask;
    
    XFlush(QX11Info::display());
    

    }
    @

    I generate keyMap like this:
    @keyMap[Qt::Key_Question] = XKeysymToKeycode(QX11Info::display(), XK_question);@

    InputSimulatorPrivate::keyPress function works fine with letters, numbers and some other keys. But when i give it Qt::Key_Question, application that i sent event gets Qt::Key_Asterisk. I can't make target app to get question key input.

    1 Reply Last reply
    0

    • Login

    • Login or register to search.
    • First post
      Last post
    0
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Get Qt Extensions
    • Unsolved