Send IPC modifier event on bar_modifier up/down

Detects when a bar modifier key is pressed/released and sends a modifier
IPC event to any listeners (usually swaybars).

This way a swaybar can listen on the modifier event and hide/show the
bar accordingly (not implemented yet)

The modifier event looks like this:

    {
      "change": "pressed", // or released
      "modifier": "Mod4"
    }
This commit is contained in:
Mikkel Oscar Lyderik 2016-01-05 02:20:20 +01:00
parent 7727c9efbc
commit c20c63b677
5 changed files with 57 additions and 8 deletions

View file

@ -20,6 +20,7 @@
#include "resize.h"
#include "extensions.h"
#include "criteria.h"
#include "ipc-server.h"
// Event should be sent to client
#define EVENT_PASSTHROUGH false
@ -392,13 +393,15 @@ static bool handle_key(wlc_handle view, uint32_t time, const struct wlc_modifier
struct bar_config *bar;
for (i = 0; i < config->bars->length; ++i) {
bar = config->bars->items[i];
switch (modifier_state_changed(modifiers->mods, bar->modifier)) {
case MOD_STATE_PRESSED:
sway_log(L_INFO, "pressed!!!");
break;
case MOD_STATE_RELEASED:
sway_log(L_INFO, "released!!!");
break;
if (strcmp(bar->mode, "hide") == 0 && strcmp(bar->hidden_state, "hide") == 0) {
switch (modifier_state_changed(modifiers->mods, bar->modifier)) {
case MOD_STATE_PRESSED:
ipc_event_modifier(bar->modifier, "pressed");
break;
case MOD_STATE_RELEASED:
ipc_event_modifier(bar->modifier, "released");
break;
}
}
}
// update modifiers state