\u001B
é um caractere de escape ASCII desnecessariamente detalhado, que parece ter sido introduzido para ECMAScript6 . O POSIX usaria octal 3
, e outros permitiriam% hexadecimalb
. A maiúsculas / minúsculas do número é irrelevante.
As \u001B[?1049h
(e \u001B[?1049l
) são sequências de escape que indicam xterm para opcionalmente mude para e da tela alternativa.
-
O ponto de interrogação mostra que é "uso privado" (uma categoria reservada para recursos específicos da implementação no padrão). Cerca de um terço dos modos de uso privado listados nas Sequências de Controle do XTerm correspondem a um dos DEC's (aqueles um mnemônico como
DECCKM
em suas descrições). Os outros são originais do xterm, ou adaptados de outros terminais, como observado. -
O motivo dessa seqüência de escape é fornecer uma maneira baseada em terminfo para permitir que os usuários decidam se os programas podem usar a tela alternativa. De acordo com o manual xterm :
titeInhibit
(classTiteInhibit
)
Specifies whether or not xterm should removeti
andte
termcap entries (used to switch between alternate screens on startup of many screen-oriented programs) from the TERMCAP string. If set, xterm also ignores the escape sequence to switch to the alternate screen. Xterm supports terminfo in a different way, supporting composite control sequences (also known as private modes)1047
,1048
and1049
which have the same effect as the original47
control sequence. The default for this resource is "false".
O código 1049 (introduzido em 1998 ) é reconhecido pela maioria dos emuladores de terminal que afirmam ser compatíveis com xterm, mas a maioria não torna o recurso opcional . Então eles não implementam o recurso.
Por outro lado, \u001B[?1h
não se originou com xterm, mas (como \u001B=
) é de DEC VT100s, usado para alternar o terminal para usar modo de aplicação para teclas de cursor (DECCKM ) e o teclado numérico (DECKPAM). Eles são usados por programas como less
ao inicializar o terminal porque as descrições dos terminais usam seqüências de escape no modo aplicativo (ou normal) para chaves especiais para corresponder as sequências de inicialização dadas em estas descrições de terminal.
Leitura adicional:
- Por que a tela não é limpa ao executar o vi? (FAQ xterm)
- Por que não posso usar as teclas de cursor no (qualquer) shell? (xterm FAQ)
- As teclas do meu cursor não funcionam (FAQ do ncurses)
- Sequências de controle do XTerm