como obter um personagem do stdin sem esperar que o usuário o coloque? [duplicado

Esta pergunta já tem uma resposta aqui:

Como evitar pressionar enter com getchar () 10 respostas

Estou escrevendo um programa em C que imprime algo no terminal usando ncurses. Ele deve parar de imprimir quando o usuário pressionar 's' e continuar novamente quando pressionar 's'. Como posso ler uma tecla da entrada sem esperar que o usuário pressione a tecla?

Eu tenteigetch() egetchar() mas eles esperam até que uma tecla seja pressionada ...

Edita

Este é o meu código:

int main(void)
{
   initscr(); /* Start curses mode         */
   refresh(); /* Print it on to the real screen */
   int i = 0, j = 0;
   int state = 0;
   while (1)
   {
      cbreak();
      int c = getch(); /* Wait for user input */
      switch (c)
      {
         case 'q':
            endwin();
            return 0;
         case 'c':
            state = 1;
            break;
         case 's':
            state = 0;
            break;
         default:
            state = 1;
            break;
      }
      if(state)
      {
         move(i, j);
         i++;
         j++;
         printf("a");
         refresh();
      }
   }
   nocbreak();
   return 0;
}

EDIT 2 Isso funciona bem. Eu tenho 100 pontos

#include <stdio.h>
#include <stdlib.h>
#include <curses.h>

int main(void)
{
   initscr();
   noecho();
   cbreak();         // don't interrupt for user input
   timeout(500);     // wait 500ms for key press
   int c = 0;        // command: [c|q|s]
   int s = 1;        // state: 1= print, 0= don't print ;-)
   int i = 0, j = 0;
   while (c != 'q')
   {
      int c = getch();
      switch (c)
      {
         case 'q':
            endwin();
            return 0;
         case 'c':
            s = 1;
            break;
         case 's':
            s = 0;
            break;
         default:
            break;
      }
      if (s)
      {
         move(i, j);
         printw("a");
         i++;
         j++;
      }
   }
   endwin();
   nocbreak();
   return 0;
}

questionAnswers(3)

yourAnswerToTheQuestion