Tratando Entradas do Teclado - Educational Game Programming Library

Para poder tratar os eventos gerados pelo teclado (teclas sendo pressionadas) é necessário criar uma função para essa tarefa. Essa função deve ter a seguinte sintaxe:

void KeyboardInput(unsigned char key, int x, int y)
{
  /* Bloco de Comandos */
}

Também é necessário indicar que essa é a sua função para tratar eventos de teclado usando a função SetKeyboardInput:

graphics.SetKeyboardInput(KeyboardInput);

Dessa forma, sempre que uma tecla normal do teclado for pressionada a função KeyboardInput será executada e o parâmetro key indicará qual tecla foi pressionada. Os parâmetros x e y indicam a posição do mouse quando a tecla foi pressionada.

Exemplo:

void KeyboardInput(unsigned char key, int x, int y)
{
  //Se a letra f for pressionada
  if (key == 'f')
  {
    //Coloca o programa em tela cheia
    graphics.SetFullscreen(true);

  }
  //Se a letra w for pressionada
  if (key == 'w')
  {
    //Incrementa em +2 uma variável que representa a posição de um personagem
    posicao_personagem_x = posicao_personagem_x + 2;
  }  
  //Se a letra esc (código 27) for pressionada
  if (key == KEY_ESC)
  {
    //Fecha o programa
    exit(0);
  }	
}

Algumas teclas especiais, como por exemplo as setas direcionais do teclado, requerem o uso de outra função especifica para elas. Essa função deve ter a seguinte sintaxe:

void KeyboardSpecialInput(int key, int x, int y)    
{
  /* Bloco de Comandos */
}

Também é necessário indicar que essa é a sua função para tratar eventos de teclado especiais usando a função SetKeyboardSpecialInput:

graphics.SetKeyboardSpecialInput(KeyboardSpecialInput);

Dessa forma, sempre que uma tecla especiais do teclado for pressionada a função KeyboardSpecialInput será executada e o parâmetro key indicará qual tecla foi pressionada. Os parâmetros x e y indicam a posição do mouse quando a tecla foi pressionada.

Exemplo:

void KeyboardSpecialInput(int key, int x, int y)
{
  //Se a tecla direcional esquerda for pressionada
  if (key == KEY_LEFT)
  {
    //Decrementa em -2 uma variável que representa a posição de um personagem
    posicao_personagem_x = posicao_personagem_x - 2;
  }
  //Se a tecla direcional direita for pressionada
  if (key == KEY_RIGHT)
  {
    //Incrementa em +2 uma variável que representa a posição de um personagem
    posicao_personagem_x = posicao_personagem_x + 2;
  }  
}

Os códigos das teclas especiais são os seguintes:

KEY_LEFT
KEY_UP
KEY_RIGHT
KEY_DOWN
KEY_PAGE_UP
KEY_PAGE_DOWN
KEY_HOME
KEY_END
KEY_INSERT
KEY_ESC
KEY_F1
KEY_F2
KEY_F3
KEY_F4
KEY_F5
KEY_F6
KEY_F7
KEY_F8
KEY_F9
KEY_F10
KEY_F11
KEY_F12