C ++多个按键输入或按键按下/释放事件

时间:2019-10-25 01:03:24

标签: c++ keyboard

我正在用C ++编写游戏。为此,我需要检测同时按下或按住的多个键,或者检测按键和释放键的事件。

例如,如果我同时按住 up right 键,我希望能够检测到并沿对角线移动游戏。此外,当前,如果我按住 right 键,并按 up ,则它不再识别出已按住 right 。我需要一种方法来找到真正释放 right 键的时间,以便它不会像这样被打断。

我知道sdl2可以识别按下或按住的多个键,但这需要创建一个窗口,并且我希望它完全在终端中。

此外,getch()中的

curses/ncurses对此无效。

我可以用来做什么?如果可能的话,我想避免使用Allegro。

1 个答案:

答案 0 :(得分:0)

您没有提及您现在如何读取按键输入以及如何处理输入,因此这只是有关如何处理按键输入的一般建议。

当您检测到或处理特定按键的按键按下(按键按下)事件时,请设置一个标志(例如keyflags = keyflags | KEY_RIGHT)以指示按键已按下,并取消设置(删除)按键按下事件上的标记。如果直接按按键操作,这可能会解决您今天遇到的问题。