В консольной программе C++ я нашел, как обнаруживать клавиши со стрелками в Windows, и я нашел много других вещей, которые не имели ничего общего с вопросом (несмотря на то, что я думал, что это хорошие условия поиска), но я хотите знать, есть ли независимый от платформы способ обнаружения нажатия клавиши со стрелкой. Достойным вторым местом для этого было бы то, как обнаружить нажатие клавиши со стрелкой в Unix и Mac. Фрагменты кода приветствуются.
Независимое от платформы обнаружение нажатия клавиши со стрелкой в C++
Ответы (3)
Не существует кросс-платформенного способа сделать это, потому что он не определен ни стандартами C, ни C++ (хотя могут быть библиотеки, которые абстрагируются от различий при компиляции на разных платформах).
Я считаю, что библиотека, которую вы ищете в POSIX-боксах, это curses, но я никогда не использовал его сам - я могу ошибаться.
Имейте в виду, что вполне возможно, что консольная программа (то есть gnome-terminal
или konsole
или xterm
) монополизировала использование этих клавиш для других функций.
Как сказал Билли, стандартного кроссплатформенного способа сделать это не существует.
Лично я использую эту (ориентированную на игру) библиотеку для всех входных данных, кросс-платформенных win/linux/mac: http://sourceforge.net/projects/wgois/
Вы можете сделать это на разных платформах, используя SDL2.
Пример кода:
#include <SDL2/SDL.h>
int main()
{
SDL_Event event;
SDL_PollEvent(&event);
if(event.type == SDL_KEYDOWN)
{
// Move centerpoint of rotation for one of the trees:
switch(event.key.keysym.sym)
{
case SDLK_UP:
// do something
break;
case SDLK_DOWN:
// do something
break;
case SDLK_LEFT:
// do something
break;
case SDLK_RIGHT:
// do something
break;
case SDLK_ESCAPE:
// do something
return 0;
default:
break;
}
}
return 0;
}
undefined reference to `SDL_PollEvent' collect2: error: ld returned 1 exit status
Что я делаю не так?? Я буквально просто скопировал этот код и скачал библиотеку...
- person Abraham Murciano Benzadon; 18.10.2018