アプリケーションを Qt4 から Qt5 に移植しています。
私の知る限り、Qt5 は Xlib イベントの処理をサポートしておらず、XCB イベントを使用しています (イベント ハンドラーはxcb_generic_event_t
オブジェクトを取得します)。ただしspnav
、私が使用しているライブラリは X11 イベントのみをサポートしています (XEvent
オブジェクトを解析して必要な情報を取得します)。Qt5でX11イベントを処理したり、変換xcb_generic_event_t
したりすることは可能XEvent
ですか?
Qt4 コードでは次のようになります。
bool MyApplication::x11EventFilter(XEvent *event)
{
spnav_event sev;
spnav_x11_event(event,&sev);
if(sev.type == SPNAV_EVENT_MOTION)
{
emit joystickPositionEvent(sev.motion.x,sev.motion.y,sev.motion.z,sev.motion.rx,sev.motion.ry,sev.motion.rz);
}
else if(sev.type == SPNAV_EVENT_BUTTON)
{
emit joystickButtonEvent(sev.button.bnum,sev.button.press!=0);
}
return false;
}