注册程序
插件如何连接到 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 打开时,插件需要注册 JSON 数据
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 | 触发的操作的坐标 |