module Montis.Core.Events where import Data.Word (Word32) import Montis.Base.Foreign.WlRoots.Types data KeyState = KeyPressed | KeyReleased deriving (Show, Read, Eq, Enum, Ord) data KeyEvent = KeyEvent { keyEvent_timeMs :: Word32, keyEvent_keycode :: Word32, keyEvent_state :: KeyState, keyEvent_modifiers :: Word32, keyEvent_keysym :: Word32, keyEvent_codepoint :: Char, keyEvent_device :: WlrInputDevice } deriving (Show, Ord, Eq) data ButtonState = ButtonReleased | ButtonPressed deriving (Show, Read, Eq, Enum, Ord) data ButtonEvent = ButtonEvent { buttonEvent_pointer :: WlrPointer, buttonEvent_timeMs :: Word32, buttonEvent_button :: Word32, buttonEvent_modifiers :: Word32, buttonEvent_state :: ButtonState } deriving (Eq, Show, Ord) data MotionEvent = MotionEvent { motionEvent_pointer :: WlrPointer, motionEvent_timeMs :: Word32, motionEvent_modifiers :: Word32, motionEvent_absolute :: (Double, Double), motionEvent_raw :: (Double, Double) } deriving (Eq, Show, Ord) data SurfaceState = Map | Unmap | Destroy deriving (Eq, Ord, Show, Read, Enum) data SurfaceEvent = SurfaceEvent { surfaceEvent_state :: SurfaceState, surfaceEvent_surface :: Surface } deriving (Eq, Ord, Show)