[英]How to send/route key press from client side to node child process using nodejs?
[英]How to press a key using nodejs?
我想知道如何通过nodejs上的代码在键盘上获得某个键。
例如,一旦显示以下页面,我希望按下f3按钮:
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
// press key
});
module.exports = router;
从服务器端不可能。 您可以在页面中包含可以触发事件的JavaScript脚本。 如果您使用的是jQuery。
var ev = jQuery.Event("keypress");
ev.ctrlKey = false;
ev.which = 37;
$("container").trigger(ev);
看一下robotjs
,它可用于生成键盘事件。
例如,要“发送” F3键,请按:
const robot = require('robotjs');
...
router.get('/', function(req, res, next) {
robot.keyTap('f3');
res.end();
});
虽然这是否可以按预期工作取决于您使用的操作系统。
您可以只在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)
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.