我正在使用GLUT(freeglut3)(通过Haskell GLUT绑定)。
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)不会调用我的回调。此外,“mods”不描述win-key,只有Ctrl,Shift和Alt。
对键盘输入的这种有限访问是实际应用程序开发的严重障碍。我在这里做错了什么,或者只是因为残缺而被瘫痪? GLUT一般会瘫痪吗?
答案 0 :(得分:2)
首先,Windows会捕获shift-tab序列,所以即使你直接使用Win32,你通常也不会看到它。其次,GLUT是便携式的,所以除非你可以期望在Linux,MacOS等下看到相同的密钥,否则GLUT甚至不会尝试处理它。第三,GLUT规范上次更新了 long 时间,所以即使win-key(或至少类似的东西)现在非常普遍,如果它不是12年或15年前, GLUT可能不会知道它。