1 #ifdef E_TYPEDEFS 2 3 typedef enum _E_Binding_Context 4 { 5 E_BINDING_CONTEXT_NONE, 6 E_BINDING_CONTEXT_UNKNOWN, 7 E_BINDING_CONTEXT_WINDOW, 8 E_BINDING_CONTEXT_ZONE, 9 E_BINDING_CONTEXT_COMPOSITOR, 10 E_BINDING_CONTEXT_MANAGER, 11 E_BINDING_CONTEXT_MENU, 12 E_BINDING_CONTEXT_WINLIST, 13 E_BINDING_CONTEXT_POPUP, 14 E_BINDING_CONTEXT_ANY, 15 E_BINDING_CONTEXT_LAST, 16 } E_Binding_Context; 17 18 /* why do we do this? config stored bindings must be fixed. x's modifier masks 19 * may change from time to time, xserver to xserver - so we can't do a 20 * simple match without translating to fixed values 21 */ 22 typedef enum _E_Binding_Modifier 23 { 24 E_BINDING_MODIFIER_NONE = 0, 25 E_BINDING_MODIFIER_SHIFT = (1 << 0), 26 E_BINDING_MODIFIER_CTRL = (1 << 1), 27 E_BINDING_MODIFIER_ALT = (1 << 2), 28 E_BINDING_MODIFIER_WIN = (1 << 3), 29 E_BINDING_MODIFIER_ALTGR = (1 << 4) 30 } E_Binding_Modifier; 31 32 typedef struct _E_Binding_Mouse E_Binding_Mouse; 33 typedef struct _E_Binding_Key E_Binding_Key; 34 typedef struct _E_Binding_Edge E_Binding_Edge; 35 typedef struct _E_Binding_Signal E_Binding_Signal; 36 typedef struct _E_Binding_Wheel E_Binding_Wheel; 37 typedef struct _E_Binding_Acpi E_Binding_Acpi; 38 39 typedef struct E_Binding_Event_Mouse_Button E_Binding_Event_Mouse_Button; 40 typedef struct E_Binding_Event_Wheel E_Binding_Event_Wheel; 41 42 #else 43 #ifndef E_BINDINGS_H 44 #define E_BINDINGS_H 45 46 struct E_Binding_Event_Mouse_Button 47 { 48 int button; /**< Mouse button number that was raised (1 - 32) */ 49 50 Evas_Coord_Point canvas; /**< The X/Y location of the cursor */ 51 52 unsigned int modifiers; /**< modifier keys pressed during the event */ 53 unsigned int timestamp; 54 Eina_Bool double_click E_BITFIELD; 55 Eina_Bool triple_click E_BITFIELD; 56 Eina_Bool hold E_BITFIELD; 57 Eina_Bool scroll E_BITFIELD; 58 }; 59 60 struct E_Binding_Event_Wheel 61 { 62 int direction; 63 int z; 64 65 Evas_Coord_Point canvas; /**< The X/Y location of the cursor */ 66 67 unsigned int modifiers; /**< modifier keys pressed during the event */ 68 unsigned int timestamp; 69 }; 70 71 struct _E_Binding_Mouse 72 { 73 E_Binding_Context ctxt; 74 int button; 75 E_Binding_Modifier mod; 76 unsigned char any_mod E_BITFIELD; 77 const char *action; 78 const char *params; 79 }; 80 81 struct _E_Binding_Key 82 { 83 E_Binding_Context ctxt; 84 const char *key; 85 E_Binding_Modifier mod; 86 unsigned char any_mod E_BITFIELD; 87 const char *action; 88 const char *params; 89 }; 90 91 struct _E_Binding_Edge 92 { 93 E_Binding_Context ctxt; 94 E_Zone_Edge edge; 95 E_Binding_Modifier mod; 96 const char *action; 97 const char *params; 98 99 float delay; 100 Ecore_Timer *timer; 101 Eina_Bool any_mod E_BITFIELD; 102 Eina_Bool drag_only E_BITFIELD; 103 }; 104 105 struct _E_Binding_Signal 106 { 107 E_Binding_Context ctxt; 108 const char *sig; 109 const char *src; 110 E_Binding_Modifier mod; 111 unsigned char any_mod E_BITFIELD; 112 const char *action; 113 const char *params; 114 }; 115 116 struct _E_Binding_Wheel 117 { 118 E_Binding_Context ctxt; 119 int direction; 120 int z; 121 E_Binding_Modifier mod; 122 unsigned char any_mod E_BITFIELD; 123 const char *action; 124 const char *params; 125 }; 126 127 struct _E_Binding_Acpi 128 { 129 E_Binding_Context ctxt; 130 int type, status; 131 const char *action, *params; 132 }; 133 134 EINTERN int e_bindings_init(void); 135 EINTERN int e_bindings_shutdown(void); 136 137 E_API void e_bindings_mouse_reset(void); 138 E_API void e_bindings_key_reset(void); 139 E_API void e_bindings_wheel_reset(void); 140 E_API void e_bindings_edge_reset(void); 141 E_API void e_bindings_signal_reset(void); 142 E_API void e_bindings_reset(void); 143 144 E_API void e_bindings_mouse_add(E_Binding_Context ctxt, int button, E_Binding_Modifier mod, int any_mod, const char *action, const char *params); 145 E_API void e_bindings_mouse_del(E_Binding_Context ctxt, int button, E_Binding_Modifier mod, int any_mod, const char *action, const char *params); 146 E_API void e_bindings_mouse_grab(E_Binding_Context ctxt, Ecore_X_Window win); 147 E_API void e_bindings_mouse_ungrab(E_Binding_Context ctxt, Ecore_X_Window win); 148 E_API E_Action *e_bindings_mouse_button_find(E_Binding_Context ctxt, E_Binding_Event_Mouse_Button *ev, E_Binding_Mouse **bind_ret); 149 E_API E_Action *e_bindings_mouse_down_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Binding_Event_Mouse_Button *ev); 150 E_API E_Action *e_bindings_mouse_down_evas_event_handle(E_Binding_Context ctxt, E_Object *obj, Evas_Event_Mouse_Down *ev); 151 E_API E_Action *e_bindings_mouse_down_ecore_event_handle(E_Binding_Context ctxt, E_Object *obj, Ecore_Event_Mouse_Button *ev); 152 E_API E_Action *e_bindings_mouse_up_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Binding_Event_Mouse_Button *ev); 153 E_API E_Action *e_bindings_mouse_up_evas_event_handle(E_Binding_Context ctxt, E_Object *obj, Evas_Event_Mouse_Up *ev); 154 E_API E_Action *e_bindings_mouse_up_ecore_event_handle(E_Binding_Context ctxt, E_Object *obj, Ecore_Event_Mouse_Button *ev); 155 E_API char *e_bindings_mouse_action_modifiers_text_generate(E_Binding_Context ctxt, const char *action, unsigned int *modifiers, unsigned int *button); 156 157 E_API void e_bindings_key_add(E_Binding_Context ctxt, const char *key, E_Binding_Modifier mod, int any_mod, const char *action, const char *params); 158 E_API void e_bindings_key_del(E_Binding_Context ctxt, const char *key, E_Binding_Modifier mod, int any_mod, const char *action, const char *params); 159 E_API E_Binding_Key *e_bindings_key_get(const char *action); 160 E_API E_Binding_Key *e_bindings_key_find(const char *key, E_Binding_Modifier mod, int any_mod); 161 E_API void e_bindings_key_grab(E_Binding_Context ctxt, Ecore_X_Window win); 162 E_API void e_bindings_key_ungrab(E_Binding_Context ctxt, Ecore_X_Window win); 163 E_API E_Action *e_bindings_key_down_event_handle(E_Binding_Context ctxt, E_Object *obj, Ecore_Event_Key *ev); 164 E_API E_Action *e_bindings_key_up_event_handle(E_Binding_Context ctxt, E_Object *obj, Ecore_Event_Key *ev); 165 E_API E_Action *e_bindings_key_event_find(E_Binding_Context ctxt, Ecore_Event_Key *ev, E_Binding_Key **bind_ret); 166 167 E_API Eina_Bool e_bindings_key_allowed(const char *key); 168 169 E_API void e_bindings_edge_add(E_Binding_Context ctxt, E_Zone_Edge edge, Eina_Bool drag_only, E_Binding_Modifier mod, int any_mod, const char *action, const char *params, float delay); 170 E_API Eina_Bool e_bindings_edge_flippable_get(E_Zone_Edge edge); 171 E_API Eina_Bool e_bindings_edge_non_flippable_get(E_Zone_Edge edge); 172 E_API E_Action *e_bindings_edge_event_find(E_Binding_Context ctxt, E_Event_Zone_Edge *ev, Eina_Bool click, E_Binding_Edge **bind_ret); 173 E_API E_Binding_Edge *e_bindings_edge_get(const char *action, E_Zone_Edge edge, int click); 174 E_API void e_bindings_edge_del(E_Binding_Context ctxt, E_Zone_Edge edge, Eina_Bool drag_only, E_Binding_Modifier mod, int any_mod, const char *action, const char *params, float delay); 175 E_API E_Action *e_bindings_edge_in_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Event_Zone_Edge *ev); 176 E_API E_Action *e_bindings_edge_out_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Event_Zone_Edge *ev); 177 E_API E_Action *e_bindings_edge_down_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Event_Zone_Edge *ev); 178 E_API E_Action *e_bindings_edge_up_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Event_Zone_Edge *ev); 179 180 E_API void e_bindings_signal_add(E_Binding_Context ctxt, const char *sig, const char *src, E_Binding_Modifier mod, int any_mod, const char *action, const char *params); 181 E_API void e_bindings_signal_del(E_Binding_Context ctxt, const char *sig, const char *src, E_Binding_Modifier mod, int any_mod, const char *action, const char *params); 182 E_API E_Action *e_bindings_signal_find(E_Binding_Context ctxt, const char *sig, const char *src, E_Binding_Signal **bind_ret); 183 E_API E_Action *e_bindings_signal_handle(E_Binding_Context ctxt, E_Object *obj, const char *sig, const char *src); 184 185 E_API void e_bindings_wheel_add(E_Binding_Context ctxt, int direction, int z, E_Binding_Modifier mod, int any_mod, const char *action, const char *params); 186 E_API void e_bindings_wheel_del(E_Binding_Context ctxt, int direction, int z, E_Binding_Modifier mod, int any_mod, const char *action, const char *params); 187 E_API void e_bindings_wheel_grab(E_Binding_Context ctxt, Ecore_X_Window win); 188 E_API void e_bindings_wheel_ungrab(E_Binding_Context ctxt, Ecore_X_Window win); 189 E_API E_Action *e_bindings_wheel_find(E_Binding_Context ctxt, E_Binding_Event_Wheel *ev, E_Binding_Wheel **bind_ret); 190 E_API E_Action *e_bindings_wheel_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Binding_Event_Wheel *ev); 191 E_API E_Action *e_bindings_wheel_evas_event_handle(E_Binding_Context ctxt, E_Object *obj, Evas_Event_Mouse_Wheel *ev); 192 E_API E_Action *e_bindings_wheel_ecore_event_handle(E_Binding_Context ctxt, E_Object *obj, Ecore_Event_Mouse_Wheel *ev); 193 194 E_API void e_bindings_acpi_add(E_Binding_Context ctxt, int type, int status, const char *action, const char *params); 195 E_API void e_bindings_acpi_del(E_Binding_Context ctxt, int type, int status, const char *action, const char *params); 196 E_API E_Action *e_bindings_acpi_find(E_Binding_Context ctxt, E_Event_Acpi *ev, E_Binding_Acpi **bind_ret); 197 E_API E_Action *e_bindings_acpi_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Event_Acpi *ev); 198 199 E_API int e_bindings_evas_modifiers_convert(Evas_Modifier *modifiers); 200 E_API int e_bindings_modifiers_to_ecore_convert(E_Binding_Modifier modifiers); 201 E_API void e_bindings_evas_event_mouse_button_convert(const Evas_Event_Mouse_Down *ev, E_Binding_Event_Mouse_Button *event); 202 E_API void e_bindings_evas_event_mouse_wheel_convert(const Evas_Event_Mouse_Wheel *ev, E_Binding_Event_Wheel *event); 203 E_API void e_bindings_ecore_event_mouse_button_convert(const Ecore_Event_Mouse_Button *ev, E_Binding_Event_Mouse_Button *event); 204 E_API void e_bindings_ecore_event_mouse_wheel_convert(const Ecore_Event_Mouse_Wheel *ev, E_Binding_Event_Wheel *event); 205 206 E_API int e_bindings_context_match(E_Binding_Context bctxt, E_Binding_Context ctxt); 207 E_API E_Binding_Modifier e_bindings_modifiers_from_ecore(unsigned int modifiers); 208 209 E_API void e_bindings_disabled_set(Eina_Bool disabled); 210 #endif 211 #endif 212