Skip to content

Commit dd8b7cd

Browse files
committed
send modifier keys held while scrolling to scripts
1 parent 4194da0 commit dd8b7cd

File tree

5 files changed

+33
-11
lines changed

5 files changed

+33
-11
lines changed

src/bar_item.c

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -256,16 +256,20 @@ void bar_item_on_click(struct bar_item* bar_item, uint32_t type, uint32_t mouse_
256256
env_vars_destroy(&env_vars);
257257
}
258258

259-
void bar_item_on_scroll(struct bar_item* bar_item, int scroll_delta) {
259+
void bar_item_on_scroll(struct bar_item* bar_item, int scroll_delta, uint32_t modifier) {
260260
if (!bar_item) return;
261261

262262
struct env_vars env_vars;
263263
env_vars_init(&env_vars);
264264
char info_str[256];
265265
snprintf(info_str, 256, "{\n"
266-
"\t\"delta\": %d\n"
266+
"\t\"delta\": %d,\n"
267+
"\t\"modifier\": \"%s\",\n"
268+
"\t\"modfier_code\": %u\n"
267269
"}\n",
268-
scroll_delta );
270+
scroll_delta,
271+
get_modifier_description(modifier),
272+
modifier );
269273

270274
env_vars_set(&env_vars, string_copy("INFO"), string_copy(info_str));
271275

@@ -275,6 +279,11 @@ void bar_item_on_scroll(struct bar_item* bar_item, int scroll_delta) {
275279
string_copy("SCROLL_DELTA"),
276280
string_copy(delta_ver_str));
277281

282+
env_vars_set(&env_vars,
283+
string_copy("MODIFIER"),
284+
string_copy(get_modifier_description(modifier)));
285+
286+
278287
if (bar_item->update_mask & UPDATE_MOUSE_SCROLLED)
279288
bar_item_update(bar_item,
280289
COMMAND_SUBSCRIBE_MOUSE_SCROLLED,

src/bar_item.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ void bar_item_needs_update(struct bar_item* bar_item);
107107
bool bar_item_update(struct bar_item* bar_item, char* sender, bool forced, struct env_vars* env_vars);
108108

109109
void bar_item_on_click(struct bar_item* bar_item, uint32_t type, uint32_t mouse_button_code, uint32_t modifier, CGPoint point);
110-
void bar_item_on_scroll(struct bar_item* bar_item, int scroll_delta);
110+
void bar_item_on_scroll(struct bar_item* bar_item, int scroll_delta, uint32_t modifier);
111111
void bar_item_on_drag(struct bar_item* bar_item, CGPoint point);
112112
void bar_item_mouse_entered(struct bar_item* bar_item);
113113
void bar_item_mouse_exited(struct bar_item* bar_item);

src/bar_manager.c

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -802,7 +802,7 @@ void bar_manager_handle_mouse_exited_global(struct bar_manager* bar_manager) {
802802
bar_manager_handle_mouse_exited(bar_manager, NULL);
803803
}
804804

805-
void bar_manager_handle_mouse_scrolled_global(struct bar_manager* bar_manager, int scroll_delta, uint32_t adid) {
805+
void bar_manager_handle_mouse_scrolled_global(struct bar_manager* bar_manager, int scroll_delta, uint32_t adid, uint32_t modifier) {
806806
struct env_vars env_vars;
807807
env_vars_init(&env_vars);
808808
char delta_ver_str[32];
@@ -813,9 +813,13 @@ void bar_manager_handle_mouse_scrolled_global(struct bar_manager* bar_manager, i
813813

814814
char info_str[256];
815815
snprintf(info_str, 256, "{\n"
816-
"\t\"delta\": %d\n"
816+
"\t\"delta\": %d,\n"
817+
"\t\"modifier\": \"%s\",\n"
818+
"\t\"modfier_code\": %u\n"
817819
"}\n",
818-
scroll_delta );
820+
scroll_delta,
821+
get_modifier_description(modifier),
822+
modifier );
819823

820824
env_vars_set(&env_vars, string_copy("INFO"), string_copy(info_str));
821825

@@ -825,6 +829,10 @@ void bar_manager_handle_mouse_scrolled_global(struct bar_manager* bar_manager, i
825829
string_copy("DID"),
826830
string_copy(adid_str));
827831

832+
env_vars_set(&env_vars,
833+
string_copy("MODIFIER"),
834+
string_copy(get_modifier_description(modifier)));
835+
828836
bar_manager_custom_events_trigger(bar_manager,
829837
COMMAND_SUBSCRIBE_MOUSE_SCROLLED_GLOBAL,
830838
&env_vars );

src/bar_manager.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ void bar_manager_resize(struct bar_manager* bar_manager);
105105

106106
void bar_manager_handle_mouse_entered_global(struct bar_manager* bar_manager);
107107
void bar_manager_handle_mouse_exited_global(struct bar_manager* bar_manager);
108-
void bar_manager_handle_mouse_scrolled_global(struct bar_manager* bar_manager, int scroll_delta, uint32_t did);
108+
void bar_manager_handle_mouse_scrolled_global(struct bar_manager* bar_manager, int scroll_delta, uint32_t did, uint32_t modifier);
109109
void bar_manager_handle_mouse_entered(struct bar_manager* bar_manager, struct bar_item* bar_item);
110110
void bar_manager_handle_mouse_exited(struct bar_manager* bar_manager, struct bar_item* bar_item);
111111
void bar_manager_handle_front_app_switch(struct bar_manager* bar_manager, char* info);

src/event.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,7 @@ static void event_mouse_scrolled(void* context) {
242242
int scroll_delta
243243
= CGEventGetIntegerValueField(context,
244244
kCGScrollWheelEventDeltaAxis1);
245+
uint32_t modifier_keys = CGEventGetFlags(context);
245246

246247
uint64_t event_time = clock_gettime_nsec_np(CLOCK_MONOTONIC_RAW_APPROX);
247248
if (g_scroll_info.timestamp + SCROLL_TIMEOUT > event_time) {
@@ -263,7 +264,8 @@ static void event_mouse_scrolled(void* context) {
263264
bar_manager_handle_mouse_scrolled_global(&g_bar_manager,
264265
scroll_delta
265266
+ g_scroll_info.delta_y,
266-
bar->adid );
267+
bar->adid,
268+
modifier_keys );
267269
}
268270

269271
g_scroll_info.delta_y = 0;
@@ -278,7 +280,8 @@ static void event_mouse_scrolled(void* context) {
278280
bar_manager_handle_mouse_scrolled_global(&g_bar_manager,
279281
scroll_delta
280282
+ g_scroll_info.delta_y,
281-
bar->adid );
283+
bar->adid,
284+
modifier_keys );
282285
}
283286

284287
g_scroll_info.delta_y = 0;
@@ -293,7 +296,9 @@ static void event_mouse_scrolled(void* context) {
293296
bar_item = bar_manager_get_item_by_point(&g_bar_manager, point, NULL);
294297
}
295298

296-
bar_item_on_scroll(bar_item, scroll_delta + g_scroll_info.delta_y);
299+
bar_item_on_scroll(bar_item,
300+
scroll_delta + g_scroll_info.delta_y,
301+
modifier_keys );
297302

298303
if (bar_item && bar_item->needs_update)
299304
bar_manager_refresh(&g_bar_manager, false, false);

0 commit comments

Comments
 (0)