2016-07-30 70 views
0

我在index.jsRobotjs错误:无效的键码指定

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这段代码,又名什么被解析为变量的设置。

{ 
    "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. 

这意味着,因为有错误中明确指出,这是得到一个无效的键码。我猜这是我犯的一个愚蠢的错误。我测试中的数据等于“dKEY_DRIGHT”。变量字符串等于那个,但我需要摆脱d为了它的工作。当我执行实时控制台时,我能够通过使用相同的代码获取我需要的数据,但是当它在文件中运行时somethig出错。任何东西都有帮助:)

回答

0

您可以尝试使用node-key-sender将按键发送到您的操作系统。

npm install --save-dev node-key-sender安装。

和发送键使用键盘:

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

所有你配置的值( 'A', 'B',...)由LIB接受。你可以直接发送它们。

查阅文档页面以获取更多信息:https://www.npmjs.com/package/node-key-sender