Если вы используете GLUT, вы найдете то, что вам нужно, в Graphics.UI.GLUT.Callbacks.Window
, в частности, keyboardMouseCallback
.Обратите внимание, что кнопки мыши обрабатываются как клавиши клавиатуры:
myKeyboardMouseCallback key keyState modifiers position =
case (key, keyState) of
(MouseButton LeftButton, Down) -> do
{- draw circle @ position ... -}
_ -> return () -- ignore other buttons
attachMyKeyboardMouseCallback = keyboardMouseCallback $= Just myKeyboardMouseCallback