add cache and rename some files
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 4.4 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.1 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.8 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 3.0 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 3.5 KiB |
@@ -0,0 +1,2 @@
|
||||
[v1]
|
||||
"opendeck-starterpack 2.6.0 (path+file:///home/daniel/.cache/yay/opendeck/src/opendeck/plugins/com.amansprojects.starterpack.sdPlugin)" = ["opendeck-starterpack"]
|
||||
@@ -0,0 +1 @@
|
||||
{"installs":{"opendeck-starterpack 2.6.0 (path+file:///home/daniel/.cache/yay/opendeck/src/opendeck/plugins/com.amansprojects.starterpack.sdPlugin)":{"version_req":null,"bins":["opendeck-starterpack"],"features":[],"all_features":false,"no_default_features":false,"profile":"release","target":"x86_64-unknown-linux-gnu","rustc":"rustc 1.90.0 (1159e78c4 2025-09-14) (Arch Linux rust 1:1.90.0-3)\nbinary: rustc\ncommit-hash: 1159e78c4747b02ef996e55082b704c09b970588\ncommit-date: 2025-09-14\nhost: x86_64-unknown-linux-gnu\nrelease: 1.90.0\nLLVM version: 20.1.8\n"}}}
|
||||
Binary file not shown.
@@ -0,0 +1,66 @@
|
||||
{
|
||||
"Name": "OpenDeck Starter Pack",
|
||||
"Description": "OpenDeck starter pack plugin",
|
||||
"Author": "Aman Khanna (nekename)",
|
||||
"Version": "2.6.0",
|
||||
"CodePathWin": "windows/bin/opendeck-starterpack.exe",
|
||||
"CodePathMac": "darwin/bin/opendeck-starterpack",
|
||||
"CodePathLin": "linux/bin/opendeck-starterpack",
|
||||
"Icon": "icons/plugin",
|
||||
"Category": "OpenDeck",
|
||||
"OS": [
|
||||
{
|
||||
"Platform": "mac",
|
||||
"MinimumVersion": "10.11"
|
||||
},
|
||||
{
|
||||
"Platform": "windows",
|
||||
"MinimumVersion": "10"
|
||||
},
|
||||
{
|
||||
"Platform": "linux"
|
||||
}
|
||||
],
|
||||
"Actions": [
|
||||
{
|
||||
"Icon": "icons/runCommand",
|
||||
"Name": "Run Command",
|
||||
"States": [{ "Image": "actionDefaultImage" }],
|
||||
"Controllers": ["Keypad", "Encoder"],
|
||||
"SupportedInMultiActions": true,
|
||||
"Tooltip": "Run a command",
|
||||
"UUID": "com.amansprojects.starterpack.runcommand",
|
||||
"PropertyInspectorPath": "propertyInspector/runCommand.html"
|
||||
},
|
||||
{
|
||||
"Icon": "icons/inputSimulation",
|
||||
"Name": "Input Simulation",
|
||||
"States": [{ "Image": "actionDefaultImage" }],
|
||||
"Controllers": ["Keypad"],
|
||||
"SupportedInMultiActions": true,
|
||||
"Tooltip": "Simulate mouse or keyboard input",
|
||||
"UUID": "com.amansprojects.starterpack.inputsimulation",
|
||||
"PropertyInspectorPath": "propertyInspector/inputSimulation.html"
|
||||
},
|
||||
{
|
||||
"Icon": "icons/switchProfile",
|
||||
"Name": "Switch Profile",
|
||||
"States": [{ "Image": "actionDefaultImage" }],
|
||||
"Controllers": ["Keypad"],
|
||||
"SupportedInMultiActions": true,
|
||||
"Tooltip": "Switch the selected profile",
|
||||
"UUID": "com.amansprojects.starterpack.switchprofile",
|
||||
"PropertyInspectorPath": "propertyInspector/switchProfile.html"
|
||||
},
|
||||
{
|
||||
"Icon": "icons/deviceBrightness",
|
||||
"Name": "Device Brightness",
|
||||
"States": [{ "Image": "actionDefaultImage" }],
|
||||
"Controllers": ["Keypad", "Encoder"],
|
||||
"SupportedInMultiActions": true,
|
||||
"Tooltip": "Change the device brightness",
|
||||
"UUID": "com.amansprojects.starterpack.devicebrightness",
|
||||
"PropertyInspectorPath": "propertyInspector/deviceBrightness.html"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="10" viewBox="0 0 12 10">
|
||||
<polygon fill="#FFF" points="7.2 7.5 7.2 -1.3 8.7 -1.3 8.6 9.1 2.7 8.7 2.7 7.2" transform="rotate(37 5.718 3.896)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 210 B |
@@ -0,0 +1,59 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<script>
|
||||
let update = () => {};
|
||||
|
||||
function connectElgatoStreamDeckSocket(inPort, inPropertyInspectorUUID, inRegisterEvent, inInfo, inActionInfo) {
|
||||
inActionInfo = JSON.parse(inActionInfo);
|
||||
|
||||
if (inActionInfo.payload.controller == "Encoder") {
|
||||
document.documentElement.innerHTML = "";
|
||||
return;
|
||||
}
|
||||
|
||||
const websocket = new WebSocket("ws://localhost:" + inPort);
|
||||
websocket.onopen = () => {
|
||||
websocket.send(JSON.stringify({
|
||||
event: inRegisterEvent,
|
||||
uuid: inPropertyInspectorUUID,
|
||||
}));
|
||||
};
|
||||
|
||||
const action = document.getElementById("action");
|
||||
action.value = inActionInfo.payload.settings.action ?? "set";
|
||||
const value = document.getElementById("value");
|
||||
value.value = (inActionInfo.payload.settings.value ?? 50).toString();
|
||||
const valueDisplay = document.getElementById("value-display");
|
||||
valueDisplay.innerText = value.value;
|
||||
|
||||
update = () => {
|
||||
valueDisplay.innerText = value.value;
|
||||
websocket.send(JSON.stringify({
|
||||
event: "setSettings",
|
||||
context: inActionInfo.context,
|
||||
payload: {
|
||||
action: action.value,
|
||||
value: parseInt(value.value),
|
||||
},
|
||||
}));
|
||||
};
|
||||
}
|
||||
</script>
|
||||
<link rel="stylesheet" href="sdpi.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="sdpi-item">
|
||||
<div class="sdpi-item-label">Action</div>
|
||||
<select id="action" onchange="update();" class="sdpi-item-value select">
|
||||
<option value="set">Set</option>
|
||||
<option value="increase">Increase</option>
|
||||
<option value="decrease">Decrease</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="sdpi-item">
|
||||
<div class="sdpi-item-label">Value (<span id="value-display"></span>%)</div>
|
||||
<input id="value" oninput="update();" class="sdpi-item-value" type="range" min="0" max="100" />
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,77 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<script>
|
||||
let update = () => {};
|
||||
|
||||
function connectElgatoStreamDeckSocket(inPort, inPropertyInspectorUUID, inRegisterEvent, inInfo, inActionInfo) {
|
||||
const websocket = new WebSocket("ws://localhost:" + inPort);
|
||||
inActionInfo = JSON.parse(inActionInfo);
|
||||
websocket.onopen = () => {
|
||||
websocket.send(JSON.stringify({
|
||||
event: inRegisterEvent,
|
||||
uuid: inPropertyInspectorUUID,
|
||||
}));
|
||||
};
|
||||
|
||||
const down = document.getElementById("down");
|
||||
down.value = inActionInfo.payload.settings.down ?? "";
|
||||
const up = document.getElementById("up");
|
||||
up.value = inActionInfo.payload.settings.up ?? "";
|
||||
|
||||
update = () => {
|
||||
websocket.send(JSON.stringify({
|
||||
event: "setSettings",
|
||||
context: inActionInfo.context,
|
||||
payload: {
|
||||
down: down.value,
|
||||
up: up.value,
|
||||
},
|
||||
}));
|
||||
};
|
||||
}
|
||||
</script>
|
||||
<link rel="stylesheet" href="sdpi.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div type="textarea" class="sdpi-item">
|
||||
<div class="sdpi-item-label">Key down</div>
|
||||
<span class="sdpi-item-value textarea">
|
||||
<textarea oninput="update();" id="down" style="font-family: monospace" placeholder="Input to be executed on key down"></textarea>
|
||||
</span>
|
||||
</div>
|
||||
<div type="textarea" class="sdpi-item">
|
||||
<div class="sdpi-item-label">Key up</div>
|
||||
<span class="sdpi-item-value textarea">
|
||||
<textarea oninput="update();" id="up" style="font-family: monospace" placeholder="Input to be executed on key up"></textarea>
|
||||
</span>
|
||||
</div>
|
||||
<details open>
|
||||
<summary style="margin-bottom: 0.25rem; font-size: 1.25rem">Details</summary>
|
||||
<code style="word-break: break-all">[t("hello world!"),m(10,10,r),s(5),b(l),k(ctrl,p),k(uni('a')),k(ctrl,r)]</code>
|
||||
<p>The example above becomes something like this:</p>
|
||||
<!-- deno-fmt-ignore -->
|
||||
<code style="white-space: pre;">[
|
||||
Text("hello world!"),
|
||||
MoveMouse(10, 10, Relative),
|
||||
Scroll(5, Vertical),
|
||||
Button(Left, Click),
|
||||
Key(Control, Press),
|
||||
Key(Unicode('a'), Click),
|
||||
Key(Control, Release),
|
||||
]</code>
|
||||
<p>
|
||||
As you can see, <code>Vertical</code> is the default for the <code>Scroll</code> action if an axis is not specified,
|
||||
<code>Click</code> (press followed by release) is the default for the <code>Button</code> and <code>Key</code> actions if a direction is not specified, and so on.
|
||||
</p>
|
||||
<!-- deno-fmt-ignore -->
|
||||
<p>
|
||||
You can find a list of all of the keycodes
|
||||
<span style="color: dodgerblue; cursor: pointer;" onclick="window.open('https://github.com/enigo-rs/enigo/blob/v0.5.0/src/keycodes.rs', '_blank');">here</span>.
|
||||
Please note that not all keycodes are available on all operating systems, as is marked on each such keycode on the line above it.
|
||||
You can find the possible buttons, directions, axis and coordinate types
|
||||
<span style="color: dodgerblue; cursor: pointer;" onclick="window.open('https://github.com/enigo-rs/enigo/blob/v0.5.0/src/lib.rs', '_blank');">here</span>.
|
||||
</p>
|
||||
</details>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,80 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<script>
|
||||
let update = () => {};
|
||||
|
||||
function connectElgatoStreamDeckSocket(inPort, inPropertyInspectorUUID, inRegisterEvent, inInfo, inActionInfo) {
|
||||
const websocket = new WebSocket("ws://localhost:" + inPort);
|
||||
inActionInfo = JSON.parse(inActionInfo);
|
||||
websocket.onopen = () => {
|
||||
websocket.send(JSON.stringify({
|
||||
event: inRegisterEvent,
|
||||
uuid: inPropertyInspectorUUID,
|
||||
}));
|
||||
};
|
||||
|
||||
if (inActionInfo.payload.controller == "Encoder") {
|
||||
document.getElementById("encoder").style.display = "block";
|
||||
document.getElementById("down-label").innerText = "Dial down";
|
||||
document.getElementById("up-label").innerText = "Dial up";
|
||||
}
|
||||
|
||||
const down = document.getElementById("down");
|
||||
down.value = inActionInfo.payload.settings.down ?? "";
|
||||
const up = document.getElementById("up");
|
||||
up.value = inActionInfo.payload.settings.up ?? "";
|
||||
const rotate = document.getElementById("rotate");
|
||||
rotate.value = inActionInfo.payload.settings.rotate ?? "";
|
||||
const file = document.getElementById("file");
|
||||
file.value = inActionInfo.payload.settings.file ?? "";
|
||||
const show = document.getElementById("show");
|
||||
show.checked = inActionInfo.payload.settings.show ?? false;
|
||||
|
||||
update = () => {
|
||||
websocket.send(JSON.stringify({
|
||||
event: "setSettings",
|
||||
context: inActionInfo.context,
|
||||
payload: {
|
||||
down: down.value,
|
||||
up: up.value,
|
||||
rotate: rotate.value,
|
||||
file: file.value,
|
||||
show: show.checked,
|
||||
},
|
||||
}));
|
||||
};
|
||||
}
|
||||
</script>
|
||||
<link rel="stylesheet" href="sdpi.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="sdpi-item">
|
||||
<div class="sdpi-item-label" id="down-label">Key down</div>
|
||||
<input id="down" oninput="update();" class="sdpi-item-value" />
|
||||
</div>
|
||||
<div class="sdpi-item">
|
||||
<div class="sdpi-item-label" id="up-label">Key up</div>
|
||||
<input id="up" oninput="update();" class="sdpi-item-value" />
|
||||
</div>
|
||||
<div id="encoder" style="display: none">
|
||||
<div class="sdpi-item">
|
||||
<div class="sdpi-item-label">Dial rotate</div>
|
||||
<input id="rotate" oninput="update();" class="sdpi-item-value" />
|
||||
</div>
|
||||
<p style="padding-left: 0.75rem; padding-right: 0.75rem">
|
||||
Usages of <code>%d</code> will be substituted with the number of ticks turned, where negative values signify counterclockwise rotation and positive values signify clockwise rotation.
|
||||
</p>
|
||||
</div>
|
||||
<br />
|
||||
<div class="sdpi-item">
|
||||
<div class="sdpi-item-label">Write to path</div>
|
||||
<input id="file" oninput="update();" class="sdpi-item-value" />
|
||||
</div>
|
||||
<div class="sdpi-item">
|
||||
<div class="sdpi-item-label">Show on key</div>
|
||||
<input id="show" type="checkbox" oninput="update();" class="sdpi-item-value" />
|
||||
<label for="show"><span></span></label>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,46 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<script>
|
||||
let update = () => {};
|
||||
|
||||
function connectElgatoStreamDeckSocket(inPort, inPropertyInspectorUUID, inRegisterEvent, inInfo, inActionInfo) {
|
||||
const websocket = new WebSocket("ws://localhost:" + inPort);
|
||||
inActionInfo = JSON.parse(inActionInfo);
|
||||
websocket.onopen = () => {
|
||||
websocket.send(JSON.stringify({
|
||||
event: inRegisterEvent,
|
||||
uuid: inPropertyInspectorUUID,
|
||||
}));
|
||||
};
|
||||
|
||||
const device = document.getElementById("device");
|
||||
device.value = inActionInfo.payload.settings.device ?? inActionInfo.device;
|
||||
const profile = document.getElementById("profile");
|
||||
profile.value = inActionInfo.payload.settings.profile ?? "Default";
|
||||
|
||||
update = () => {
|
||||
websocket.send(JSON.stringify({
|
||||
event: "setSettings",
|
||||
context: inActionInfo.context,
|
||||
payload: {
|
||||
device: device.value ?? inActionInfo.device,
|
||||
profile: profile.value,
|
||||
},
|
||||
}));
|
||||
};
|
||||
}
|
||||
</script>
|
||||
<link rel="stylesheet" href="sdpi.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="sdpi-item">
|
||||
<div class="sdpi-item-label">Device ID</div>
|
||||
<input id="device" oninput="update();" class="sdpi-item-value" />
|
||||
</div>
|
||||
<div class="sdpi-item">
|
||||
<div class="sdpi-item-label">Profile</div>
|
||||
<input id="profile" oninput="update();" class="sdpi-item-value" />
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user