aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorRyan Dwyer <RyanDwyer@users.noreply.github.com>2018-07-24 19:48:27 +1000
committerGitHub <noreply@github.com>2018-07-24 19:48:27 +1000
commit1a9179dbab91490c4a8dc45f8630ac139c96efe6 (patch)
tree429de47906f0ba1f114689c48cbabc5be8bb6e71 /include
parent6ccf2a2c66c1264450a4b3ab3dd344e1b3b44ca3 (diff)
parente02a6718c2c7313309b45e499034d614ee6207fc (diff)
Merge pull request #2303 from frsfnrrg/mouse-bindings
Implement mouse bindings
Diffstat (limited to 'include')
-rw-r--r--include/sway/config.h23
-rw-r--r--include/sway/input/cursor.h6
2 files changed, 26 insertions, 3 deletions
diff --git a/include/sway/config.h b/include/sway/config.h
index b8da29c5..bcd503a4 100644
--- a/include/sway/config.h
+++ b/include/sway/config.h
@@ -22,14 +22,28 @@ struct sway_variable {
char *value;
};
+
+enum binding_input_type {
+ BINDING_KEYCODE,
+ BINDING_KEYSYM,
+ BINDING_MOUSE,
+};
+
+enum binding_flags {
+ BINDING_RELEASE=1,
+ BINDING_LOCKED=2, // keyboard only
+ BINDING_BORDER=4, // mouse only; trigger on container border
+ BINDING_CONTENTS=8, // mouse only; trigger on container contents
+ BINDING_TITLEBAR=16 // mouse only; trigger on container titlebar
+};
+
/**
* A key binding and an associated command.
*/
struct sway_binding {
+ enum binding_input_type type;
int order;
- bool release;
- bool locked;
- bool bindcode;
+ uint32_t flags;
list_t *keys; // sorted in ascending order
uint32_t modifiers;
char *command;
@@ -50,6 +64,7 @@ struct sway_mode {
char *name;
list_t *keysym_bindings;
list_t *keycode_bindings;
+ list_t *mouse_bindings;
bool pango;
};
@@ -482,6 +497,8 @@ void free_sway_binding(struct sway_binding *sb);
struct sway_binding *sway_binding_dup(struct sway_binding *sb);
+void seat_execute_command(struct sway_seat *seat, struct sway_binding *binding);
+
void load_swaybars();
void invoke_swaybar(struct bar_config *bar);
diff --git a/include/sway/input/cursor.h b/include/sway/input/cursor.h
index b0a3a7c5..7ec45120 100644
--- a/include/sway/input/cursor.h
+++ b/include/sway/input/cursor.h
@@ -3,6 +3,8 @@
#include <stdint.h>
#include "sway/input/seat.h"
+#define SWAY_CURSOR_PRESSED_BUTTONS_CAP 32
+
struct sway_cursor {
struct sway_seat *seat;
struct wlr_cursor *cursor;
@@ -29,6 +31,10 @@ struct sway_cursor {
uint32_t tool_buttons;
struct wl_listener request_set_cursor;
+
+ // Mouse binding state
+ uint32_t pressed_buttons[SWAY_CURSOR_PRESSED_BUTTONS_CAP];
+ size_t pressed_button_count;
};
void sway_cursor_destroy(struct sway_cursor *cursor);