module KMonad.Args.Types
(
CfgToken(..)
, DefButton(..)
, DefSetting(..)
, DefSettings
, DefAlias
, DefLayer(..)
, DefSrc
, KExpr(..)
, IToken(..)
, OToken(..)
, AsKExpr(..)
, AsDefSetting(..)
) where
import KMonad.Prelude
import KMonad.Model.Button
import KMonad.Keyboard
import KMonad.Keyboard.IO
import KMonad.Util
data DefButton
= KRef Text
| KEmit Keycode
| KPressOnly Keycode
| KReleaseOnly Keycode
| KLayerToggle Text
| KLayerSwitch Text
| KLayerAdd Text
| KLayerRem Text
| KTapNext DefButton DefButton
| KTapHold Int DefButton DefButton
| KTapHoldNext Int DefButton DefButton (Maybe DefButton)
| KTapNextRelease DefButton DefButton
| KTapHoldNextRelease Int DefButton DefButton (Maybe DefButton)
| KTapNextPress DefButton DefButton
| KAroundNext DefButton
| KAroundNextSingle DefButton
| KMultiTap [(Int, DefButton)] DefButton
| KAround DefButton DefButton
| KAroundNextTimeout Int DefButton DefButton
| KTapMacro [DefButton] (Maybe Int)
| KTapMacroRelease [DefButton] (Maybe Int)
| KComposeSeq [DefButton]
| KPause Milliseconds
| KLayerDelay Int LayerTag
| KLayerNext LayerTag
| KCommand Text (Maybe Text)
| KStickyKey Int DefButton
| KBeforeAfterNext DefButton DefButton
| KTrans
| KBlock
deriving Int -> DefButton -> ShowS
[DefButton] -> ShowS
DefButton -> String
(Int -> DefButton -> ShowS)
-> (DefButton -> String)
-> ([DefButton] -> ShowS)
-> Show DefButton
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DefButton -> ShowS
showsPrec :: Int -> DefButton -> ShowS
$cshow :: DefButton -> String
show :: DefButton -> String
$cshowList :: [DefButton] -> ShowS
showList :: [DefButton] -> ShowS
Show
data CfgToken = CfgToken
{ CfgToken -> LogFunc -> IO (Acquire KeySource)
_src :: LogFunc -> IO (Acquire KeySource)
, CfgToken -> LogFunc -> IO (Acquire KeySink)
_snk :: LogFunc -> IO (Acquire KeySink)
, CfgToken -> LMap Button
_km :: LMap Button
, CfgToken -> Text
_fstL :: LayerTag
, CfgToken -> Bool
_flt :: Bool
, CfgToken -> Bool
_allow :: Bool
}
makeClassy ''CfgToken
type DefSrc = [Keycode]
type DefAlias = [(Text, DefButton)]
data DefLayer = DefLayer
{ DefLayer -> Text
_layerName :: Text
, DefLayer -> [DefButton]
_buttons :: [DefButton]
}
deriving Int -> DefLayer -> ShowS
[DefLayer] -> ShowS
DefLayer -> String
(Int -> DefLayer -> ShowS)
-> (DefLayer -> String) -> ([DefLayer] -> ShowS) -> Show DefLayer
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DefLayer -> ShowS
showsPrec :: Int -> DefLayer -> ShowS
$cshow :: DefLayer -> String
show :: DefLayer -> String
$cshowList :: [DefLayer] -> ShowS
showList :: [DefLayer] -> ShowS
Show
data IToken
= KDeviceSource FilePath
| KLowLevelHookSource
| KIOKitSource (Maybe Text)
deriving Int -> IToken -> ShowS
[IToken] -> ShowS
IToken -> String
(Int -> IToken -> ShowS)
-> (IToken -> String) -> ([IToken] -> ShowS) -> Show IToken
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> IToken -> ShowS
showsPrec :: Int -> IToken -> ShowS
$cshow :: IToken -> String
show :: IToken -> String
$cshowList :: [IToken] -> ShowS
showList :: [IToken] -> ShowS
Show
data OToken
= KUinputSink Text (Maybe Text)
| KSendEventSink (Maybe (Int, Int))
| KKextSink
deriving Int -> OToken -> ShowS
[OToken] -> ShowS
OToken -> String
(Int -> OToken -> ShowS)
-> (OToken -> String) -> ([OToken] -> ShowS) -> Show OToken
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> OToken -> ShowS
showsPrec :: Int -> OToken -> ShowS
$cshow :: OToken -> String
show :: OToken -> String
$cshowList :: [OToken] -> ShowS
showList :: [OToken] -> ShowS
Show
data DefSetting
= SIToken IToken
| SOToken OToken
| SCmpSeq DefButton
| SInitStr Text
| SFallThrough Bool
| SAllowCmd Bool
| SCmpSeqDelay Int
deriving Int -> DefSetting -> ShowS
[DefSetting] -> ShowS
DefSetting -> String
(Int -> DefSetting -> ShowS)
-> (DefSetting -> String)
-> ([DefSetting] -> ShowS)
-> Show DefSetting
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DefSetting -> ShowS
showsPrec :: Int -> DefSetting -> ShowS
$cshow :: DefSetting -> String
show :: DefSetting -> String
$cshowList :: [DefSetting] -> ShowS
showList :: [DefSetting] -> ShowS
Show
makeClassyPrisms ''DefSetting
instance Eq DefSetting where
SIToken{} == :: DefSetting -> DefSetting -> Bool
== SIToken{} = Bool
True
SOToken{} == SOToken{} = Bool
True
SCmpSeq{} == SCmpSeq{} = Bool
True
SInitStr{} == SInitStr{} = Bool
True
SFallThrough{} == SFallThrough{} = Bool
True
SAllowCmd{} == SAllowCmd{} = Bool
True
DefSetting
_ == DefSetting
_ = Bool
False
type DefSettings = [DefSetting]
data KExpr
= KDefCfg DefSettings
| KDefSrc DefSrc
| KDefLayer DefLayer
| KDefAlias DefAlias
deriving Int -> KExpr -> ShowS
[KExpr] -> ShowS
KExpr -> String
(Int -> KExpr -> ShowS)
-> (KExpr -> String) -> ([KExpr] -> ShowS) -> Show KExpr
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> KExpr -> ShowS
showsPrec :: Int -> KExpr -> ShowS
$cshow :: KExpr -> String
show :: KExpr -> String
$cshowList :: [KExpr] -> ShowS
showList :: [KExpr] -> ShowS
Show
makeClassyPrisms ''KExpr