@@ -29,7 +29,7 @@ module XMonad.Util.Grab
29
29
) where
30
30
31
31
-- core
32
- import XMonad hiding ( mkGrabs )
32
+ import XMonad
33
33
34
34
import Control.Monad ( when )
35
35
import Data.Bits ( setBit )
@@ -88,49 +88,9 @@ customRegrabEvHook regr = \case
88
88
e@ MappingNotifyEvent {} -> do
89
89
io (refreshKeyboardMapping e)
90
90
when (ev_request e `elem` [mappingKeyboard, mappingModifier])
91
- $ setNumlockMask
91
+ $ cacheNumlockMask
92
92
>> regr
93
93
pure (All False )
94
94
_ -> pure (All True )
95
95
96
96
-- }}}
97
-
98
- -- --< Private Utils >-- {{{
99
-
100
- -- | Private action shamelessly copied and restyled from XMonad.Main source.
101
- setNumlockMask :: X ()
102
- setNumlockMask = withDisplay $ \ dpy -> do
103
- ms <- io (getModifierMapping dpy)
104
- xs <- sequence
105
- [ do
106
- ks <- io (keycodeToKeysym dpy kc 0 )
107
- pure $ if ks == xK_Num_Lock
108
- then setBit 0 (fromIntegral m)
109
- else 0 :: KeyMask
110
- | (m, kcs) <- ms
111
- , kc <- kcs
112
- , kc /= 0
113
- ]
114
- modify $ \ s -> s { numberlockMask = foldr (.|.) 0 xs }
115
-
116
- -- | Private function shamelessly copied and refactored from XMonad.Main source.
117
- mkGrabs :: X ([(KeyMask , KeySym )] -> [(KeyMask , KeyCode )])
118
- mkGrabs = withDisplay $ \ dpy -> do
119
- let (minCode, maxCode) = displayKeycodes dpy
120
- allCodes = [fromIntegral minCode .. fromIntegral maxCode]
121
- syms <- io . for allCodes $ \ code -> keycodeToKeysym dpy code 0
122
- let keysymMap = M. fromListWith (++) (zip syms $ pure <$> allCodes)
123
- keysymToKeycodes sym = M. findWithDefault [] sym keysymMap
124
- extraMods <- extraModifiers
125
- pure $ \ ks -> do
126
- (mask, sym) <- ks
127
- keycode <- keysymToKeycodes sym
128
- extraMod <- extraMods
129
- pure (mask .|. extraMod, keycode)
130
-
131
- -- }}}
132
-
133
-
134
- -- NOTE: there is some duplication between this module and core. The
135
- -- latter probably will never change, but this needs to be kept in sync
136
- -- with any potential bugs that might arise.
0 commit comments