代码之家  ›  专栏  ›  技术社区  ›  rustyshackleford

在不使用窗口对象的情况下,在JavaScript中正确记录按键事件

  •  0
  • rustyshackleford  · 技术社区  · 7 年前

    我正在使用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();
    

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

    希望能得到一些帮助!

    1 回复  |  直到 7 年前
        1
  •  1
  •   Shubham Verma    7 年前

    我认为你应该使用 event.rawcode == '65300' 如果您正在使用 F5 Fn 钥匙但是如果你正在使用 没有 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();