在没有 window 对象的情况下正确记录 JavaScript 中的按键事件

Properly logging keypress events in JavaScript without the window object

我在做一些工作时正在使用节点和 运行 这段代码。我正在尝试自动执行一些点击操作并将我的光标弹回到原来的位置,到目前为止效果很好。不过,我在分配某些键来执行代码时遇到了问题。我想使用 F5 来执行此脚本而不是 's' 或其他任何东西,但是当我记录 F5 的输出时,keychar 的值为 0。所有其他 F 键和各种其他键也会导致这个值,这使得扩展程序变得困难。我做错了什么?

'use strict';
var robot = require("robotjs");
var ioHook = require('iohook');
robot.setMouseDelay(20);

ioHook.on("keypress", event => {
if(event.keychar == '116')  {
    var currentPosition = robot.getMousePos();
    console.log(currentPosition);
    robot.moveMouse(1735, 1019);
    robot.mouseClick("left");
    robot.setMouseDelay(3);
    robot.moveMouse(currentPosition.x, currentPosition.y);
}       
    console.log(event.keychar);
  //{keychar: 'f', keycode: 19, rawcode: 15, type: 'keypress'}
});
ioHook.start();

我正在使用 robotjs 和 iohook。

https://robotjs.io/
https://github.com/WilixLead/iohook

需要一些帮助!

如果您使用 F5Fn 键,我认为您应该使用 event.rawcode == '65300'。但是,如果您使用 F5 而没有 Fn 键,则 event.rawcode == '65474'.

所以你的代码将是这样的:

var robot = require("robotjs");
var ioHook = require('iohook');
robot.setMouseDelay(50);
ioHook.on("keypress", event => {
if(event.rawcode == '65300'||event.rawcode == '65474')  {
    var currentPosition = robot.getMousePos();
    console.log(currentPosition)
        robot.moveMouse(1735, 1019);
        robot.mouseClick("left");
        robot.setMouseDelay(20);
        robot.moveMouse(currentPosition.x, currentPosition.y);
        }
});

ioHook.start();