javascript - 在没有窗口对象的情况下正确记录 JavaScript 中的按键事件

标签 javascript node.js events keypress

我正在使用 Node 并在做一些工作时运行此代码。我正在尝试自动执行一些点击并将光标快速返回到原来的位置,到目前为止效果很好。不过,我在分配某些键来执行代码时遇到问题。我想使用 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();

我正在使用 robotsjs 和 ihook。

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

关于javascript - 在没有窗口对象的情况下正确记录 JavaScript 中的按键事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45003422/

相关文章:

node.js - 无法使用 multer 上传图像

mysql - 子查询同一个表: Sequelize

Java NIO 非阻塞模式 vs node.js 异步操作

Java awt 意外重复问题

javascript - scrollIntoView 影响我的监听器

javascript - 为什么我在 node.js 类中得到未定义的实例?

javascript - 如何将数据库中的数据提取到饼图中?

javascript - 了解jquery事件被调用的次数以及keyup事件的正确处理

javascript - 这段 JavaScript 代码不应该工作吗?

c# - 检测组合键事件