Я пытаюсь сделать простую игру для терминала Unix, написанную на c. Я
искал способ опроса клавиатуры, но не повезло.
В настоящее время я использую функцию ncurses getch (). Он работает нормально, но если пользователь удерживает клавишу, повторение клавиатуры займет некоторое время, а также остановится, если будет нажата любая другая клавиша. Это вызывает проблемы при игре (особенно в режиме двух игроков, когда обе игры управляются из одного потока ввода).
Например, если игрок 1 удерживает «a», а игрок 2 удерживает «b», мне нужно опросить клавиатуру и обработать поток ввода следующим образом:
abababababababab
В качестве другого примера, если игрок 1 удерживает клавишу «а» и также нажимает клавишу «b», мне нужно обработать ввод следующим образом:
aaaaaaabaaaaaaaa
Таким образом, одновременные нажатия клавиш не прерывают друг друга. Поэтому мне нужно опрашивать клавиши на клавиатуре с заданным интервалом и создавать собственную реализацию повторителя нажатия клавиш.
Есть ли способ в c (с или без ncurses) просто опрашивать клавиатуру на некотором интервале времени и читать все клавиши, которые в данный момент нажимаются? Оттуда я могу просто создать поток ввода с клавиатуры, чтобы управлять повторяющимися действиями вручную. По сути, что-то вроде kbhit, поэтому я могу проверить состояние данного ключа. Но это также позволит мне опрашивать клавиши со стрелками.