aboutsummaryrefslogtreecommitdiff
path: root/plug/src/Wetterhorn/Keys/MagicModifierKey.hs
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2026-01-01 20:29:02 -0700
committerJosh Rahm <joshuarahm@gmail.com>2026-01-01 20:29:02 -0700
commitcb657fa9fc8124bdab42eb148e9b4a8ac69fc05e (patch)
tree299ab9c10e0c6c40fe30f38f3c75286a282c6283 /plug/src/Wetterhorn/Keys/MagicModifierKey.hs
parent88b5144ba82393e9efbffc8ba7ecc225d99dc9ed (diff)
downloadmontis-cb657fa9fc8124bdab42eb148e9b4a8ac69fc05e.tar.gz
montis-cb657fa9fc8124bdab42eb148e9b4a8ac69fc05e.tar.bz2
montis-cb657fa9fc8124bdab42eb148e9b4a8ac69fc05e.zip
[refactor] Wetterhorn -> Montis
Diffstat (limited to 'plug/src/Wetterhorn/Keys/MagicModifierKey.hs')
-rw-r--r--plug/src/Wetterhorn/Keys/MagicModifierKey.hs50
1 files changed, 0 insertions, 50 deletions
diff --git a/plug/src/Wetterhorn/Keys/MagicModifierKey.hs b/plug/src/Wetterhorn/Keys/MagicModifierKey.hs
deleted file mode 100644
index 6bc8bb3..0000000
--- a/plug/src/Wetterhorn/Keys/MagicModifierKey.hs
+++ /dev/null
@@ -1,50 +0,0 @@
-module Wetterhorn.Keys.MagicModifierKey where
-
-import Data.Data
-import Data.Default.Class
-import GHC.TypeNats
-import Wetterhorn.Core.KeyEvent
-import Wetterhorn.Core.W
-import Wetterhorn.Dsl.Bind
-import Wetterhorn.Dsl.Input
-import Control.Monad.RWS (MonadTrans(lift))
-import Control.Monad.Trans.Maybe (MaybeT(..))
-
-data MagicModifierProxy (keycode :: Natural) inputproxy
- deriving (Typeable)
-
-newtype MagicModifierState (keycode :: Natural) = MagicModifierState {isPressed :: Bool}
- deriving (Typeable, Eq, Show, Ord, Read)
-
-instance Default (MagicModifierState k) where
- def = MagicModifierState False
-
-instance (KnownNat k) => ExtensionClass (MagicModifierState k)
-
-instance
- (KnownNat keycode, InputProxy inputproxy) =>
- InputProxy (MagicModifierProxy keycode inputproxy)
- where
- onKeyEvent proxy ie = do
- case ie of
- (InputKeyEvent (KeyEvent {keycode = kc, state = state}))
- | fromIntegral kc == natVal (keycodeProxy proxy) -> do
- lift $ setMagicModifierPressed proxy (state == KeyPressed)
- MaybeT (return Nothing)
- _ -> do
- pressed <- lift $ isMagicModifierPressed proxy
- if pressed
- then onKeyEvent (Proxy :: Proxy inputproxy) ie
- else return ie
- where
- keycodeProxy :: Proxy (MagicModifierProxy kc a) -> Proxy kc
- keycodeProxy _ = Proxy
-
- isMagicModifierPressed p = isPressed <$> getModState p
- setMagicModifierPressed p = modifyModState p . const
-
- getModState :: (KnownNat kc) => Proxy (MagicModifierProxy kc a) -> W (MagicModifierState kc)
- getModState _ = xget
-
- modifyModState :: (KnownNat kc) => Proxy (MagicModifierProxy kc a) -> (MagicModifierState kc -> Bool) -> W ()
- modifyModState _ fn = xmodify (MagicModifierState . fn)