From 756d7bbd3c1a5df01c8d77e3f28b39b1755092fc Mon Sep 17 00:00:00 2001 From: WarmUpTill <19472752+WarmUpTill@users.noreply.github.com> Date: Mon, 18 Aug 2025 18:43:51 +0200 Subject: [PATCH] Add support for multi-action stream deck buttons It has to be noted however: * multi-action buttons don't have any coordinates * multi-action buttons send the "up" and "down" event at the same time. (When the multi-action button is released) Thus they might arrive in the wrong order due to network latency. --- .../macro-condition-stream-deck.cpp | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/plugins/stream-deck/macro-condition-stream-deck.cpp b/plugins/stream-deck/macro-condition-stream-deck.cpp index 1adfba18..79c38922 100644 --- a/plugins/stream-deck/macro-condition-stream-deck.cpp +++ b/plugins/stream-deck/macro-condition-stream-deck.cpp @@ -48,14 +48,25 @@ void receiveStreamDeckMessage(obs_data_t *request_data, obs_data_t *) } message.keyDown = obs_data_get_bool(data, "isKeyDownEvent"); - OBSDataAutoRelease coordinates = obs_data_get_obj(data, "coordinates"); - if (!coordinates) { - printParseError(request_data); - return; - } + const bool isMultiAction = obs_data_get_bool(data, "isInMultiAction"); + if (!isMultiAction) { + OBSDataAutoRelease coordinates = + obs_data_get_obj(data, "coordinates"); + if (!coordinates && !isMultiAction) { + printParseError(request_data); + return; + } - message.row = obs_data_get_int(coordinates, "row"); - message.column = obs_data_get_int(coordinates, "column"); + message.row = obs_data_get_int(coordinates, "row"); + message.column = obs_data_get_int(coordinates, "column"); + } else { + message.row = 0; + message.column = 0; + vblog(LOG_INFO, + "received multi action stream deck message" + " - setting coordinates to (%d, %d)", + message.row, message.column); + } OBSDataAutoRelease settings = obs_data_get_obj(data, "settings"); if (!settings) {