如何在nodejs终端中检测shift + Enter?

jsl*_*oop 10 node.js

我有以下nodejs程序

import readline from 'readline'

readline.createInterface({input: process.stdin, output: process.stdout}).prompt()

process.stdin.on('keypress', (letter, key) => console.log({letter: letter, key: key}))
Run Code Online (Sandbox Code Playgroud)

这在大多数情况下都有效,例如如果我按SHIFT+X,它会正确输出key.shift === True

{
  letter: 'X',
  key: { sequence: 'X', name: 'x', ctrl: false, meta: false, shift: true }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我按SHIFT+ENTER,则key.shift永远不会true

{
  letter: '\r',
  key: {sequence: '\r', name: 'return', ctrl: false, meta: false, shift: false}
}
Run Code Online (Sandbox Code Playgroud)

为什么?如何检测在 Node.js 中的SHIFT+ENTER使用readline

我想做什么?我正在构建一个终端提示应用程序,因此该readline模块非常方便,因为它带有自动完成器、历史记录、分页、提示前缀等。但是,我也希望能够输入多行提示。

Lit*_*Zha -2

不要依赖keypress事件readline,它似乎不完整,只能检测到一个字符一次,导致在大写锁定模式下按下时将大写“F”识别为shift+ 。f

您可以找到源代码:emitKeys