summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrediano Ziglio <fziglio@redhat.com>2015-08-03 09:52:38 +0100
committerFrediano Ziglio <fziglio@redhat.com>2015-08-03 09:52:38 +0100
commitf833fd071d76816bed3806f486e13cc33824eab7 (patch)
tree4b76fcba2cfaec6d157d4f5a6e37d7f537faf02c
parentc5a32df387fcfe4e84cea6c0f5cbfe99e48d7e65 (diff)
Export XED functions to be used
-rw-r--r--xev.c409
1 files changed, 157 insertions, 252 deletions
diff --git a/xev.c b/xev.c
index 443a207..ab3a874 100644
--- a/xev.c
+++ b/xev.c
@@ -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;
}