summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Coopersmith <alan.coopersmith@oracle.com>2013-11-27 23:36:44 -0800
committerAlan Coopersmith <alan.coopersmith@oracle.com>2013-11-27 23:36:44 -0800
commit73c82c6b983e39e24f49c2c794d654bd349309d3 (patch)
tree02cace53e9c4e44907b2cb551b02310b59426b48
parentd7eb5a954115ed3defcbc89a40ad66b3c353dc90 (diff)
downloadxscope-73c82c6b983e39e24f49c2c794d654bd349309d3.tar.gz
Print correct event names for events sent via SendEvent requests
The high bit of an X11 event id is set to 0 for events generated by the server, 1 for events sent from another client via SendEvent requests. Previously xscope printed: ..............EVENT: **INVALID** (150) Now it prints: ..............EVENT: ConfigureNotify source: SendEvent Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
-rw-r--r--prtype.c22
-rw-r--r--table11.c2
-rw-r--r--x11.h1
3 files changed, 24 insertions, 1 deletions
diff --git a/prtype.c b/prtype.c
index 5889b52..96523f9 100644
--- a/prtype.c
+++ b/prtype.c
@@ -613,6 +613,28 @@ PrintEVENTFORM(const unsigned char *buf)
return 32;
}
+int
+PrintEVENT(const unsigned char *buf)
+{
+ uint8_t n = IByte(buf);
+ long e = (long) (n & 0x7f);
+ struct ValueListEntry *p;
+
+ p = TD[EVENT].ValueList;
+ while (p != NULL && p->Value != e)
+ p = p->Next;
+
+ if (p != NULL)
+ fprintf(stdout, "%s", p->Name);
+ else
+ fprintf(stdout, "**INVALID** (%d)", n);
+
+ if (n & 0x80)
+ fprintf(stdout, "\n%s%20s: %s", Leader, "source", "SendEvent");
+
+ return 1;
+}
+
/* ************************************************************ */
int
diff --git a/table11.c b/table11.c
index e141ae1..8d0acca 100644
--- a/table11.c
+++ b/table11.c
@@ -601,7 +601,7 @@ InitEnumeratedTypes(void)
DefineEValue(p, 16L, "Length");
DefineEValue(p, 17L, "Implementation");
- p = DefineType(EVENT, ENUMERATED, "EVENT", (PrintProcType) PrintENUMERATED);
+ p = DefineType(EVENT, BUILTIN, "EVENT", (PrintProcType) PrintEVENT);
DefineEValue(p, 2L, "KeyPress");
DefineEValue(p, 3L, "KeyRelease");
DefineEValue(p, 4L, "ButtonPress");
diff --git a/x11.h b/x11.h
index 3004362..59e33e6 100644
--- a/x11.h
+++ b/x11.h
@@ -371,6 +371,7 @@ extern int PrintKEYCODEA(const unsigned char *buf);
extern int PrintBUTTON(const unsigned char *buf);
extern int PrintBUTTONA(const unsigned char *buf);
extern int PrintEVENTFORM(const unsigned char *buf);
+extern int PrintEVENT(const unsigned char *buf);
extern int PrintENUMERATED(const unsigned char *buf, short length,
struct ValueListEntry *ValueList);
extern int PrintSET(const unsigned char *buf, short length,