Exemplo n.º 1
0
bool QHimePlatformInputContext::send_key_press(quint32 keysym, quint32 state) {
    dbg("send_key_press\n");
    char *rstr  = NULL;
    int result = hime_im_client_forward_key_press(hime_ch, keysym, state, &rstr);

    if (rstr) {
        send_str(rstr);
    }

    return result;
}
Exemplo n.º 2
0
bool QHIMEInputContext::x11FilterEvent( QWidget *keywidget, XEvent *event )
{
#ifndef QT_NO_HIME
    KeySym keysym;
    char static_buffer[256];
    char *buffer = static_buffer;
    int buffer_size = sizeof(static_buffer) - 1;

    if (event->type != KeyPress && event->type != KeyRelease)
        return TRUE;

    XKeyEvent *keve = (XKeyEvent *) event;

    XLookupString (keve, buffer, buffer_size, &keysym, NULL);
    int result;
    char *rstr = NULL;
    unsigned int state = keve->state;


    if (event->type == KeyPress) {
        result = hime_im_client_forward_key_press(hime_ch,
          keysym, state, &rstr);

        if (rstr) {
            QString inputText = QString::fromUtf8(rstr);

            sendIMEvent( QEvent::IMStart );
            sendIMEvent( QEvent::IMEnd, inputText );
        }
    } else {
       result = hime_im_client_forward_key_release(hime_ch,
         keysym, state, &rstr);
    }


    if (rstr)
        free(rstr);

    return result;
}