X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;ds=sidebyside;f=c%2Feventdata.h;fp=c%2Feventdata.h;h=ef6beabda81a7a8e37ffdb3ccda93be2ca655027;hb=f8a47de5ec444c452093371e3db16857eb39a490;hp=0000000000000000000000000000000000000000;hpb=8ba0586bcbdc7fe9648f1063812126d71a041670;p=chaz%2Fopenbox diff --git a/c/eventdata.h b/c/eventdata.h new file mode 100644 index 00000000..ef6beabd --- /dev/null +++ b/c/eventdata.h @@ -0,0 +1,74 @@ +#ifndef __eventdata_h +#define __eventdata_h + +#include "obexport.h" +#include +#include + +struct Client; + +typedef struct { + int temp:1; /* just a placeholder to kill warnings for now.. */ +} LogicalEvent; + +typedef struct { + /*! The button which generated the event */ + guint button; + /*! The pointer's x position on the root window when the event occured */ + int xroot; + /*! The pointer's y position on the root window when the event occured */ + int yroot; + /*! The modifiers that were pressed when the event occured. A bitmask of: + ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, + Mod4Mask, Mod5Mask */ + guint modifiers; + /*! The name of the button/modifier combination being pressed, + eg "Mod1-1" */ + char *name; +} PointerEvent; + +typedef struct { + /*! The keycode of the key which generated the event */ + guint keycode; + /*! The modifiers that were pressed when the event occured. A bitmask of: + ShiftMask, LockMask, ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, + Mod4Mask, Mod5Mask */ + guint modifiers; + /* The list of strings which make up the chain that fired, + eg ("Mod1-a", "a") */ + GList *keylist; +} KeyEvent; + +/* EventData is a PyObject */ +typedef struct EventData { + PyObject_HEAD + /* The type of event which occured */ + EventType type; + /*! The context in which the event occured, the type of window it occured + for. */ + const char *context; + /* The Client on which the event occured, or NULL */ + struct Client *client; + + union EventDetails { + LogicalEvent *logical; + PointerEvent *pointer; + KeyEvent *key; + } details; +} EventData; + +void eventdata_startup(); +void eventdata_shutdown(); + +EventData *eventdata_new_logical(EventType type, GQuark context, + struct Client *client); +EventData *eventdata_new_pointer(EventType type, GQuark context, + struct Client *client, guint modifiers, + guint button, char *name, + int xroot, int yroot); +EventData *eventdata_new_key(EventType type, GQuark context, + struct Client *client, guint modifiers, + guint keycode, GList *keylist); +void eventdata_free(EventData *data); + +#endif