nodejs如何从stdin读取击键

2023-11-20

是否可以在运行的 Nodejs 脚本中侦听传入的击键? 如果我使用process.openStdin()并聆听其'data'事件,然后输入被缓冲,直到下一个换行符,如下所示:

// stdin_test.js
var stdin = process.openStdin();
stdin.on('data', function(chunk) { console.log("Got chunk: " + chunk); });

运行这个,我得到:

$ node stdin_test.js
                <-- type '1'
                <-- type '2'
                <-- hit enter
Got chunk: 12

我想看到的是:

$ node stdin_test.js
                <-- type '1' (without hitting enter yet)
 Got chunk: 1

我正在寻找一个相当于的nodejs,例如getc in ruby

这可能吗?


对于那些找到这个答案的人来说,因为这个功能被剥夺了tty,以下是如何从 stdin 获取原始字符流:

var stdin = process.stdin;

// without this, we would only get streams once enter is pressed
stdin.setRawMode( true );

// resume stdin in the parent process (node app won't quit all by itself
// unless an error or process.exit() happens)
stdin.resume();

// i don't want binary, do you?
stdin.setEncoding( 'utf8' );

// on any data into stdin
stdin.on( 'data', function( key ){
  // ctrl-c ( end of text )
  if ( key === '\u0003' ) {
    process.exit();
  }
  // write the key to stdout all normal like
  process.stdout.write( key );
});

非常简单 - 基本上就像process.stdin 的文档但使用setRawMode( true )获取原始流,这在文档中很难识别。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nodejs如何从stdin读取击键 的相关文章

随机推荐

  • 启动时将参数传递给 pyqt 线程

    当线程启动 start 时 有什么方法可以将参数传递给 QThread 吗 我在 stackoverflow 中找到了一个使用 pyqt 线程的示例 但我想知道如何传递参数 以防我希望工作线程处理我传递给其 run 函数的数据 我参考的帖子
  • 在应用程序中将 Youtube 视频保存到 iPhone

    在应用程序中播放 Youtube 视频非常简单 并且有详细的文档记录 这样做有两个问题 关闭 Youtube 播放器后 如果用户想再次播放 则必须再次等待在线流媒体 无法离线播放 在家加载视频以便在路上观看 有没有人有代码 下载 Youtu
  • 为什么使用 -lpthread 隐式声明 pthread_yield 而使用 -pthread 则一切正常?

    我在 CentOS7 中使用 gcc 编译此代码 main c include
  • 403 禁止回复 – 我应该寻找什么?

    我有一个脚本给我错误403 Forbidden error 它只是另一个脚本的副本 但不同之处在于两者都使用另一个 mysql 类来访问数据库 我的整个项目已完成 这是最后一个文件 因此我不想为单个文件再次完成整个工作 服务器日志显示客户端
  • 检查字符串是否由唯一字母组成的最简单方法?

    我需要在 Java 中检查一个单词是否由唯一字母组成 不区分大小写 由于直接解决方案很无聊 我想出了 对于字符串中的每个字符检查是否indexOf char lastIndexOf char 将所有字符添加到HashSet并检查设置大小是否
  • 使用 Qt 4.8 在全屏模式下隐藏光标?

    我在带有 OpenBox 的 ArchLinux 中 我想在 Qt 4 8 应用程序中隐藏全屏光标 我知道有关它的其他一些问题 但没有人每次都能工作 有时光标隐藏 有时不隐藏 我没能准确地理解问题发生的时间 但我认为这可能与屏幕保护程序有关
  • 如何在 Android 中重新启动 Activity? [复制]

    这个问题在这里已经有答案了 在我正在编写的应用程序中 有一部分可以让您更改窗帘设置 问题是 在重新创建活动之前 此设置不会生效 有没有办法告诉应用程序使用 onResume 方法重新启动 希望允许它保存 onSaveInstanceStat
  • 我们如何使用 POI API 读取受保护的密码 excel 文件 (.xls)

    我刚刚学习了 POI 发现 HSSF 的读取和创建 excel 文件 xls 非常简单 但是 当我想读取受密码保护的Excel时 我发现了一些问题 我花了一个小时在互联网上找到这个解决方案 请你帮我解决这个问题 如果您能给我一个代码片段 我
  • 异步网络操作永远不会完成

    我有几个异步网络操作 它们返回可能永远不会完成的任务 UdpClient ReceiveAsync不接受CancellationToken TcpClient GetStream返回一个NetworkStream这不尊重Cancellati
  • Android 中的 java.lang.ExceptionInInitializerError

    我正在尝试创建一个可以验证人脸的 Android 应用程序 但是当我尝试在模拟器上运行我的应用程序 使用 Eclipse 时 我的 logcat 中出现以下结果 06 16 14 51 24 326 E AndroidRuntime 430
  • Spring boot JPA - 没有具有 OneToMany 关系的嵌套对象的 JSON

    我有一个项目处理对象的一些 ORM 映射 有一些 OneToMany关系等 我使用 REST 接口来处理这些对象 并使用 Spring JPA 在 API 中管理它们 这是我的 POJO 之一的示例 Entity public class
  • Django - 管理中的 UserProfile m2m 字段 - 错误

    我的模型 class UserProfile models Model TYPES CHOICES 0 u teacher 1 u student user models ForeignKey User unique True type m
  • 对于长度变化很大的输入,最佳 StringBuffer 初始容量是多少?

    大家下午好 我正在使用java lang StringBuilder来存储一些字符 我不知道要提前存储多少个字符 除了 60 的情况下 它只有 恰好 7 个字符 39 的情况下 它 大约 为 3500 个字符 1 的情况下 大约是 20k
  • Flask AttributeError:模块“app”没有属性“run”

    我的 Flask 项目的结构如下 my project app init py api static templates config py run py 应用程序 init py from flask import Flask app F
  • 获取每个 tr 的 td 值 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我有以下风格的代码 tr td value Feb 23 2008 td td value Feb 25 2008 td td td tr
  • “导入错误:无法导入名称多数组”

    新程序员来了 我正在尝试在 Windows 命令提示符中运行脚本 但在导入 numpy 包时遇到问题 并且我不知道出了什么问题 如何修复它 当我在 iPython 中运行该脚本时 它运行得很好 但是 当我在命令提示符中运行它时 我得到以下信
  • 在 iPhone 中根据触摸拖动旋转图像

    我想根据用户触摸拖动的速度顺时针或逆时针方向旋转图像 我认为这可以通过一些数学和逻辑来完成 这个的代码示例是什么样的 如果您的目标是 iOS 3 2 或更高版本 则可以使用UIRotationGestureRecognizer 代码看起来像
  • 替换 DataGridView 中的 DateTime.MinValue

    我正在开发一个姓名记录应用程序 该信息存储在 SQLite 数据库中 数据库中的所有列都是 TEXT 类型 出生日期列除外 它是 DATETIME 我转移到 SQLite 数据库的原始 Access 数据库允许出生日期为空 因此当我复制它时
  • .user.ini 文件适用于子目录吗?

    是否 user ini控制文件夹特定 PHP 设置的文件也下降到子文件夹中吗 我正在阅读一些网站 他们建议这样做 尽管没有很多关于它的信息 但是我发现如果我从子文件夹运行脚本 它不会使用来自 user ini file 我是否遗漏了某些内容
  • nodejs如何从stdin读取击键

    是否可以在运行的 Nodejs 脚本中侦听传入的击键 如果我使用process openStdin 并聆听其 data 事件 然后输入被缓冲 直到下一个换行符 如下所示 stdin test js var stdin process ope