Я использую ИЗБЫТОК (freeglut3) (через привязку ИЗБЫТКА Haskell).
import Graphics.UI.GLUT handleKBMouse :: KeyboardMouseCallback handleKBMouse key keyState mods mousePos = do print (key, keyState, mods, mousePos) main :: IO () main = do getArgsAndInitialize createWindow "testTitle" keyboardMouseCallback $= Just handleKBMouse mainLoop
Кажется что различные важные ключи (например: Shift+Tab), не называют мой обратный вызов. Кроме того, "модификации" не описывает ключевое для победы, только Ctrl, Сдвиг и Высокий звук.
Наличие такого ограниченного доступа к вводу с клавиатуры является серьезным препятствием для реальной разработки приложений. Я делаю что-то не так здесь или просто freeglut просто нанесен вред? ИЗБЫТКУ наносят вред в целом?
Во-первых, Windows перехватывает последовательность сдвига-табуляции, поэтому, даже если вы работаете напрямую с Win32, вы обычно ее не увидите. Во-вторых, GLUT предназначен для переносимости, поэтому, если вы не ожидаете увидеть тот же ключ в Linux, MacOS и т. Д., Велика вероятность, что GLUT даже не попытается с ним справиться. В-третьих, спецификация GLUT последний раз обновлялась давно назад, так что даже если win-key (или, по крайней мере, что-то подобное) сейчас довольно распространено, если это не было 12 или 15 лет назад, GLUT наверное, не узнает об этом.