Fazendo o backspace funcionar consistentemente em vários Unices com o xterm

1

Estou trabalhando em uma empresa que usa três Unices diferentes (Linux, Solaris e AIX), todos com os mesmos diretórios base / etc. Todos eles usam GNU coreutils (felizmente!), Mas ainda é "interessante" tentar resolver vários problemas. Nós nos conectamos a eles executando um servidor X (Exceed On Demand) em nossos desktops (Windows) e usando xterm ou ssh ing de outra máquina a partir de uma janela xterm existente (existem outros métodos também, mas eu não uso atualmente eles, então vou deixá-los por enquanto).

Em particular, eu tive problemas no Solaris com a tecla backspace. Ele funcionaria no bash, mas apenas imprime ^ H em algumas outras aplicações (especialmente coisas baseadas em readline).

Atualmente, estou usando a solução de ter stty erase ^H em meu ~/.profile e o seguinte em ~/.Xdefaults :

*VT100.Translations: #override \
              <Key>BackSpace: string(0x08)\n

Isso parece funcionar na maior parte do tempo, mas talvez não seja desejável, já que estou configurando explicitamente a tecla backspace para algo que pode não ser o padrão / preferido em cada plataforma. Em particular, muitas vezes recebo mensagens quando uso reset lembrando-me de que apaguei para ^ H, e muito ocasionalmente por meio de uma série de circunstâncias que ainda não consegui descobrir tudo quebra novamente; talvez as coisas funcionem em aplicativos baseados em readline, mas não no bash; e eu terei que digitar reset para fazer tudo voltar ao normal.

Essas questões me levam a acreditar que essa talvez não seja a maneira preferida de fazer isso. Alguém tem alguma melhoria sobre esta situação?

    
por Muzer 10.11.2016 / 19:41

1 resposta

3

Alguns aplicativos são codificados para esperar um determinado caractere de apagamento, e não há muito o que fazer com eles.

Mas abordando o comentário

I'm more wondering if I should be doing something else to try to get the backspace sent my xterm to match the default backspace expected by the TTY device.

você poderia definir o recurso ptyInitialErase :

If "true", xterm will use the pseudo-terminal's sense of the stty erase value. If "false", xterm will set the stty erase value to match its own configuration, using the kb string from the termcap entry as a reference, if available. In either case, the result is applied to the TERMCAP variable which xterm sets.

See also the ttyModes resource, which may override this. The default is "False".

Mas, para que xterm aja de forma consistente, ttyModes funciona. Lembre-se de que alterar stty apenas informa ao sistema o que esperar. Você pode mudar o comportamento da tecla backarrow ( backspace ) usando o ackarrowKey :

Specifies whether the backarrow key transmits a backspace (8) or delete (127) character. This corresponds to the DECBKM control sequence. A "true" value specifies backspace. The default is "True". Pressing the control key toggles this behavior.

    
por 10.11.2016 / 22:23