3

If you use getc() or scanf(), you only know what button the user pressed after he pressed enter. Is there a way to get direct keyboard input in the C language?

Also, i'm using gcc on Linux (Raspberry pi).

Aaron
  • 141
  • 6

1 Answers1

4

It is OS specific (the C99 or C11 standard does not know about the keyboard). On Linux (which I am focusing on in my answer) and Unix, terminals are -for legacy and historical reasons- complex beasts (the kernel is implementing the line discipline), see tty demystified page. For gory details, see also termios(3) (the raw and noncanonical modes will give you a headache) & tty(4) & stty(1)

(you could spend months in learning the gory details; I forgot most of them)

I strongly recommend coding with a library such as ncurses or readline (or termcap, if you are masochistic enough)

If using a GUI, better use some toolkit like Qt.

To poll a set of file descriptors, use poll(2).

See also syscalls(2) and Advanced Linux Programming.

Basile Starynkevitch
  • 216,767
  • 17
  • 275
  • 509