aboutsummaryrefslogtreecommitdiffstats
path: root/sway/ipc-json.c
diff options
context:
space:
mode:
authorLibravatar Brian Ashworth <bosrsf04@gmail.com>2019-01-10 12:43:10 -0500
committerLibravatar Brian Ashworth <bosrsf04@gmail.com>2019-01-10 12:43:10 -0500
commit3d6440ec26f2b39c54fd03aa3a3c822a8a2bbc72 (patch)
tree05e5dddd092b3d3ba16166a3784a49923e9f3de2 /sway/ipc-json.c
parentMerge pull request #3400 from ianyfan/config-brace (diff)
downloadsway-3d6440ec26f2b39c54fd03aa3a3c822a8a2bbc72.tar.gz
sway-3d6440ec26f2b39c54fd03aa3a3c822a8a2bbc72.tar.zst
sway-3d6440ec26f2b39c54fd03aa3a3c822a8a2bbc72.zip
bar_cmd_bind: utilize mouse button helpers
This modifies `bar_cmd_bindsym` to use `get_mouse_bindsym` for parsing mouse buttons. This also introduces `cmd_bar_bindcode`, which will use `get_mouse_bindcode` for parsing mouse buttons. Like sway bindings, the two commands are encapsulated in a single file with shared code. This also modifies swaybar to operate off of event codes rather than x11 button numbers, which allows for any mouse button to be used. This introduces two new IPC properties: - For `get_bar_config`, `event_code` has been added to the `bindings` section and will include to event code for the button. If the event code can be mapped to a x11 button, `input_code` will still be the x11 button number. Otherwise, `input_code` will be `0`. - Likewise for `click_events`, `event` has been added and will include the event code for the button clicked. If the event code can be mapped to a x11 button, `button` will still be the x11 button number. Otherwise, `button` will be `0`.
Diffstat (limited to 'sway/ipc-json.c')
-rw-r--r--sway/ipc-json.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/sway/ipc-json.c b/sway/ipc-json.c
index 53e0e335..61602343 100644
--- a/sway/ipc-json.c
+++ b/sway/ipc-json.c
@@ -1,4 +1,5 @@
1#include <json-c/json.h> 1#include <json-c/json.h>
2#include <libevdev/libevdev.h>
2#include <stdio.h> 3#include <stdio.h>
3#include <ctype.h> 4#include <ctype.h>
4#include "config.h" 5#include "config.h"
@@ -10,6 +11,7 @@
10#include "sway/tree/workspace.h" 11#include "sway/tree/workspace.h"
11#include "sway/output.h" 12#include "sway/output.h"
12#include "sway/input/input-manager.h" 13#include "sway/input/input-manager.h"
14#include "sway/input/cursor.h"
13#include "sway/input/seat.h" 15#include "sway/input/seat.h"
14#include <wlr/types/wlr_box.h> 16#include <wlr/types/wlr_box.h>
15#include <wlr/types/wlr_output.h> 17#include <wlr/types/wlr_output.h>
@@ -626,6 +628,31 @@ json_object *ipc_json_describe_seat(struct sway_seat *seat) {
626 return object; 628 return object;
627} 629}
628 630
631static uint32_t event_to_x11_button(uint32_t event) {
632 switch (event) {
633 case BTN_LEFT:
634 return 1;
635 case BTN_MIDDLE:
636 return 2;
637 case BTN_RIGHT:
638 return 3;
639 case SWAY_SCROLL_UP:
640 return 4;
641 case SWAY_SCROLL_DOWN:
642 return 5;
643 case SWAY_SCROLL_LEFT:
644 return 6;
645 case SWAY_SCROLL_RIGHT:
646 return 7;
647 case BTN_SIDE:
648 return 8;
649 case BTN_EXTRA:
650 return 9;
651 default:
652 return 0;
653 }
654}
655
629json_object *ipc_json_describe_bar_config(struct bar_config *bar) { 656json_object *ipc_json_describe_bar_config(struct bar_config *bar) {
630 if (!sway_assert(bar, "Bar must not be NULL")) { 657 if (!sway_assert(bar, "Bar must not be NULL")) {
631 return NULL; 658 return NULL;
@@ -767,6 +794,8 @@ json_object *ipc_json_describe_bar_config(struct bar_config *bar) {
767 struct bar_binding *binding = bar->bindings->items[i]; 794 struct bar_binding *binding = bar->bindings->items[i];
768 json_object *bind = json_object_new_object(); 795 json_object *bind = json_object_new_object();
769 json_object_object_add(bind, "input_code", 796 json_object_object_add(bind, "input_code",
797 json_object_new_int(event_to_x11_button(binding->button)));
798 json_object_object_add(bind, "event_code",
770 json_object_new_int(binding->button)); 799 json_object_new_int(binding->button));
771 json_object_object_add(bind, "command", 800 json_object_object_add(bind, "command",
772 json_object_new_string(binding->command)); 801 json_object_new_string(binding->command));