UNPKG

neo-neo-bblessed

Version:

A fork of neo-blessed (which is a fork of blessed) with bug fixes and maintenance.

4 lines (3 loc) 4.65 kB
var m=require("events").EventEmitter;function o(n,r){return m.listenerCount?m.listenerCount(n,r):n.listeners(r).length}function l(n){if(n._keypressDecoder)return;var r=require("string_decoder").StringDecoder;n._keypressDecoder=new r("utf8");function t(a){if(o(n,"keypress")>0){var i=n._keypressDecoder.write(a);i&&p(n,i)}else n.removeListener("data",t),n.on("newListener",c)}function c(a){a==="keypress"&&(n.on("data",t),n.removeListener("newListener",c))}o(n,"keypress")>0?n.on("data",t):n.on("newListener",c)}exports.emitKeypressEvents=l;var u=/(?:\x1b)([a-zA-Z0-9])/,d=new RegExp("^"+u.source+"$"),k=new RegExp("(?:\x1B+)(O|N|\\[|\\[\\[)(?:"+["(\\d+)(?:;(\\d+))?([~^$])","(?:M([@ #!a`])(.)(.))","(?:1;)?(\\d+)?([a-zA-Z])"].join("|")+")"),h=new RegExp("^"+k.source),g=new RegExp([k.source,u.source,/\x1b./.source].join("|"));function p(n,r){if(Buffer.isBuffer(r)&&(r[0]>127&&r[1]===void 0?(r[0]-=128,r="\x1B"+r.toString(n.encoding||"utf-8")):r=r.toString(n.encoding||"utf-8")),!x(r)){for(var t=[],c;c=g.exec(r);)t=t.concat(r.slice(0,c.index).split("")),t.push(c[0]),r=r.slice(c.index+c[0].length);t=t.concat(r.split("")),t.forEach(function(a){var i,e={sequence:a,name:void 0,ctrl:!1,meta:!1,shift:!1},s;if(a==="\r")e.name="return";else if(a===` `)e.name="enter";else if(a===" ")e.name="tab";else if(a==="\b"||a==="\x7F"||a==="\x1B\x7F"||a==="\x1B\b")e.name="backspace",e.meta=a.charAt(0)==="\x1B";else if(a==="\x1B"||a==="\x1B\x1B")e.name="escape",e.meta=a.length===2;else if(a===" "||a==="\x1B ")e.name="space",e.meta=a.length===2;else if(a.length===1&&a<="")e.name=String.fromCharCode(a.charCodeAt(0)+97-1),e.ctrl=!0;else if(a.length===1&&a>="a"&&a<="z")e.name=a;else if(a.length===1&&a>="A"&&a<="Z")e.name=a.toLowerCase(),e.shift=!0;else if(s=d.exec(a))e.name=s[1].toLowerCase(),e.meta=!0,e.shift=/^[A-Z]$/.test(s[1]);else if(s=h.exec(a)){var b=(s[1]||"")+(s[2]||"")+(s[4]||"")+(s[9]||""),f=(s[3]||s[8]||1)-1;switch(e.ctrl=!!(f&4),e.meta=!!(f&10),e.shift=!!(f&1),e.code=b,b){case"OP":e.name="f1";break;case"OQ":e.name="f2";break;case"OR":e.name="f3";break;case"OS":e.name="f4";break;case"[11~":e.name="f1";break;case"[12~":e.name="f2";break;case"[13~":e.name="f3";break;case"[14~":e.name="f4";break;case"[[A":e.name="f1";break;case"[[B":e.name="f2";break;case"[[C":e.name="f3";break;case"[[D":e.name="f4";break;case"[[E":e.name="f5";break;case"[15~":e.name="f5";break;case"[17~":e.name="f6";break;case"[18~":e.name="f7";break;case"[19~":e.name="f8";break;case"[20~":e.name="f9";break;case"[21~":e.name="f10";break;case"[23~":e.name="f11";break;case"[24~":e.name="f12";break;case"[A":e.name="up";break;case"[B":e.name="down";break;case"[C":e.name="right";break;case"[D":e.name="left";break;case"[E":e.name="clear";break;case"[F":e.name="end";break;case"[H":e.name="home";break;case"OA":e.name="up";break;case"OB":e.name="down";break;case"OC":e.name="right";break;case"OD":e.name="left";break;case"OE":e.name="clear";break;case"OF":e.name="end";break;case"OH":e.name="home";break;case"[1~":e.name="home";break;case"[2~":e.name="insert";break;case"[3~":e.name="delete";break;case"[4~":e.name="end";break;case"[5~":e.name="pageup";break;case"[6~":e.name="pagedown";break;case"[[5~":e.name="pageup";break;case"[[6~":e.name="pagedown";break;case"[7~":e.name="home";break;case"[8~":e.name="end";break;case"[a":e.name="up",e.shift=!0;break;case"[b":e.name="down",e.shift=!0;break;case"[c":e.name="right",e.shift=!0;break;case"[d":e.name="left",e.shift=!0;break;case"[e":e.name="clear",e.shift=!0;break;case"[2$":e.name="insert",e.shift=!0;break;case"[3$":e.name="delete",e.shift=!0;break;case"[5$":e.name="pageup",e.shift=!0;break;case"[6$":e.name="pagedown",e.shift=!0;break;case"[7$":e.name="home",e.shift=!0;break;case"[8$":e.name="end",e.shift=!0;break;case"Oa":e.name="up",e.ctrl=!0;break;case"Ob":e.name="down",e.ctrl=!0;break;case"Oc":e.name="right",e.ctrl=!0;break;case"Od":e.name="left",e.ctrl=!0;break;case"Oe":e.name="clear",e.ctrl=!0;break;case"[2^":e.name="insert",e.ctrl=!0;break;case"[3^":e.name="delete",e.ctrl=!0;break;case"[5^":e.name="pageup",e.ctrl=!0;break;case"[6^":e.name="pagedown",e.ctrl=!0;break;case"[7^":e.name="home",e.ctrl=!0;break;case"[8^":e.name="end",e.ctrl=!0;break;case"[Z":e.name="tab",e.shift=!0;break;default:e.name="undefined";break}}e.name===void 0&&(e=void 0),a.length===1&&(i=a),(e||i)&&n.emit("keypress",i,e)})}}function x(n){return/\x1b\[M/.test(n)||/\x1b\[M([\x00\u0020-\uffff]{3})/.test(n)||/\x1b\[(\d+;\d+;\d+)M/.test(n)||/\x1b\[<(\d+;\d+;\d+)([mM])/.test(n)||/\x1b\[<(\d+;\d+;\d+;\d+)&w/.test(n)||/\x1b\[24([0135])~\[(\d+),(\d+)\]\r/.test(n)||/\x1b\[(O|I)/.test(n)} //# sourceMappingURL=keys.js.map