Receber caractere em C

13. Re: Receber caractere em C

Paulo
paulo1205

(usa Ubuntu)

Enviado em 16/01/2016 - 17:37h

Eu mostro uma implementação de getch(), que eu chamei de my_gecth() para não confundir com a de ncurses, em https://www.vivaolinux.com.br/topico/C-C++/Duvida-com-realloc-em-C (primeira resposta do tópico).

Para transformar my_getch() em my_readkey(), você pode trocar a chamada a read(), depois de tirar o terminal de modo canônico, por uma a select() ou poll() aplicando o descritor de entrada do terminal. Se houver um caráter que já foi digitado mas ainda não foi lido, select() ou poll() vão indicar isso, mas não vão consumir coisa alguma. Você terá de chamar my_getch() em seguida.

Se você usar Curses, a chamada a intscr() vai tirar o terminal do modo canônico e deixá-lo assim até você usar endwin(). Desse modo, se você quiser saber se há caracteres a ler sem ter de parar para lê-los, bastará chamar select() ou poll(), como dito acima, e então ler os caracteres que quiser com a getch() da Curses.

A vantagem de usar getch() da Curses é que ela já sabe tratar teclas especiais (setas, teclas de função, Page Up/Page Down etc.). Se você quiser trabalhar com essas teclas sem ter de saber qual a sequência de caracteres associada a cada uma delas (que pode variar de acordo com o tipo do terminal), recomendo usar a versão da curses.


  



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts