Add get_bindings IPC interface

The new get_bindings IPC interface (IPC_GET_BINDINGS) allows swaymsg (and
other IPC clients) to interrogate sway's input bindings for all configured
binding modes.

The output of get_bindings is a JSON object mapping each configured binding
mode (e.g. "default", "resize", etc.) to an array of binding objects. The
binding JSON objects are of the same form as those in IPC_EVENT_BINDING.

N.B. a big chunk of code from ipc_event_binding() is moved to a new
ipc_json_describe_binding() function which services both the new
IPC_GET_BINDINGS as well as the existing IPC_EVENT_BINDING commands.

Signed-off-by: Peter Grayson <pete@jpgrayson.net>
This commit is contained in:
Peter Grayson 2019-03-08 12:43:04 -05:00
parent b7fe5097e9
commit 331bcac3ea
10 changed files with 124 additions and 62 deletions

View file

@ -417,6 +417,8 @@ int main(int argc, char **argv) {
type = IPC_GET_VERSION;
} else if (strcasecmp(cmdtype, "get_binding_modes") == 0) {
type = IPC_GET_BINDING_MODES;
} else if (strcasecmp(cmdtype, "get_bindings") == 0) {
type = IPC_GET_BINDINGS;
} else if (strcasecmp(cmdtype, "get_config") == 0) {
type = IPC_GET_CONFIG;
} else if (strcasecmp(cmdtype, "send_tick") == 0) {

View file

@ -75,6 +75,10 @@ _swaymsg_ [options...] [message]
*get\_binding\_modes*
Gets a JSON-encoded list of currently configured binding modes.
*get\_bindings*
Gets a JSON-encoded object mapping binding modes to their keyboard and
mouse bindings.
*get\_config*
Gets a JSON-encoded copy of the current configuration.