stringify-key v0.1.2
stringify-key 
Stringifies key objects emitted nodejs readline.
Installation
npm i stringify-keyUsage
var stringifyKey = require('stringify-key');
var key = { name: 'c', ctrl: true, meta: false, shift: false };
console.log(stringifyKey(key)); // ctrl-c
key = { name: 'c', ctrl: true, meta: true, shift: true };
console.log(stringifyKey(key)); // shift-meta-ctrl-cLimitations
Although the algorithm works for all keys, the readline module doesn't work consistent in all terminals. For example, on
a Mac Lion xTerm the meta key is never registered.
Meta
As just stated the meta key is not registered (at least in xTerm), however if present, stringify-key will take it
into account.
Ctrl
The ctrl key seems to work properly in readline, except for the following:
ctrl-iinterpreted astabctrl-hinterpreted asbackspacectrl-jandctrl-m, both interpreted asenterctrl-[;',/]are also not interpreted correctly
Shift
The shift-letter is correctly registered as well, however pressing ctrl-shift and a letter together registers ctrl
only.
Here is the most likely cause for the latter, since letters are never
uppercased when ctrl is pressed.
Alt
There is no code inside the readline module that registers pressing the alt key.
Pressing alt in conjunction with a letter is used to enter characters otherwise not available on the keyboard,
i.e. alt-p prints π.
However if an alt : true is part of the passed key object, it is considered by stringify-key.
Moral
I'm not sure if the problems unexplained problems above are caused by an incorrect implemention in readline or the underlying terminal.
I suggest to investigate the readline source in order to
get more information and/or fix problems.
However, the moral is to expect unexpected results (npi) when using stringify-key for keys emitted by readline.