E se o usuário apertar a tecla ESC no Dialog

Em qualquer tela do Dialog, apertar a tecla Esc gera o código de retorno 255, e abandona a caixa. Então além de tratar do botão OK (retorno zero) e do CANCELAR (retorno 1), também é preciso cuidar da tecla Esc.

Dependendo do tipo de sua aplicação, a tecla Esc pode gerar o mesmo procedimento que apertar o botão CANCELAR geraria. Ou ainda, você pode ter dois procedimentos diferentes, um para cada evento. Tudo depende do tipo de navegação que seu programa utiliza, algumas sugestões:

Navegação amarrada a um Menu Principal

  • Se apertar CANCELAR no Menu Principal, sai do programa
  • Se apertar CANCELAR numa tela secundária, volta ao Menu Principal
  • Se apertar ESC em qualquer tela, sai do programa
Navegação tipo Ida e Volta

  • Se apertar CANCELAR volta à tela anterior
  • Se apertar ESC sai do programa

Veja exemplos completos desses tipos de navegação e do tratamento dos eventos no tópico seguinte.

Caso queira mapear o Esc para o mesmo funcionamento do CANCELAR, você pode fazer um teste mais genérico como, “se não for o OK”:

[ $? -ne 0 ] && echo 'Esc ou CANCELAR apertado'

Claro, se estiver usando botão de HELP, ele também será mapeado para o CANCELAR, então cuidado.