module KeyboardMouseC (keyboardMouse , mouseMove) where import Graphics.Rendering.OpenGL import Graphics.UI.GLUT import States import KeyboardMouseState import Data.IORef import EventFlags keyboardMouse :: (IORef KState) ->(IORef DState) -> (IORef MState) -> Key -> KeyState -> Modifiers -> Position -> IO() keyboardMouse kst dst mst key keystate modifier position = do dst' <- readIORef dst mst' <- readIORef mst kst' <- readIORef kst kst $=! (setKState mst' kst' key keystate modifier position) mouseMove :: (IORef PMState) -> Position -> IO () mouseMove pmst position = do pmst' <- readIORef pmst pmst $=! (setPMState pmst' position)