Question

I'm using GLUT (freeglut3) (via the Haskell GLUT bindings).

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

It seems that various important keys (e.g: Shift+Tab) do not call my callback. Also, "mods" doesn't describe the win-key, only Ctrl, Shift and Alt.

Having such limited access to keyboard input is a serious impediment for real application development. Am I doing anything wrong here or is just freeglut just crippled? Is GLUT crippled in general?

Was it helpful?

Solution

First, Windows traps the shift-tab sequence, so even if you work directly with Win32 you won't normally see it. Second, GLUT is intended to be portable, so unless you can expect to see the same key under Linux, MacOS, etc., chances are that GLUT won't even attempt to deal with it. Third, the GLUT spec was last updated a long time ago, so even if the win-key (or at least something similar) is pretty common now, if it wasn't 12 or 15 years ago, GLUT probably won't know about it.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top