KHTML
kxeventutil.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <X11/X.h>
00023 #include <X11/Xlib.h>
00024 #include <X11/Xutil.h>
00025 #include <X11/Xatom.h>
00026 #include <qstring.h>
00027 #include <qstringlist.h>
00028
00029 #include "kxeventutil.h"
00030
00031 QString KXEventUtil::getXAnyEventInfo(XEvent *xevent) {
00032 XAnyEvent *e = &xevent->xany;
00033 QString winname("window");
00034 switch (e->type) {
00035 case GraphicsExpose:
00036 case NoExpose:
00037 winname="drawable";
00038 break;
00039 case CreateNotify:
00040 case ConfigureRequest:
00041 winname="parent";
00042 break;
00043 case DestroyNotify:
00044 case ConfigureNotify:
00045 case MapNotify:
00046 case ReparentNotify:
00047 case UnmapNotify:
00048 winname="event";
00049 default:
00050 break;
00051 }
00052 QString s("serial=%1 send_event=%2 display=0x%3 %4=%5");
00053 return
00054 s.arg(e->serial)
00055 .arg(e->send_event)
00056 .arg((long)e->display, 0, 16)
00057 .arg(winname)
00058 .arg(e->window);
00059 }
00060 QString KXEventUtil::getXButtonEventInfo(XEvent *xevent) {
00061 XButtonEvent *e = &xevent->xbutton;
00062 QString s("root=%1 subwindow=%2 time=%3 x=%4 y=%5 x_root=%6 y_root=%7 state=%8 button=%9");
00063 QString t(" same_screen=%1");
00064 return
00065 s.arg(e->root)
00066 .arg(e->subwindow)
00067 .arg(e->time)
00068 .arg(e->x)
00069 .arg(e->y)
00070 .arg(e->x_root)
00071 .arg(e->y_root)
00072 .arg(e->state)
00073 .arg(e->button)
00074 +t.arg(e->same_screen);
00075 }
00076
00077 QString KXEventUtil::getXKeyEventInfo(XEvent *xevent) {
00078 XKeyEvent *e = &xevent->xkey;
00079 QString s("root=%1 subwindow=%2 time=%3 x=%4 y=%5 x_root=%6 y_root=%7 state=%8 keycode=%9");
00080 QString t(" same_screen=%1");
00081 return
00082 s.arg(e->root)
00083 .arg(e->subwindow)
00084 .arg(e->time)
00085 .arg(e->x)
00086 .arg(e->y)
00087 .arg(e->x_root)
00088 .arg(e->y_root)
00089 .arg(e->state)
00090 .arg(e->keycode)
00091 +t.arg(e->same_screen);
00092 }
00093
00094 QString KXEventUtil::getXMotionEventInfo(XEvent *xevent) {
00095 XMotionEvent *e = &xevent->xmotion;
00096 QString s("root=%1 subwindow=%2 time=%3 x=%4 y=%5 x_root=%6 y_root=%7 state=%8 is_hint=%9");
00097 QString t(" same_screen=%1");
00098 return
00099 s.arg(e->root)
00100 .arg(e->subwindow)
00101 .arg(e->time)
00102 .arg(e->x)
00103 .arg(e->y)
00104 .arg(e->x_root)
00105 .arg(e->y_root)
00106 .arg(e->state)
00107 .arg(e->is_hint)
00108 +t.arg(e->same_screen);
00109 }
00110 QString KXEventUtil::getXCrossingEventInfo(XEvent *xevent) {
00111 XCrossingEvent *e = &xevent->xcrossing;
00112 QString ms, ds;
00113 switch (e->mode) {
00114 case NotifyNormal: ms = "NotifyNormal"; break;
00115 case NotifyGrab: ms = "NotifyGrab"; break;
00116 case NotifyUngrab: ms = "NotifyUngrab"; break;
00117 default: ms="?";
00118 }
00119 switch (e->detail) {
00120 case NotifyAncestor: ds = "NotifyAncestor"; break;
00121 case NotifyVirtual: ds = "NotifyVirtual"; break;
00122 case NotifyInferior: ds = "NotifyInferior"; break;
00123 case NotifyNonlinear: ds = "NotifyNonlinear"; break;
00124 case NotifyNonlinearVirtual: ds = "NotifyNonlinearVirtual"; break;
00125 default: ds="?";
00126 }
00127
00128 QString s("root=%1 subwindow=%2 time=%3 x=%4 y=%5 x_root=%6 y_root=%7 mode=%8=%9 ");
00129 QString t("detail=%1=%2 same_screen=%3 focus=%4 state=%5");
00130 return
00131 s.arg(e->root)
00132 .arg(e->subwindow)
00133 .arg(e->time)
00134 .arg(e->x)
00135 .arg(e->y)
00136 .arg(e->x_root)
00137 .arg(e->y_root)
00138 .arg(e->mode).arg(ms)
00139 +
00140 t.arg(e->detail).arg(ds)
00141 .arg(e->same_screen)
00142 .arg(e->focus)
00143 .arg(e->state);
00144 }
00145 QString KXEventUtil::getXFocusChangeEventInfo(XEvent *xevent) {
00146 XFocusChangeEvent *e = &xevent->xfocus;
00147 QString s("mode=%1 detail=%2");
00148 return
00149 s.arg(e->mode)
00150 .arg(e->detail);
00151 }
00152 QString KXEventUtil::getXExposeEventInfo(XEvent *xevent) {
00153 XExposeEvent *e = &xevent->xexpose;
00154 QString s("x=%1 y=%2 width=%3 height=%4 count=%5");
00155 return
00156 s.arg(e->x)
00157 .arg(e->y)
00158 .arg(e->width)
00159 .arg(e->height)
00160 .arg(e->count);
00161 }
00162
00163
00164
00165 QString KXEventUtil::getXGraphicsExposeEventInfo(XEvent *xevent) {
00166 XGraphicsExposeEvent *e = &xevent->xgraphicsexpose;
00167 QString s("x=%1 y=%2 width=%3 height=%4 count=%5 major_code=%6 minor_code=%7");
00168 return
00169 s.arg(e->x)
00170 .arg(e->y)
00171 .arg(e->width)
00172 .arg(e->height)
00173 .arg(e->count)
00174 .arg(e->major_code)
00175 .arg(e->minor_code);
00176 }
00177 QString KXEventUtil::getXNoExposeEventInfo(XEvent *xevent) {
00178 XNoExposeEvent *e = &xevent->xnoexpose;
00179 QString s("major_code=%1 minor_code=%2");
00180 return
00181 s.arg(e->major_code)
00182 .arg(e->minor_code);
00183 }
00184
00185
00186 QString KXEventUtil::getXCreateWindowEventInfo(XEvent *xevent) {
00187 XCreateWindowEvent *e = &xevent->xcreatewindow;
00188 QString s("window=%1 x=%2 y=%3 width=%4 height=%5 border_width=%6 override_redirect=%7");
00189 return
00190 s.arg(e->window)
00191 .arg(e->x)
00192 .arg(e->y)
00193 .arg(e->width)
00194 .arg(e->height)
00195 .arg(e->border_width)
00196 .arg(e->override_redirect);
00197 }
00198
00199 QString KXEventUtil::getXDestroyWindowEventInfo(XEvent *xevent) {
00200 XDestroyWindowEvent *e = &xevent->xdestroywindow;
00201 QString s("window=%1");
00202 return
00203 s.arg(e->window);
00204 }
00205 QString KXEventUtil::getXMapEventInfo(XEvent *xevent) {
00206 XMapEvent *e = &xevent->xmap;
00207 QString s("window=%1 override_redirect=%2");
00208 return
00209 s.arg(e->window)
00210 .arg(e->override_redirect);
00211 }
00212 QString KXEventUtil::getXMappingEventInfo(XEvent *xevent) {
00213 XMappingEvent *e = &xevent->xmapping;
00214 QString s("request=%1 first_keycode=%2 count=%3");
00215 return
00216 s.arg(e->request)
00217 .arg(e->first_keycode)
00218 .arg(e->count);
00219 }
00220 QString KXEventUtil::getXReparentEventInfo(XEvent *xevent) {
00221 XReparentEvent *e = &xevent->xreparent;
00222 QString s("window=%1 parent=%2 x=%3 y=%4");
00223 return
00224 s.arg(e->window)
00225 .arg(e->parent)
00226 .arg(e->x)
00227 .arg(e->y);
00228 }
00229 QString KXEventUtil::getXUnmapEventInfo(XEvent *xevent) {
00230 XUnmapEvent *e = &xevent->xunmap;
00231 QString s("window=%1 from_configure=%2");
00232 return
00233 s.arg(e->window)
00234 .arg(e->from_configure);
00235 }
00236
00237 QString KXEventUtil::getXConfigureEventInfo(XEvent *xevent) {
00238 XConfigureEvent *e = &xevent->xconfigure;
00239 QString s("window=%1 x=%2 y=%2 width=%3 height=%4 border_width=%5 above=%6 override_redirect=%7");
00240 return
00241 s.arg(e->window)
00242 .arg(e->x).arg(e->y)
00243 .arg(e->width).arg(e->height)
00244 .arg(e->border_width)
00245 .arg(e->above)
00246 .arg(e->override_redirect);
00247 }
00248
00249 QString KXEventUtil::getXConfigureRequestEventInfo(XEvent *xevent) {
00250 XConfigureRequestEvent *e = &xevent->xconfigurerequest;
00251 unsigned vm = e->value_mask;
00252 QStringList vml;
00253 if (vm & CWX) vml.append("CWX");
00254 if (vm & CWY) vml.append("CWY");
00255 if (vm & CWWidth) vml.append("CWWidth");
00256 if (vm & CWHeight) vml.append("CWHeight");
00257 if (vm & CWBorderWidth) vml.append("CWBorderWidth");
00258 if (vm & CWSibling) vml.append("CWSibling");
00259 if (vm & CWStackMode) vml.append("CWStackMode");
00260 QString vms = vml.join("|");
00261 QString s("window=%1 x=%2 y=%2 width=%3 height=%4 border_width=%5 above=%6 detail=%7 value_mask=0x%8=%9");
00262 return
00263 s.arg(e->window)
00264 .arg(e->x).arg(e->y)
00265 .arg(e->width).arg(e->height)
00266 .arg(e->border_width)
00267 .arg(e->above)
00268 .arg(e->detail)
00269 .arg(e->value_mask, 0, 16)
00270 .arg(vms);
00271 }
00272 QString KXEventUtil::getX11EventInfo( XEvent* e )
00273 {
00274 QString anyInfo = getXAnyEventInfo(e);
00275 QString info = "";
00276 QString s;
00277 switch( e->type )
00278 {
00279 case KeyPress:
00280 s = "KeyPress";
00281 info = getXKeyEventInfo(e);
00282 break;
00283 case KeyRelease:
00284 s = "KeyRelease";
00285 info = getXKeyEventInfo(e);
00286 break;
00287 case ButtonPress:
00288 s = "ButtonPress";
00289 info = getXButtonEventInfo(e);
00290 break;
00291 case ButtonRelease:
00292 s = "ButtonRelease";
00293 info = getXButtonEventInfo(e);
00294 break;
00295 case MotionNotify:
00296 s = "MotionNotify";
00297 info = getXMotionEventInfo(e);
00298 break;
00299 case EnterNotify:
00300 s = "EnterNotify";
00301 info = getXCrossingEventInfo(e);
00302 break;
00303 case LeaveNotify:
00304 s = "LeaveNotify";
00305 info = getXCrossingEventInfo(e);
00306 break;
00307 case FocusIn:
00308 s = "FocusIn";
00309 info = getXFocusChangeEventInfo(e);
00310 break;
00311 case FocusOut:
00312 s = "FocusOut";
00313 info = getXFocusChangeEventInfo(e);
00314 break;
00315 case KeymapNotify:
00316 s = "KeymapNotify";
00317 break;
00318 case Expose:
00319 s = "Expose";
00320 info = getXExposeEventInfo(e);
00321 break;
00322 case GraphicsExpose:
00323 s = "GraphicsExpose";
00324 info = getXGraphicsExposeEventInfo(e);
00325 break;
00326 case NoExpose:
00327 info = getXNoExposeEventInfo(e);
00328 s = "NoExpose";
00329 break;
00330 case VisibilityNotify:
00331 s = "VisibilityNotify";
00332 break;
00333 case CreateNotify:
00334 s = "CreateNotify";
00335 info = getXCreateWindowEventInfo(e);
00336 break;
00337 case DestroyNotify:
00338 s = "DestroyNotify";
00339 info = getXDestroyWindowEventInfo(e);
00340 break;
00341 case UnmapNotify:
00342 s = "UnmapNotify";
00343 info = getXUnmapEventInfo(e);
00344 break;
00345 case MapNotify:
00346 s = "MapNotify";
00347 info = getXMapEventInfo(e);
00348 break;
00349 case MapRequest:
00350 s = "MapRequest";
00351 break;
00352 case ReparentNotify:
00353 s = "ReparentNotify";
00354 info = getXReparentEventInfo(e);
00355 break;
00356 case ConfigureNotify:
00357 s = "ConfigureNotify";
00358 info = getXConfigureEventInfo(e);
00359 break;
00360 case ConfigureRequest:
00361 s = "ConfigureRequest";
00362 info = getXConfigureRequestEventInfo(e);
00363 break;
00364 case GravityNotify:
00365 s = "GravityNotify";
00366 break;
00367 case ResizeRequest:
00368 s = "ResizeRequest";
00369 break;
00370 case CirculateNotify:
00371 s = "CirculateNofify";
00372 break;
00373 case CirculateRequest:
00374 s = "CirculateRequest";
00375 break;
00376 case PropertyNotify:
00377 s = "PropertyNotify";
00378 break;
00379 case SelectionClear:
00380 s = "SelectionClear";
00381 break;
00382 case SelectionRequest:
00383 s = "SelectionRequest";
00384 break;
00385 case SelectionNotify:
00386 s = "SelectionNotify";
00387 break;
00388 case ColormapNotify:
00389 s = "ColormapNotify";
00390 break;
00391 case ClientMessage:
00392 s = "ClientMessage";
00393 break;
00394 case MappingNotify:
00395 s = "MappingNotify";
00396 info = getXMappingEventInfo(e);
00397 break;
00398 case LASTEvent:
00399 s = "LASTEvent";
00400 break;
00401
00402 default:
00403 s = "Undefined";
00404 break;
00405 }
00406
00407 return s + " " + anyInfo + " " + info;
00408 }