Node.js JavaScript: Simuler la pression de Touche sur le Serveur (Comme une Macro)
Je suis en train d'essayer d'obtenir un node.js script pour simuler une pression sur une touche, comme la flèche haut ou la touche. Plus précisément, je suis en train de faire un clone de Twitch Joue Pokemon. Fondamentalement, chaque fois qu'une commande (haut, bas, gauche, droite, a, b, select, start) est envoyé via IRC, le serveur simule une pression de touche, qui contrôle à son tour un émulateur de gameboy. Jusqu'à présent, j'ai écrit cela avec l'IRC module pour node.js:
var config = {
channels: ["#tron"],
server: "irc.freenode.net",
botName: "wyatt"
};
var irc = require("irc");
var bot = new irc.Client(config.server, config.botName, {
channels: config.channels
});
var commandHandler = function(from, text) {
if(text.toLowerCase() === "up"||text.toLowerCase() === "down"||text.toLowerCase() === "left"||text.toLowerCase() === "right"||text.toLowerCase() === "a"||text.toLowerCase() === "b"||text.toLowerCase() === "select"||text.toLowerCase() === "start") {
bot.say(config.channels[0], from.toUpperCase() + " sent the " + text.toUpperCase() + " command!");
} else {
bot.say(config.channels[0], from.toUpperCase() + ", that wasn't a valid command!");
}
};
bot.addListener("message", function(from, to, text, message) {
commandHandler(from, text);
});
Exécuter mon script, j'type de nœud scriptName.js dans une invite de commande. Je suis avec Windows 7.
Cela se connecte à la freenode canal #tron, dont je suis l'aide pour des fins de test, comme cela semble être principalement dormant.
Lorsque les entrées de l'utilisateur de l'une des accpted commandes, il envoie un message du genre "NIMAID envoyé la GAUCHE de la commande!", sinon, il envoie "NIMAID, ce n'était pas une commande valide!". Comme il est, il fonctionne parfaitement. Donc, tout ce que j'ai à faire est de trouver un moyen de faire d'une touche et le script final est juste une instruction switch loin.
Le problème, c'est que toutes les références que je peux trouver en cherchant sur internet des pourparlers sur l'utilisation de node.js dans un environnement de navigateur, avec JQuery ou quelque chose de similaire. J'ai besoin d'envoyer des combinaisons de touches à un émulateur.
tldr: j'ai besoin d'envoyer des combinaisons de touches à partir d'un node.js script pour une application en cours d'exécution sur windows 7 serveur de bureau.
Est-il possible de faire cela?
Comme je l'ai dit, je suis sur un Windows 7 Professionnel 64 ordinateur. J'espère être en mesure de faire quelque chose comme sendkeys pour une fenêtre donnée. De cette façon, il ne serait pas question que l'émulateur, je suis en cours d'exécution, aussi longtemps que la clé de presses à obtenir à la fenêtre. Si il s'agit vraiment de bien, j'plan sur l'utilisation de Visualboy Advance.
OriginalL'auteur Nimaid | 2014-02-18
Vous devez vous connecter pour publier un commentaire.
Je travaille sur une plate-forme de Node.js module et il est à venir le long de la grande! Jusqu'à présent, vous pouvez envoyer des séquences de touches, le type de chaînes, déplacez la souris et cliquez sur, et d'obtenir la couleur d'un pixel.
https://github.com/octalmage/robotjs
OriginalL'auteur Jason Stallings
Pour windows - j'ai utilisé du nœud fonction exec pour exécuter un script python qui appelle pywin32 clavier d'événements. Pour linux, vous pouvez utiliser xdotool.
Voici le fichier où je l'ai appelé. Je suis en utilisant nœud du programme ainsi.
OriginalL'auteur hzoo
J'ai fait un nœud module pour faire ça:
https://github.com/kylepaulsen/kbm-robot
OriginalL'auteur Kyle Paulsen
Apparemment, il y a un win_keyboard module dans le mécanisme national de prévention de registre que quelqu'un a écrit pour contrôler le clavier dans Windows. Vous pouvez exécuter
npm install win_keyboard
et de l'utiliser; il semble faire exactement ce que vous voulez.var keyboard = require("win_keyboard");
- je obtenir http://pastebin.com/sNFViRj5. Honnêtement, je ne comprends pas ce que cela signifie, autres que les win_keyboard bibliothèque, ce n'est pas de travail. Tout y aider?Vous devez exécuter la version 32 bits de Nœud: la version 64 bits ne peut pas appeler à 32 bits extensions. (source)
Si vous voulez vraiment une version 64 bits, essayez envoyant un courriel à l'auteur et à leur demander de publier le code source du module: github.com/junku901
Bon, alors j'ai installer la version 32 bits. Quand j'essaie de faire
var keyboard = require("win_keyboard");
, il me dit qu'il ne trouve pas le win_keyboard nœud. Donc, je ne npm install win_keyboard de nouveau, et on dirait qu'il est installé. Cependant, lorsque je vérifie mon dossier node_modules, et voilà, ça en fait supprimé le win_keyboard dossier! Quand j'ai littéralement copier le .nœud fichier dans le répertoire de script et nevar keyboard = require("./win_keyboard");
, il n'est toujours pas à le trouver! Ceci se transforme en une chaîne de plus en plus fastidieux problèmes, mais quelqu'un peut-il m'aider à nouveau? 🙂RobotJS aidera ici, voir ma réponse ci-dessus. Il a 32/64bit construit et il est multi-plateforme.
OriginalL'auteur Stuart P. Bentley
Vous pouvez essayer une alternative à RobotJS. Il est très petit et la croix-plate-forme de bibliothèque pour envoyer les clés de votre système d'exploitation appelé nœud de clé de l'expéditeur. J'ai développé après frustré RobotJS et kbm-robot.
De l'installer avec
npm install --save-dev node-key-sender
.Et envoyer un texte au clavier à l'aide de:
Découvrez la page de documentation: https://www.npmjs.com/package/node-key-sender.
OriginalL'auteur computeiro