如何使用nodejs按键?

时间:2017-04-10 12:17:32

标签: javascript node.js express

我想知道如何通过nodejs上的代码在键盘上获得某个键。

例如,我希望在呈现以下页面后按下f3按钮:

var express = require('express');
var router = express.Router();


/* GET home page. */
router.get('/', function(req, res, next) {
   // press key
});

module.exports = router;

3 个答案:

答案 0 :(得分:1)

无法从服务器端进行。 您可以在页面中包含可以触发事件的javascript脚本。 如果您使用的是jQuery。

var ev = jQuery.Event("keypress");
ev.ctrlKey = false;
ev.which = 37;
$("container").trigger(ev);

Is it possible to trigger a keyboard button with JavaScript?

答案 1 :(得分:0)

查看robotjs,可用于生成键盘事件。

例如,要“发送”F3键按下:

const robot = require('robotjs');
...
router.get('/', function(req, res, next) {
  robot.keyTap('f3');
  res.end();
});

虽然这取决于您正在使用哪个操作系统,但这可以按预期工作。

答案 2 :(得分:0)

您可以简单地在nodejs中使用applescript,并在其他平台上使用node-key-sender。

const os = require('os')
const childProcess = require('child_process')
const { promisify } = require('util')
const ks = require('node-key-sender')  

function hitHotkey (key, modifier) {
    if (os.type() === 'Darwin') {
      if (modifier) {
        return exec(`Script="tell app \\"System Events\\" to keystroke ${key} using ${modifier} down"
        osascript -e "$Script"`)
      } else {
        return exec(`Script="tell app \\"System Events\\" to keystroke ${key}"
        osascript -e "$Script"`)
      }
    } else {
      if (modifier) {
        return ks.sendCombination([modifier, key])
      } else {
        return ks.sendKey(key)
      }
    }
  }