Pergunta

Estou lendo da entrada padrão usando a chamada de sistema read (), mas há uma pequena coisa que me incomoda. Eu não pode usar as teclas de seta ... O que eu realmente queria fazer era usar as setas para ir e voltar no texto digitado, mas acho que não é tão fácil ... Então, o que eu pelo menos quero fazer , é ignorá-los.

Agora, pressionando qualquer uma das teclas de seta produz uma saída estranha e eu quero evitar que algo seja escrito na saída padrão (consequentemente ler da entrada padrão na minha leitura chamada system ()).

É este facilmente possível alcançar ou não é assim tão fácil?

Foi útil?

Solução

Para interpretar as teclas de seta do jeito que você realmente gostaria de (ou seja, para frente e para trás e editar a entrada), você geralmente precisa usar uma biblioteca. No Linux, o padrão é GNU Readline . Esperemos que alguém pode dizer o que você usaria normalmente para um aplicativo do Windows CLI.

Outras dicas

A resposta, em última análise depende de onde as chaves vêm. Corri este programa sob Cygwin:

int main(void)
{
    int c=0;

    while( c != 'X' ) {
        c = getchar();
        printf("\nc=%d", c);
    }
}

Cada vez que uma tecla cursor vem junto, eu vejo escape (27), um suporte, além de outro personagem. Então, se você obter resultados como esse, você pode pular 3 teclas de cada vez que você ver um 27. Você também pode olhar para eles e fazer uso deles!

Como mencionado, YMMV, especialmente para o O.S., e a função de obtenção de chave real que você chamar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top