X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=i3bar%2Fsrc%2Fchild.c;h=7c527dc3707f1de7846614112164cfe244842f68;hb=3745e6f4843b638fcc73c3b499bdae4bc6f6132c;hp=bb5ceaff0ee2cc1592e1edf157becdcdd4e7fdc9;hpb=0ed29f567866ad00a2cb14ce2e6eb5a29b277011;p=i3%2Fi3 diff --git a/i3bar/src/child.c b/i3bar/src/child.c index bb5ceaff..7c527dc3 100644 --- a/i3bar/src/child.c +++ b/i3bar/src/child.c @@ -8,6 +8,7 @@ * */ #include "common.h" +#include "yajl_utils.h" #include #include @@ -27,6 +28,8 @@ #include #include +#include + /* Global variables for child_*() */ i3bar_child child; @@ -588,15 +591,11 @@ static void child_click_events_initialize(void) { } } -static void child_click_events_key(const char *key) { - yajl_gen_string(gen, (const unsigned char *)key, strlen(key)); -} - /* * Generates a click event, if enabled. * */ -void send_block_clicked(int button, const char *name, const char *instance, int x, int y, int x_rel, int y_rel, int width, int height) { +void send_block_clicked(int button, const char *name, const char *instance, int x, int y, int x_rel, int y_rel, int width, int height, int mods) { if (!child.click_events) { return; } @@ -606,34 +605,52 @@ void send_block_clicked(int button, const char *name, const char *instance, int yajl_gen_map_open(gen); if (name) { - child_click_events_key("name"); - yajl_gen_string(gen, (const unsigned char *)name, strlen(name)); + ystr("name"); + ystr(name); } if (instance) { - child_click_events_key("instance"); - yajl_gen_string(gen, (const unsigned char *)instance, strlen(instance)); + ystr("instance"); + ystr(instance); } - child_click_events_key("button"); + ystr("button"); yajl_gen_integer(gen, button); - child_click_events_key("x"); + ystr("modifiers"); + yajl_gen_array_open(gen); + if (mods & XCB_MOD_MASK_SHIFT) + ystr("Shift"); + if (mods & XCB_MOD_MASK_CONTROL) + ystr("Control"); + if (mods & XCB_MOD_MASK_1) + ystr("Mod1"); + if (mods & XCB_MOD_MASK_2) + ystr("Mod2"); + if (mods & XCB_MOD_MASK_3) + ystr("Mod3"); + if (mods & XCB_MOD_MASK_4) + ystr("Mod4"); + if (mods & XCB_MOD_MASK_5) + ystr("Mod5"); + yajl_gen_array_close(gen); + + ystr("x"); yajl_gen_integer(gen, x); - child_click_events_key("y"); + ystr("y"); yajl_gen_integer(gen, y); - child_click_events_key("relative_x"); + ystr("relative_x"); yajl_gen_integer(gen, x_rel); - child_click_events_key("relative_y"); + ystr("relative_y"); yajl_gen_integer(gen, y_rel); - child_click_events_key("width"); + ystr("width"); yajl_gen_integer(gen, width); - child_click_events_key("height"); + ystr("height"); yajl_gen_integer(gen, height); yajl_gen_map_close(gen);