From 4ab4d924d9919ec4f5bfac81023e365b72fad8b7 Mon Sep 17 00:00:00 2001 From: tomsmeding Date: Fri, 23 Mar 2018 07:55:47 +0100 Subject: Handjeswapper ~ --- keyboard.js | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'keyboard.js') diff --git a/keyboard.js b/keyboard.js index e1101d8..1cd14dd 100644 --- a/keyboard.js +++ b/keyboard.js @@ -1,3 +1,5 @@ +const termios = require("node-termios"); + module.exports = {}; let inputBuffer = ""; @@ -58,12 +60,41 @@ function getline() { } module.exports.getline = getline; +function getpassword() { + return new Promise(async (resolve, reject) => { + const origtty = new termios.Termios(0); + + const tty = new termios.Termios(0); + tty.c_lflag &= ~(termios.native.ALL_SYMBOLS.ECHO | termios.native.ALL_SYMBOLS.ECHONL); + tty.writeTo(0); + + let handler; + + try { + const line = await getline(); + handler = () => resolve(line); + } catch (e) { + handler = () => reject(e); + } + console.log(); // ~ECHO eats newline + origtty.writeTo(0); + handler(); + }); +} +module.exports.getpassword = getpassword; + async function prompt(str) { process.stdout.write(str); return await getline(); } module.exports.prompt = prompt; +async function promptPassword(str) { + process.stdout.write(str); + return await getpassword(); +} +module.exports.promptPassword = promptPassword; + function eof() { return haveEOF; } -- cgit v1.2.3-70-g09d2