Split bindings into separate key/button/axis bindings

Rather than attempting to have the one handler prototype everywhere.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
diff --git a/src/compositor.h b/src/compositor.h
index 256ffd9..b0cca43 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -268,7 +268,9 @@
 	struct wl_list seat_list;
 	struct wl_list layer_list;
 	struct wl_list surface_list;
-	struct wl_list binding_list;
+	struct wl_list key_binding_list;
+	struct wl_list button_binding_list;
+	struct wl_list axis_binding_list;
 	struct wl_list animation_list;
 	struct {
 		struct weston_spring spring;
@@ -525,16 +527,35 @@
 
 
 struct weston_binding;
-typedef void (*weston_binding_handler_t)(struct wl_seat *seat,
-					 uint32_t time, uint32_t key,
-					 uint32_t button,
-					 uint32_t axis,
-					 int32_t value, void *data);
+typedef void (*weston_key_binding_handler_t)(struct wl_seat *seat,
+					     uint32_t time, uint32_t key,
+					     void *data);
 struct weston_binding *
-weston_compositor_add_binding(struct weston_compositor *compositor,
-			      uint32_t key, uint32_t button, uint32_t axis,
-			      enum weston_keyboard_modifier modifier,
-			      weston_binding_handler_t binding, void *data);
+weston_compositor_add_key_binding(struct weston_compositor *compositor,
+				  uint32_t key,
+				  enum weston_keyboard_modifier modifier,
+				  weston_key_binding_handler_t binding,
+				  void *data);
+
+typedef void (*weston_button_binding_handler_t)(struct wl_seat *seat,
+						uint32_t time, uint32_t button,
+						void *data);
+struct weston_binding *
+weston_compositor_add_button_binding(struct weston_compositor *compositor,
+				     uint32_t button,
+				     enum weston_keyboard_modifier modifier,
+				     weston_button_binding_handler_t binding,
+				     void *data);
+
+typedef void (*weston_axis_binding_handler_t)(struct wl_seat *seat,
+					      uint32_t time, uint32_t axis,
+					      int32_t value, void *data);
+struct weston_binding *
+weston_compositor_add_axis_binding(struct weston_compositor *compositor,
+			           uint32_t axis,
+			           enum weston_keyboard_modifier modifier,
+			           weston_axis_binding_handler_t binding,
+				   void *data);
 void
 weston_binding_destroy(struct weston_binding *binding);
 
@@ -542,11 +563,20 @@
 weston_binding_list_destroy_all(struct wl_list *list);
 
 void
-weston_compositor_run_binding(struct weston_compositor *compositor,
-			      struct weston_seat *seat,
-			      uint32_t time,
-			      uint32_t key, uint32_t button, uint32_t axis,
-			      int32_t value);
+weston_compositor_run_key_binding(struct weston_compositor *compositor,
+				  struct weston_seat *seat, uint32_t time,
+				  uint32_t key,
+				  enum wl_keyboard_key_state state);
+void
+weston_compositor_run_button_binding(struct weston_compositor *compositor,
+				     struct weston_seat *seat, uint32_t time,
+				     uint32_t button,
+				     enum wl_pointer_button_state value);
+void
+weston_compositor_run_axis_binding(struct weston_compositor *compositor,
+				   struct weston_seat *seat, uint32_t time,
+				   uint32_t axis, int32_t value);
+
 int
 weston_environment_get_fd(const char *env);