diff options
author | Frediano Ziglio <fziglio@redhat.com> | 2015-08-03 09:52:38 +0100 |
---|---|---|
committer | Frediano Ziglio <fziglio@redhat.com> | 2015-08-03 09:52:38 +0100 |
commit | f833fd071d76816bed3806f486e13cc33824eab7 (patch) | |
tree | 4b76fcba2cfaec6d157d4f5a6e37d7f537faf02c | |
parent | c5a32df387fcfe4e84cea6c0f5cbfe99e48d7e65 (diff) |
Export XED functions to be used
-rw-r--r-- | xev.c | 409 |
1 files changed, 157 insertions, 252 deletions
@@ -44,14 +44,12 @@ from the X Consortium. #include <X11/Xutil.h> #include <X11/Xproto.h> +#include "global.h" static const char Yes[] = "YES"; static const char No[] = "NO"; static const char Unknown[] = "unknown"; -static const char *ProgramName; -static Display *dpy; - static XIC xic = NULL; static Atom wm_protocols; @@ -61,8 +59,6 @@ enum EventMaskIndex { NUM_EVENT_MASKS }; -static void usage (void) _X_NORETURN; - static void prologue (XEvent *eventp, const char *event_name) { @@ -609,32 +605,6 @@ do_MappingNotify (XEvent *eventp) -static void -usage (void) -{ - static const char *msg[] = { -" -display displayname X server to contact", -" -id windowid use existing window", -" -root use root window", -" -event event_mask select 'event_mask' events", -" Supported event masks: keyboard mouse expose visibility structure", -" substructure focus property colormap", -" owner_grab_button randr", -" This option can be specified multiple times to select multiple", -" event masks.", -"", -NULL}; - const char **cpp; - - fprintf (stderr, "usage: %s [-options ...]\n", ProgramName); - fprintf (stderr, "where options include:\n"); - - for (cpp = msg; *cpp; cpp++) - fprintf (stderr, "%s\n", *cpp); - - exit (1); -} - static Bool parse_event_mask (const char *s, long event_masks[]) { @@ -680,99 +650,44 @@ parse_event_mask (const char *s, long event_masks[]) return False; } -int -main (int argc, char **argv) + +void +xev_init(Window w) { - char *displayname = NULL; int i; - Window w; long event_mask; XWindowAttributes wattr; - int done; - Bool use_root = False; XIM xim; XIMStyles *xim_styles; XIMStyle xim_style = 0; char *modifiers; char *imvalret; long event_masks[NUM_EVENT_MASKS]; - Bool event_mask_specified = False; - - ProgramName = argv[0]; if (setlocale(LC_ALL,"") == NULL) { - fprintf(stderr, "%s: warning: could not set default locale\n", - ProgramName); + fprintf(stderr, "warning: could not set default locale\n"); } memset(event_masks, 0, sizeof(event_masks)); - w = 0; - for (i = 1; i < argc; i++) { - char *arg = argv[i]; - - if (arg[0] == '-') { - switch (arg[1]) { - case 'd': /* -display host:dpy */ - if (++i >= argc) usage (); - displayname = argv[i]; - continue; - case 'i': /* -id */ - if (++i >= argc) usage (); - sscanf(argv[i], "0x%lx", &w); - if (!w) - sscanf(argv[i], "%lu", &w); - if (!w) - usage (); - continue; - case 'r': - switch (arg[2]) { - case 'o': /* -root */ - use_root = True; - continue; - default: - usage (); - } - continue; - case 'e': /* -event */ - if (++i >= argc) usage (); - if (!parse_event_mask (argv[i], event_masks)) - usage (); - event_mask_specified = True; - continue; - default: - usage (); - } /* end switch on - */ - } else - usage (); - } /* end for over argc */ - /* if no -event options were specified, pretend all of them were */ - if (!event_mask_specified) - parse_event_mask (NULL, event_masks); - - dpy = XOpenDisplay (displayname); - if (!dpy) { - fprintf (stderr, "%s: unable to open display '%s'\n", - ProgramName, XDisplayName (displayname)); - exit (1); - } + parse_event_mask (NULL, event_masks); /* we're testing the default input method */ modifiers = XSetLocaleModifiers ("@im=none"); if (modifiers == NULL) { - fprintf (stderr, "%s: XSetLocaleModifiers failed\n", ProgramName); + fprintf (stderr, "XSetLocaleModifiers failed\n"); } xim = XOpenIM (dpy, NULL, NULL, NULL); if (xim == NULL) { - fprintf (stderr, "%s: XOpenIM failed\n", ProgramName); + fprintf (stderr, "XOpenIM failed\n"); } if (xim) { imvalret = XGetIMValues (xim, XNQueryInputStyle, &xim_styles, NULL); if (imvalret != NULL || xim_styles == NULL) { - fprintf (stderr, "%s: input method doesn't support any styles\n", ProgramName); + fprintf (stderr, "input method doesn't support any styles\n"); } if (xim_styles) { @@ -786,8 +701,7 @@ main (int argc, char **argv) } if (xim_style == 0) { - fprintf (stderr, "%s: input method doesn't support the style we support\n", - ProgramName); + fprintf (stderr, "input method doesn't support the style we support\n"); } XFree (xim_styles); } @@ -795,16 +709,11 @@ main (int argc, char **argv) event_mask = event_masks[EVENT_MASK_INDEX_CORE]; - if (use_root) - w = DefaultRootWindow(dpy); - - if (w) { - XGetWindowAttributes(dpy, w, &wattr); - if (wattr.all_event_masks & ButtonPressMask) - event_mask &= ~ButtonPressMask; - event_mask &= ~SubstructureRedirectMask; - XSelectInput(dpy, w, event_mask); - } + XGetWindowAttributes(dpy, w, &wattr); + if (wattr.all_event_masks & ButtonPressMask) + event_mask &= ~ButtonPressMask; + event_mask &= ~SubstructureRedirectMask; + XSelectInput(dpy, w, event_mask); wm_protocols = XInternAtom(dpy, "WM_PROTOCOLS", False); @@ -819,152 +728,148 @@ main (int argc, char **argv) fprintf (stderr, "XCreateIC failed\n"); } } +} - for (done = 0; !done; ) { - XEvent event; - - XNextEvent (dpy, &event); - - switch (event.type) { - case KeyPress: - prologue (&event, "KeyPress"); - do_KeyPress (&event); - break; - case KeyRelease: - prologue (&event, "KeyRelease"); - do_KeyRelease (&event); - break; - case ButtonPress: - prologue (&event, "ButtonPress"); - do_ButtonPress (&event); - break; - case ButtonRelease: - prologue (&event, "ButtonRelease"); - do_ButtonRelease (&event); - break; - case MotionNotify: - prologue (&event, "MotionNotify"); - do_MotionNotify (&event); - break; - case EnterNotify: - prologue (&event, "EnterNotify"); - do_EnterNotify (&event); - break; - case LeaveNotify: - prologue (&event, "LeaveNotify"); - do_LeaveNotify (&event); - break; - case FocusIn: - prologue (&event, "FocusIn"); - do_FocusIn (&event); - break; - case FocusOut: - prologue (&event, "FocusOut"); - do_FocusOut (&event); - break; - case KeymapNotify: - prologue (&event, "KeymapNotify"); - do_KeymapNotify (&event); - break; - case Expose: - prologue (&event, "Expose"); - do_Expose (&event); - break; - case GraphicsExpose: - prologue (&event, "GraphicsExpose"); - do_GraphicsExpose (&event); - break; - case NoExpose: - prologue (&event, "NoExpose"); - do_NoExpose (&event); - break; - case VisibilityNotify: - prologue (&event, "VisibilityNotify"); - do_VisibilityNotify (&event); - break; - case CreateNotify: - prologue (&event, "CreateNotify"); - do_CreateNotify (&event); - break; - case DestroyNotify: - prologue (&event, "DestroyNotify"); - do_DestroyNotify (&event); - break; - case UnmapNotify: - prologue (&event, "UnmapNotify"); - do_UnmapNotify (&event); - break; - case MapNotify: - prologue (&event, "MapNotify"); - do_MapNotify (&event); - break; - case MapRequest: - prologue (&event, "MapRequest"); - do_MapRequest (&event); - break; - case ReparentNotify: - prologue (&event, "ReparentNotify"); - do_ReparentNotify (&event); - break; - case ConfigureNotify: - prologue (&event, "ConfigureNotify"); - do_ConfigureNotify (&event); - break; - case ConfigureRequest: - prologue (&event, "ConfigureRequest"); - do_ConfigureRequest (&event); - break; - case GravityNotify: - prologue (&event, "GravityNotify"); - do_GravityNotify (&event); - break; - case ResizeRequest: - prologue (&event, "ResizeRequest"); - do_ResizeRequest (&event); - break; - case CirculateNotify: - prologue (&event, "CirculateNotify"); - do_CirculateNotify (&event); - break; - case CirculateRequest: - prologue (&event, "CirculateRequest"); - do_CirculateRequest (&event); - break; - case PropertyNotify: - prologue (&event, "PropertyNotify"); - do_PropertyNotify (&event); - break; - case SelectionClear: - prologue (&event, "SelectionClear"); - do_SelectionClear (&event); - break; - case SelectionRequest: - prologue (&event, "SelectionRequest"); - do_SelectionRequest (&event); - break; - case SelectionNotify: - prologue (&event, "SelectionNotify"); - do_SelectionNotify (&event); - break; - case ColormapNotify: - prologue (&event, "ColormapNotify"); - do_ColormapNotify (&event); - break; - case ClientMessage: - prologue (&event, "ClientMessage"); - do_ClientMessage (&event); - break; - case MappingNotify: - prologue (&event, "MappingNotify"); - do_MappingNotify (&event); - break; - default: - printf ("Unknown event type %d\n", event.type); - break; - } - fflush(stdout); +void +xev_dump(XEvent *event) +{ + switch (event->type) { + case KeyPress: + prologue (event, "KeyPress"); + do_KeyPress (event); + break; + case KeyRelease: + prologue (event, "KeyRelease"); + do_KeyRelease (event); + break; + case ButtonPress: + prologue (event, "ButtonPress"); + do_ButtonPress (event); + break; + case ButtonRelease: + prologue (event, "ButtonRelease"); + do_ButtonRelease (event); + break; + case MotionNotify: + prologue (event, "MotionNotify"); + do_MotionNotify (event); + break; + case EnterNotify: + prologue (event, "EnterNotify"); + do_EnterNotify (event); + break; + case LeaveNotify: + prologue (event, "LeaveNotify"); + do_LeaveNotify (event); + break; + case FocusIn: + prologue (event, "FocusIn"); + do_FocusIn (event); + break; + case FocusOut: + prologue (event, "FocusOut"); + do_FocusOut (event); + break; + case KeymapNotify: + prologue (event, "KeymapNotify"); + do_KeymapNotify (event); + break; + case Expose: + prologue (event, "Expose"); + do_Expose (event); + break; + case GraphicsExpose: + prologue (event, "GraphicsExpose"); + do_GraphicsExpose (event); + break; + case NoExpose: + prologue (event, "NoExpose"); + do_NoExpose (event); + break; + case VisibilityNotify: + prologue (event, "VisibilityNotify"); + do_VisibilityNotify (event); + break; + case CreateNotify: + prologue (event, "CreateNotify"); + do_CreateNotify (event); + break; + case DestroyNotify: + prologue (event, "DestroyNotify"); + do_DestroyNotify (event); + break; + case UnmapNotify: + prologue (event, "UnmapNotify"); + do_UnmapNotify (event); + break; + case MapNotify: + prologue (event, "MapNotify"); + do_MapNotify (event); + break; + case MapRequest: + prologue (event, "MapRequest"); + do_MapRequest (event); + break; + case ReparentNotify: + prologue (event, "ReparentNotify"); + do_ReparentNotify (event); + break; + case ConfigureNotify: + prologue (event, "ConfigureNotify"); + do_ConfigureNotify (event); + break; + case ConfigureRequest: + prologue (event, "ConfigureRequest"); + do_ConfigureRequest (event); + break; + case GravityNotify: + prologue (event, "GravityNotify"); + do_GravityNotify (event); + break; + case ResizeRequest: + prologue (event, "ResizeRequest"); + do_ResizeRequest (event); + break; + case CirculateNotify: + prologue (event, "CirculateNotify"); + do_CirculateNotify (event); + break; + case CirculateRequest: + prologue (event, "CirculateRequest"); + do_CirculateRequest (event); + break; + case PropertyNotify: + prologue (event, "PropertyNotify"); + do_PropertyNotify (event); + break; + case SelectionClear: + prologue (event, "SelectionClear"); + do_SelectionClear (event); + break; + case SelectionRequest: + prologue (event, "SelectionRequest"); + do_SelectionRequest (event); + break; + case SelectionNotify: + prologue (event, "SelectionNotify"); + do_SelectionNotify (event); + break; + case ColormapNotify: + prologue (event, "ColormapNotify"); + do_ColormapNotify (event); + break; + case ClientMessage: + prologue (event, "ClientMessage"); + do_ClientMessage (event); + break; + case MappingNotify: + prologue (event, "MappingNotify"); + do_MappingNotify (event); + break; +#if 0 + default: + printf ("Unknown event type %d\n", event.type); + break; +#endif } - - XCloseDisplay (dpy); - return 0; } |