Mic*_*ang 5 javascript node.js
我有兴趣查看是否可以将功能绑定到用户按下/释放键盘上的键。
到目前为止,我已经能够使用keypress模块和 process.stdin原始模式获取按键事件:
var keypress = require('keypress');
keypress(process.stdin);
process.stdin.on('keypress', function(ch, key) {
console.log('got "keypress"', key);
if (key && key.ctrl && key.name == 'c') {
process.exit();
}
});
process.stdin.setRawMode(true);
process.stdin.resume();
Run Code Online (Sandbox Code Playgroud)
甚至可以在终端中捕获键盘按下和释放事件吗?
值得注意的是,我对任何浏览器实现都不感兴趣;我正在寻找在终端中在 NodeJS 中运行的东西。
谢谢,所有。
所以我想出了一个解决办法stdin来解决这个问题。
基本上,我使用 SDL 库(及其节点绑定)在后台运行一个程序,监听键盘上的输入。
去做这个:
sdl、sdl_ttf和sdl_image(在 Mac 上)npm install --save https://github.com/creationix/node-sdl/tarball/master然后是这样的:
var sdl = require('sdl');
sdl.init(sdl.INIT.VIDEO);
while (true) {
var e;
while (e = sdl.pollEvent()) {
console.log(e);
}
}
Run Code Online (Sandbox Code Playgroud)
SDL_PollEvent需要使用 来初始化 SDL SDL_INIT_VIDEO,在上面的脚本中(在 Mac 上)在 Dock 中启动一个单独的应用程序,该应用程序不绘制任何内容,但需要集中精力接受输入。
虽然从技术上讲,ANSI 终端根本不支持 keyup 事件,但这种解决方法完全可以让人们在 Node 中获取 keyup 事件(尽管需要一些基于 GUI 的系统才能运行,即很可能无法通过 ssh 工作)。