Используя OpenGL / GLUT, как я могу определить, удерживаются ли две клавиши, скажем, 'a' и 'j' одновременно?
(Эта программа должна быть скомпилирована с OSX GCC, Windows GCC, Windows VS2005, так что никаких зависимых от ОС хаков, пожалуйста.)
Попробуйте следующее:
glutIgnoreKeyRepeat
glutKeyboardFunc
glutKeyboardUpFunc
bool keystates[256]
keystates[key] = true
keystates[key] = false
(keystates['a'] || keystates['A']) && (keystates['j'] || keystates['J'])
Смотри в этом направлении. Хотя я не проверял это, оно должно работать. Вам также могут понадобиться glutSpecialFunc и glutSpecialUpFunc для получения сообщений для «специальных» ключей.
glutSpecialFunc
glutSpecialUpFunc
Кроме того, имейте в виду, что GLUT - действительно старая вещь, и есть много более хороших альтернатив.
под «более хорошей альтернативой», если вы имеете в виду более простую и независимую от ввода функцию ввода, то получили с помощью функции GetAsyncKeyState ...
MSDN - функция GetAsyncKeyState