我对 C++ 编程和将 Mac 用作计算机还很陌生。 我已经在互联网上搜索了一段时间,但仍然找不到解决我问题的好方法。
我正在用键盘箭头制作一个项目,但我不知道如何在 if 语句中制作按键功能。
所以我正在寻找的解决方案是:
if (up arrow is pressed) {
std::cout << it worked! << std::endl;
}
信息: LLVM 编译器、Xcodes 命令行工具、Unix、OS X-Sierra 感谢您的帮助。
最佳答案
好吧,我无法让其他答案中的代码正常工作,不确定有什么不同,因为我也在运行 Sierra。但我将其转换为使用 tcsetattr。该调用的目的是将终端置于原始模式,以便它直接发送按键。如果你不这样做,它不会发送任何东西,直到你按下 enter。
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
static struct termios savemodes;
static int havemodes = 0;
int tty_break(void)
{
struct termios modmodes;
if (tcgetattr(STDIN_FILENO, &savemodes) < 0)
return -1;
havemodes = 1;
modmodes = savemodes;
cfmakeraw(&modmodes);
return tcsetattr(STDIN_FILENO, TCSANOW, &modmodes);
}
int tty_getchar(void)
{
return getchar();
}
int tty_fix(void)
{
if(!havemodes)
return 0;
return tcsetattr(STDIN_FILENO, TCSANOW, &savemodes);
}
int
main(int argc, char *argv[])
{
int i;
if(tty_break() != 0)
return 1;
for(i = 0; i < 10; i++)
printf(" = %d\n", tty_getchar());
tty_fix();
return 0;
}
关于c++ - OS X - if 语句中的按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43834478/