我想制作一个更高级的键盘和鼠标模拟器来交替内置操作。
从插件模板开始。
无需任何更改即可构建它并且有效。
然后安装robotjs模块和rollup插件来打包robotjs.node文件。
将 robots.keyTap() 添加到主脚本的 onKeyDown 事件中。
之后,该插件将停止工作。
设置:
npm install -g @elgato/cli
streamdeck create
模块安装:
npm i robotjs
npm i --save-dev rollup-plugin-natives
rollup.config.mjs
(添加了一些行来打包robotjs.node文件,并且没有触及其他部分。)
// ...
import nativePlugin from 'rollup-plugin-natives'
// ...
const config = {
// ...
plugins: [
nativePlugin
(
{
copyTo: `./${sdPlugin}/lib`,
}
)
]
};
...\src 操作\increment-counter.ts
(我在运行“streamdeck create”时得到的模板脚本。)
import { action, KeyDownEvent, DialRotateEvent, SingletonAction, WillAppearEvent } from "@elgato/streamdeck";
import * as robot from 'robotjs'
@action({ UUID: "com.user.testplugin.increment" })
export class IncrementCounter extends SingletonAction<CounterSettings> {
async onWillAppear(ev: WillAppearEvent<CounterSettings>): Promise<void>
{
let count = 0;
await ev.action.setSettings({ count });
return ev.action.setTitle(`${count}`);
}
async onKeyDown(ev: KeyDownEvent<CounterSettings>): Promise<void> {
let count = ev.payload.settings.count ?? 0;
count++;
robot.keyTap('enter'); // <-- 💀🚩.
await ev.action.setSettings({ count });
await ev.action.setTitle(`count}`);
}
}
type CounterSettings = {
count: number;
};
调用 keyTap() 等机器人方法将不会运行插件。
即使在 try{} 中,脚本也无法到达 catch(error){...}。
所以,我无法调试插件,也无法收到错误消息。
如果插件运行,按钮上应该显示“0”,但什么也不显示。
按下时会显示警告标志⚠️。
出了什么问题?
我不熟悉 typescript 和 rollup。
请帮忙。
环境:
Windows 10 Home 64bit
Stream Deck 6.6.1
NodeJS v18.18.0
可能为时已晚,但我遇到了类似的问题:
RollupError: node_modules/robotjs/build/Release/robotjs.node (1:2): Unexpected character '�' (Note that you need plugins to import files that are not JavaScript)
我能够通过编辑
rollup.config.mjs
并将 robotsjs 声明为外部依赖项来解决此问题。
像这样:
const config = {
input: "...",
output: { ... },
plugins: [ ... ],
external: ["robotjs"],
};
export default config;
我也是流媒体插件、节点和汇总的新手。但我希望如果有人再次偶然发现这个问题,这会有所帮助^^