redirecionar entrada do teclado / mouse para a caixa de diálogo da shell curses gui

0

Eu tenho tentado usar o utilitário "dialog" para criar menus interativos. Tudo funciona bem se eu trabalho em um terminal; menus são exibidos e eu posso interagir a partir desses menus usando o teclado.

Mas agora quero que outro dispositivo seja o destino da saída e outro dispositivo (teclado / ponteiro) forneça entrada para a caixa de diálogo.

Do meu TTY (/ dev / console) existente eu corro o diálogo e eu redireciono a saída para / dev / tty0. O menu aparece em tty0 fine; mas eu esperava agora estar dirigindo a entrada do terminal onde iniciei o script de diálogo. Isso não parece funcionar.

Portanto, posso ter certeza de que meu TTY existente fornece a entrada para o diálogo e, em seguida, como posso injetar eventos no diálogo de um dispositivo que não seja um dispositivo TTY. Posso apenas repetir seqüências de caracteres de alguma forma em diálogo ou é o problema que ele quer um dispositivo real que se comporta como um TTY incluindo todos os arquivos TTY?

O redirecionamento simples para a entrada parece não funcionar?

    
por Owain Phillips 27.07.2017 / 11:24

1 resposta

0

Meu comando dialog usa uma opção --input-fd para saber de onde ler. Por exemplo, em um tipo de terminal tty para descobrir que está usando, digamos, /dev/pts/4 , defina-o para que nada esteja fazendo nenhuma leitura:

stty -icanon && sleep 1000

Em outro lançamento de terminal

dialog --yesno 'shall we answer yes?' 0 0 --input-fd 3 3</dev/pts/4

então qualquer coisa digitada no primeiro terminal afeta o diálogo.
Interrompa o sono e digite stty icanon para restaurar o primeiro terminal.

    
por 27.07.2017 / 13:24