Send keystrokes help c++



  • Hi i am trying to send keystrokes but i am have some doubts.
    I send this:
    QFile klog;
    klog.setFileName(directorio.tempPath() + "/logg");
    klog.open(QFile::ReadOnly);
    cliente.sendMessage(from,"teclas|@|" + klog.readAll()); // crash when i do this
    klog.close();

    And i receive with this:
    if (parametros[0] == "teclas") //I check the message and write the text to my textfield
    {
    ui->textTeclas->setText(parametros[1]);
    }

    Any suggestion or idea is good received thanks. The problem is when i read the file and i send the message, the application crashes and i cant send the keystrokes that i have in the file . Thanks in advance.

    Aditional:

    I think i could create other button; send some message and put since my server:
    if(parametros[0] == "t") //message of client
    {
    int i;
    for(i=0;i<parametros.size();i++) //loop keystrokes
    {
    enviarTecla(parametros[i].toInt());
    }
    return;
    }

    And then send key for key, i dont know if this will work fine. Any suggestions. I need to read some file and send the strokes to my client. Only that. Thanks in advance.



  • Hi! I don't know what you're doing there but it's far too complicated. The way to go is to create QKeyEvent's and send them to the widget of your choice via postEvent. You can do the same with other events, like mouse input.



  • Hi i only want to send the content of one file to my client where i have other file. Because i could record the keys but i am trying to loop them and send to my client.


  • Lifetime Qt Champion

    What is the exact content of this file ?



  • it has normal text . one .txt file.


  • Lifetime Qt Champion

    Then why not just show its content in a QLabel or a QTextEdit/QPlainTextEdit if you want to be able to modify it ?



  • This post is deleted!


  • This post is deleted!


  • The function for send my keys is this:
    void enviarTecla(int tecla)
    {

    Display *display = XOpenDisplay(NULL);
    XKeyEvent event;
    
    switch (tecla)
    {
    case Qt::Key_Return:
        tecla = XK_Return ;
        break;
    case Qt::Key_Backspace:
        tecla = XK_BackSpace ;
        break;
    case Qt::Key_Escape:
        tecla = XK_Escape;
        break;
    case Qt::Key_Shift:
        tecla = XK_Shift_L ;
        break;
    case Qt::Key_CapsLock:
        tecla = XK_Caps_Lock;
        break;
    }
      int a;
      event.display = display;
      XGetInputFocus(display,&event.window,&a);
      event.root = 0;
      event.subwindow = None;
      event.time = CurrentTime;
      event.x = 1;
      event.y = 1;
      event.x_root = 1;
      event.y_root = 1;
      event.same_screen = TRUE;
    
      event.type = KeyPress;  //event.type = KeyRelease;
      event.keycode = XKeysymToKeycode (display,tecla);
      event.state = 0;
    
      XSendEvent(event.display, event.window, TRUE, KeyPressMask, (XEvent *)&event);
    
    
      event.display = display;
      XGetInputFocus(display,&event.window,&a);
      event.root = 0;
      event.subwindow = None;
      event.time = CurrentTime;
      event.x = 1;
      event.y = 1;
      event.x_root = 1;
      event.y_root = 1;
      event.same_screen = TRUE;
    
      event.type = KeyRelease;
      event.keycode = XKeysymToKeycode (display,tecla);
      event.state = 0;
    
      XSendEvent(event.display, event.window, TRUE, KeyReleaseMask, (XEvent *)&event);
      XCloseDisplay(display);
    

    }
    And when i send i am trying with this format:
    http://i.imgsafe.org/7e29fc31bc.png

    Not works


  • Lifetime Qt Champion

    Can you explain what you are trying to achieve ? That would help us help you more efficiently.



  • the question is very easy; in the table ascii between 0 and 32 exists keys of control for example enter. How i could simulate enter when someone press 13 ascii key for example? I am introducing these data in a file but shoz me events or i dont know look: http://i.imgsafe.org/7e29fc31bc.png
    thanks in advance. in Qt



  • i could do this: log.write(Qt::Key_Enter);



  • I need when me press enter key, in the table ascii 13 numbers, do a end line. Something like this.

     if(num==13){
               log.open(QFile::Append);
               log.write("\n");//Jump the line in textfile
               log.close();
    
            }
    

    But something working thx;



  • solved solved


  • Lifetime Qt Champion

    How did you solved it ?

    In any case, please mark the thread as solved using the "Topic Tools" button so that other forum users may know a solution has been found :)


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.