getchar() returns the same value (27) for up and down arrow keys

c, getchar, keyboard

Solution

The `27` implies that you're getting ANSI escape sequences for the arrows. They're going to be three-character sequences: 27, 91, and then 65, 66, 67, 68 (IIRC) for up, down, right, left. If you get a `27` from a call to `getchar()`, then call it twice more to get the `91` and the number that determines what arrow key was pressed.

As someone else mentioned, this is platform-specific, but you may not care.

Problem

So for the up key on the keyboard, I get 27, surprisingly for the down key I also get 27. I need my program to behave differently on the up and down key, and I can't seem to figure it out. I am using Linux, and need it to work for Linux. ``` #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> int main() { int c = getchar(); if(c==27) { printf("UP"); } if(c==28) { printf("DOWN"); } } ```

Original source