Space Plugin SDKSpace Plugin SDK
首页
概述
  • 中文简体
  • English
首页
概述
  • 中文简体
  • English
  • 插件SDK

    • 概述
    • 开始
    • 术语
    • 基础
    • 清单
    • 国际化
    • 接收的事件
    • 发送的事件
    • 注册程序
    • 属性检查器
    • 风格指南
    • 更新日志
  • 示例

    • 计数器
    • 计时器
    • 数字展示
    • 时间
  • 支持

    • 帮助和错误报告

注册程序

插件如何连接到 Stream Dock

插件注册

插件必须遵循如下注册程序。您可以重复使用在各种示例中实现的代码。我们在 Javascript 中提供了此过程的实现,但您可以使用任何支持 WebSocket 的编程语言来实现此过程。当 Stream Dock 应用程序启动时,它会生成每个插件的一个实例。

  • 对于 Javascript 插件,使用多个参数调用 connectElgatoStreamDeckSocket(),为了兼容Elgato我们使用和他们一样的函数名称这样您开发的插件可以兼容elgato的软件

  • 对于打包成 .exe 的插件,使用多个参数启动 .exe 可执行文件

这些参数包含用于与 Stream Dock 应用程序通信的端口和唯一标识符

Javascript 插件注册

对于 Javascript 插件,您需要声明以下 Javascript 函数:

//为了兼容Elgato我们使用和他们一样的函数名称这样您开发的插件可以兼容elgato的软件
function connectElgatoStreamDeckSocket(
    inPort, 
    inPluginUUID, 
    inRegisterEvent, 
    inInfo
)

此函数在加载插件时调用,并且应该:

  • 使用传入的端口参数创建 WebSocket:
const server = new WebSocket('ws://127.0.0.1:' + inPort);
  • 当 WebSocket 打开时,插件需要发送注册事件
server.onopen = () => server.send(
    JSON.stringify({ event: inRegisterEvent, uuid: inPluginUUID });
);
  • 执行以上两个步骤后,插件应通过以下函数接收事件:
server.onmessage = (e) => (
    console.log(e.data);
);

编译插件注册

对于打包成 .exe 的插件,将使用以下参数启动 .exe 可执行文件:

参数描述
-port字符串"-port"
port用于连接websocket的端口
-pluginUUID字符串"-pluginUUID"
pluginUUID打开 WebSocket 后用于注册插件的唯一标识符字符串
-registerEvent字符串"-registerEvent"
event打开 WebSocket 后应用于注册插件的事件类型
-info字符串"-info"
info包含 Stream Dock 和设备信息的 JSON 字符串

PropertyInspector 注册

对于属性检查器,您需要声明以下 Javascript 函数:

// 为了兼容Elgato我们使用和他们一样的函数名称这样您开发的插件可以兼容elgato的软件
function connectElgatoStreamDeckSocket(
    inPort,
    inPropertyInspectorUUID, 
    inRegisterEvent, 
    inInfo, 
    inActionInfo
)
参数描述
inPort用于连接websocket的端口
inPropertyInspectorUUID打开 WebSocket 后用于注册属性检查器的唯一标识符字符串
inRegisterEvent打开 WebSocket 后应用于注册属性检查器的事件类型
inInfo一个 JSON 对象,包含有关应用程序的信息
inActionInfo一个 JSON 对象,包含有关action的信息

此函数在显示属性检查器时调用,并且应:

  • 使用传入端口参数创建 WebSocket:
const server = new WebSocket('ws://127.0.0.1:' + inPort);
  • 当 WebSocket 打开时,属性检查器需要注册 JSON 数据
server.onopen = () => server.send(
    JSON.stringify({ event: inRegisterEvent, uuid: inPropertyInspectorUUID });
);
  • 执行以上两个步骤后,属性检查器应通过以下函数接收事件:
server.onmessage = (e) => (
    console.log(e.data);
);

info

注册过程中使用的 JSON 对象,如下所示:

{
    "application":{
        "font":"HarmonyOS Sans",
        "language":"zh_CN",
        "platform":"windows",
        "platformVersion":"10.0.19045",
        "version":"4.9"
    },
    "colors":{
        "buttonMouseOverBackgroundColor":"#464646FF",
        "buttonPressedBackgroundColor":"#303030FF",
        "buttonPressedBorderColor":"#646464FF",
        "buttonPressedTextColor":"#969696FF",
        "highlightColor":"#0078FFFF"
    },
    "devicePixelRatio":1,
    "devices":[
        {
            "id": "55F16B35884A859CCE4FFA1FC8D3DE5B", 
            "name": "Device Name", 
            "size": {
                "columns": 5, 
                "rows": 3
            }, 
            "type": 0
            },
            {
            "id": "B8F04425B95855CF417199BCB97CD2BB", 
            "name": "Another Device", 
            "size": {
                "columns": 3, 
                "rows": 2
            }, 
            "type": 1
        }
    ],
    "plugin":{
        "uuid":"com.mirabox.demo",
        "version":"1.8"
    }
}
参数描述
application一个 JSON 对象,包含有关应用程序的信息
colors一个 JSON 对象,包含有关颜色的信息
devices一个 JSON 数组,包含有关设备的信息
plugin一个 JSON 对象,包含有关插件的信息
devicePixelRatio像素比值,用于指示 Stream Dock 应用程序是否在 HiDPI 屏幕上运行

application 对象包含以下成员:

application描述
language应用程序的语言
platform应用程序的运行平台
platformVersion应用程序的运行平台版本
version应用程序的版本

plugin 对象包含以下成员:

plugin描述
uuid插件的唯一标识符
version插件的版本

devices 数组包含以下成员:

devices描述
id设备的唯一标识符
name设备的名称
size设备的大小
type设备的类型

inActionInfo

inActionInfo 参数是JSON 字符串,它包含以下信息:

{
  "action": "com.mirabox.demo.action1", 
  "context": uniqueValue, 
  "device": uniqueValue, 
  "payload": {
    "settings": {<JSON data>},
    "controller": "Keypad" | "Encoder"
    "coordinates": {
      "column": 2, 
      "row": 1
    }
  }
}
参数描述
action插件中定义的 action 的唯一标识符
context用于标识实例操作的值
device用于标识设备的值
payload一个JSON对象

payload 对象包含以下成员:

payload描述
settings一个JSON对象,持久存储的数据
controller控制器数组。有效值包括Keypad,Information,SecondaryScreen,Knob,Keypad正常的按键,Information只能看,没有触摸、按键事件那些,SecondaryScreen小屏幕显示,Knob旋钮。 默认情况下。["Keypad"]
coordinates触发的操作的坐标
Last Updated:
Contributors: Heart
Prev
发送的事件
Next
属性检查器