Usar setas do Teclado no Linux [RESOLVIDO]

1. Usar setas do Teclado no Linux [RESOLVIDO]

Silas Henrique
silash35

(usa Arch Linux)

Enviado em 08/05/2018 - 13:01h

No windows tem a biblioteca conio.h e no linux ? Como posso usar as setas do teclado em C++ usando Linux ?
Ouvi falar da biblioteca Ncurses, mas eu não descobri uma maneira de usá la corretamente. O'Que eu queria fazer era algo como:
cin >> variável; //cin não funciona pra setas do teclado e eu não faço ideia de que tipo a variável tem que ser 
if(variavel == seta pra cima){
//execulta algum codigo
}else if(variavel == seta para baixo){
//execulta outro codigo
}else{
//execulta algum outro codigo
}



  


2. MELHOR RESPOSTA

Fernando
phoemur

(usa Debian)

Enviado em 08/05/2018 - 16:13h

A resposta curta é que você não faz isso em C++ standard.
Não existe um código multiplataforma para seta pra cima por exemplo.

Isso é complicado, pois C++ não possui o conceito de um teclado, terminal ou console, apenas o conceito de uma "stream" de dados abstrata, std::ios_base da qual std::cin e std::cout são derivadas...

Cada sistema operacional faz o console de um jeito, usando buffers, etc e só depois manda a entrada já processada para seu programa, de forma que você depende de implementações específicas para cada OS se quiser "falar" diretamente com o teclado, sendo conio.h uma delas para windows...

como você perguntou de ncurses, vou te mandar um exemplo. Porém existem diversas outras alternativas.

teste.cpp

#include <iostream>
#include <curses.h>

using namespace std;

int main()
{
// init ncurses library
initscr();
raw();
noecho();
keypad(stdscr, TRUE);

bool exit_flag = false;
int ch; // atenção para o tipo int !!! não pode ser char

while (!exit_flag) {

ch = getch();

switch(ch) {
case KEY_UP:
printw("UP pressed\n");
break;
case KEY_DOWN:
printw("DOWN pressed\n");
break;
case KEY_LEFT:
printw("LEFT pressed\n");
break;
case KEY_RIGHT:
printw("RIGHT pressed\n");
break;
case 'q': case KEY_EXIT: case 27:
exit_flag = true;
break;
default:
printw("The key pressed is: ");
printw("%c\n", ch);
break;
}
refresh();
}

endwin(); // restore console

return 0;
}


compile com: g++ -o teste teste.cpp -Wall -lcurses

3. Re: Usar setas do Teclado no Linux [RESOLVIDO]

berghetti
berghetti

(usa Debian)

Enviado em 08/05/2018 - 13:29h

Não sou programador,
Mas não dá para usar o código ASCII?


4. Obrigado

Silas Henrique
silash35

(usa Arch Linux)

Enviado em 08/05/2018 - 17:24h

Ajudou muito, vou marcar como melhor resposta






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts