diff options
author | Alan Coopersmith <alan.coopersmith@oracle.com> | 2013-11-27 23:36:44 -0800 |
---|---|---|
committer | Alan Coopersmith <alan.coopersmith@oracle.com> | 2013-11-27 23:36:44 -0800 |
commit | 73c82c6b983e39e24f49c2c794d654bd349309d3 (patch) | |
tree | 02cace53e9c4e44907b2cb551b02310b59426b48 | |
parent | d7eb5a954115ed3defcbc89a40ad66b3c353dc90 (diff) |
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.c | 22 | ||||
-rw-r--r-- | table11.c | 2 | ||||
-rw-r--r-- | x11.h | 1 |
3 files changed, 24 insertions, 1 deletions
@@ -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 @@ -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"); @@ -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, |