@@ -26,42 +26,7 @@ const BACKSPACE_BYTES = new Set(["\u007F", "\b"]);
2626const FORWARD_DELETE_SEQUENCES = new Set ( [ "\u001B[3~" , "\u001B[P" ] ) ;
2727const HOME_SEQUENCES = new Set ( [ "\u001B[H" , "\u001B[1~" , "\u001B[7~" , "\u001BOH" ] ) ;
2828const END_SEQUENCES = new Set ( [ "\u001B[F" , "\u001B[4~" , "\u001B[8~" , "\u001BOF" ] ) ;
29- const SHIFT_RETURN_SEQUENCES = new Set ( [
30- "\u001B\r" ,
31- "\u001B[13;2u" ,
32- "\u001B[13;1u" ,
33- "\u001B[13;2~" ,
34- "\u001B[13;1~" ,
35- "\u001B[27;2;13~" ,
36- "\u001B[27;1;13~" ,
37- ] ) ;
38-
39- const CSI_SHIFT_RETURN_RE = / ^ \u001B \[ 1 3 ; ( \d + ) [ u ~ ] $ / ;
40- const CSI_EXTENDED_SHIFT_RETURN_RE = / ^ \u001B \[ 2 7 ; ( \d + ) ; 1 3 ~ $ / ;
41-
42- function isShiftReturn ( raw : string ) : boolean {
43- if ( SHIFT_RETURN_SEQUENCES . has ( raw ) ) return true ;
44- let m : RegExpMatchArray | null ;
45- if ( ( m = raw . match ( CSI_SHIFT_RETURN_RE ) ) !== null ) {
46- const mod = parseInt ( m [ 1 ] , 10 ) ;
47- return ( mod & 2 ) !== 0 || ( mod & 1 ) !== 0 ;
48- }
49- if ( ( m = raw . match ( CSI_EXTENDED_SHIFT_RETURN_RE ) ) !== null ) {
50- const mod = parseInt ( m [ 1 ] , 10 ) ;
51- return ( mod & 2 ) !== 0 || ( mod & 1 ) !== 0 ;
52- }
53- return false ;
54- }
55-
56- const CSI_RETURN_RE = / ^ \u001B \[ 1 3 ; ( \d + ) [ u ~ ] $ / ;
57- const CSI_EXTENDED_RETURN_RE = / ^ \u001B \[ 2 7 ; ( \d + ) ; 1 3 ~ $ / ;
58-
59- function isReturn ( raw : string ) : boolean {
60- if ( raw === "\r" ) return true ;
61- if ( SHIFT_RETURN_SEQUENCES . has ( raw ) ) return true ;
62- if ( META_RETURN_SEQUENCES . has ( raw ) ) return true ;
63- return CSI_RETURN_RE . test ( raw ) || CSI_EXTENDED_RETURN_RE . test ( raw ) ;
64- }
29+ const SHIFT_RETURN_SEQUENCES = new Set ( [ "\u001B\r" , "\u001B[13;2u" , "\u001B[13;2~" , "\u001B[27;2;13~" ] ) ;
6530const META_RETURN_SEQUENCES = new Set ( [ "\u001B[13;3u" , "\u001B[13;4u" ] ) ;
6631const CTRL_LEFT_SEQUENCES = new Set ( [ "\u001B[1;5D" , "\u001B[5D" ] ) ;
6732const CTRL_RIGHT_SEQUENCES = new Set ( [ "\u001B[1;5C" , "\u001B[5C" ] ) ;
@@ -148,10 +113,10 @@ export function parseTerminalInput(data: Buffer | string): { input: string; key:
148113 end : END_SEQUENCES . has ( raw ) ,
149114 pageDown : raw === "\u001B[6~" ,
150115 pageUp : raw === "\u001B[5~" ,
151- return : isReturn ( raw ) ,
116+ return : raw === "\r" || SHIFT_RETURN_SEQUENCES . has ( raw ) || META_RETURN_SEQUENCES . has ( raw ) ,
152117 escape : raw === "\u001B" ,
153118 ctrl : CTRL_LEFT_SEQUENCES . has ( raw ) || CTRL_RIGHT_SEQUENCES . has ( raw ) ,
154- shift : isShiftReturn ( raw ) ,
119+ shift : SHIFT_RETURN_SEQUENCES . has ( raw ) ,
155120 tab : raw === "\t" || raw === "\u001B[Z" ,
156121 backspace : BACKSPACE_BYTES . has ( raw ) ,
157122 delete : FORWARD_DELETE_SEQUENCES . has ( raw ) ,
@@ -197,7 +162,7 @@ export function parseTerminalInput(data: Buffer | string): { input: string; key:
197162 key . shift = true ;
198163 }
199164
200- if ( key . tab || key . backspace || key . delete || key . return ) {
165+ if ( key . tab || key . backspace || key . delete ) {
201166 input = "" ;
202167 }
203168
0 commit comments