aboutsummaryrefslogtreecommitdiff
path: root/src/Rahm/Desktop/RebindKeys.hs
diff options
context:
space:
mode:
authorJosh Rahm <rahm@google.com>2022-04-13 15:57:58 -0600
committerJosh Rahm <rahm@google.com>2022-04-13 15:57:58 -0600
commit8c0e13e1d6f27657b9c439927814d01f143216d3 (patch)
tree3b85702b0367d1bdf626b1c46988021f8506d9fa /src/Rahm/Desktop/RebindKeys.hs
parent0dfe872da02d5d63eb2b334decd3a8292aff3ca3 (diff)
downloadrde-experimental_only_bind_necessary.tar.gz
rde-experimental_only_bind_necessary.tar.bz2
rde-experimental_only_bind_necessary.zip
Only bind the necessary keys during a submap. A little strange, not sure how I feel about it, but it is worthwhile to keep aroundexperimental_only_bind_necessary
Diffstat (limited to 'src/Rahm/Desktop/RebindKeys.hs')
-rw-r--r--src/Rahm/Desktop/RebindKeys.hs9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/Rahm/Desktop/RebindKeys.hs b/src/Rahm/Desktop/RebindKeys.hs
index 0b4d768..040946f 100644
--- a/src/Rahm/Desktop/RebindKeys.hs
+++ b/src/Rahm/Desktop/RebindKeys.hs
@@ -77,6 +77,15 @@ doGrab dpy win (keyMask, keysym) = do
forM_ codes $ \kc ->
mapM_ (grab kc . (keyMask .|.)) =<< extraModifiers
+doUngrab :: Display -> Window -> (KeyMask, KeySym) -> X ()
+doUngrab dpy win (keyMask, keysym) = do
+ let grab kc m = io $ ungrabKey dpy kc m win
+
+ codes <- io $ getKeyCodesForKeysym dpy keysym
+
+ forM_ codes $ \kc ->
+ mapM_ (grab kc . (keyMask .|.)) =<< extraModifiers
+
disableKey :: (KeyMask, KeySym) -> WindowHook
disableKey key = remapKey key (return ())