2016-07-30 22 views
0

Ich habe den folgenden Code in index.jsRobotjs Fehler: Ungültige Schlüsselcode angegeben

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); 

ich diesen Code auch in config.json haben, auch bekannt als, was in den Einstellungen Variable analysiert wird.

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

, was das Problem ist, dass, wenn ich entweder zu robotjs.togglekeys Anweisung get down i den Fehler

Error: Invalid key code specified. 

Das bedeutet, dass, da es Fehler eindeutig fest, es wird eine ungültige keycode bekommen . Ich vermute, das ist ein dummer Fehler, den ich gemacht habe. Daten in meinem Test ist gleich "dKEY_DRIGHT". Die Variable string ist gleich, aber ich muss das d loswerden, damit es funktioniert. Wenn ich die Live-Konsole mache, kann ich die Daten, die ich brauche, mit dem gleichen Code bekommen, aber etwas schief geht, wenn es in der Datei läuft. alles hilft :)

Antwort

0

Sie können versuchen, Knoten-Schlüssel-Sender zu verwenden, um die Tasten an Ihr Betriebssystem zu drücken.

Installieren Sie es mit npm install --save-dev node-key-sender.

Und einen Schlüssel für die Tastatur senden mit:

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

alle Werte Sie config ('a', 'b', ...) werden von der lib akzeptiert. Sie können sie direkt senden.

Weitere Informationen finden Sie auf der Dokumentationsseite: https://www.npmjs.com/package/node-key-sender.