json Robotjs错误:指定的密钥代码无效

m1m5dgzv  于 2023-04-08  发布在  其他
关注(0)|答案(2)|浏览(140)

我在index.js中有以下代码

var settingsFile = "config.json";

var settings = JSON.parse(require("fs").readFileSync(settingsFile));

const net = require('net');
const robot = require("robotjs");
const fs = require("fs");

var client;

var customKeys = {
    "scroll_up":'robot.scrollMouse(50, "up");',
    "scroll_down":"robot.scrollMouse(50,'down');"

}

function startCommunication(address,port) {

    client = net.connect({port: port,host:address}, () => {
        // 'connect' listener
        console.log('connected to server!');
        //client.write('world!\r\n');
    });
    client.on('data', (data) => {
        console.log(data.toString());
        var string = data.toString();
        console.log(settings.keys[string.substr(1)]);
        if(string.substr(0,1) == "d") {
            robot.keyToggle(settings.keys[string.substr(1)],"down");
        } else {
            robot.keyToggle(settings.keys[string.substr(1)],"up");
        }

        //client.end();
    });
    client.on('end', () => {
        console.log('disconnected from server');
    });
}

startCommunication(settings.address,settings.port);

我在config.json中也有这段代码,也就是解析到settings变量中的代码。

{
    "port":5555,

    "address":"192.168.1.118",

    "keys":{
        "KEY_A":"a",
        "KEY_B":"b",
        "KEY_X":"x",
        "KEY_Y":"y",
        "KEY_L":"y",
        "KEY_R":"t",
        "KEY_DUP":"up",
        "KEY_DDOWN":"down",
        "KEY_DLEFT":"left",
        "KEY_DRIGHT":"right",
        "KEY_START":"z",
        "KEY_SELECT":"q"
    }
}

问题是,当我执行robotjs.togglekeys语句时,我得到了错误

Error: Invalid key code specified.

这意味着,正如错误明确指出的那样,它得到了一个无效的keycode.我猜这是我犯的一些愚蠢的错误.在我的测试数据等于“dKEY_DRIGHT”.变量字符串等于,但我需要摆脱的d为了它的工作.当我做现场控制台,我能够得到的数据,我需要使用相同的代码,但somethig出错时,它正在运行的文件。任何帮助:)

7bsow1i6

7bsow1i61#

老问题,但也许有人像我一样在寻找解决方案...
如果你没有按下任何修饰符,你应该传递字符串“none”作为修饰符。我传递的是一个空字符串,这引起了同样的问题。这至少对我有用,尽管它是一个可选参数。
https://robotjs.io/docs/syntax#keytogglekey-down-modifier

robot.keyToggle(settings.keys[string.substr(1)],"down","none");
jdzmm42g

jdzmm42g2#

您可以尝试使用node-key-sender将按键发送到您的操作系统。
使用npm install --save-dev node-key-sender安装。
并使用以下命令向键盘发送一个键:

var ks = require('node-key-sender');
ks.sendKey('up');

你的config('a','b',...)的所有值都被库接受。你可以直接发送它们。
有关详细信息,请查看文档页面:https://www.npmjs.com/package/node-key-sender

相关问题