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; }
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; }