module Graphics.Shine.Input where
import Web.KeyCode
data KeyState = Down | Up deriving (Show, Eq)
data Modifiers = Modifiers { ctrl :: KeyState
, alt :: KeyState
, shift :: KeyState
, meta :: KeyState }
deriving (Show, Eq)
data MouseBtn = BtnLeft | BtnRight | BtnMiddle deriving (Show, Eq)
data Input = Keyboard Key KeyState Modifiers
| MouseBtn MouseBtn KeyState Modifiers
| MouseWheel (Double, Double)
| MouseMove (Int, Int)
deriving (Show, Eq)
toMouseBtn :: Word -> Maybe MouseBtn
toMouseBtn 0 = Just BtnLeft
toMouseBtn 1 = Just BtnMiddle
toMouseBtn 2 = Just BtnRight
toMouseBtn _ = Nothing
toKeyState :: Bool -> KeyState
toKeyState True = Down
toKeyState False = Up