This answer描述了如何在Xmonad中创建组合键绑定。
使用additionalKeys
我将我的键绑定作为列表添加到我的XConfig配置中:
...
-- Does NOT work
, ((myModMask, xK_a), submap . M.fromList $
[ ((0, xK_l), submap . M.fromList $
[ ((0, xK_1), spawn "xbacklight -set 10" ) ])
])
-- Does work
, ((myModMask, xK_d), submap . M.fromList $
[ ((0, xK_l), submap . M.fromList $
[ ((0, xK_2), spawn "xbacklight -set 20" ) ])
])
-- Does work
, ((myModMask, xK_a), submap . M.fromList $
[ ((0, xK_l), submap . M.fromList $
[ ((0, xK_5), spawn "xbacklight -set 50" ) ])
])
...
但似乎只有最后定义的那些以同一个键开头的组合才起作用(这里的第一个以&#34开头; a"似乎被最后一个覆盖)。
与链接答案中的示例有什么不同之处仅在于组合以modkey +键绑定而不仅仅是键开头。
这可能是什么问题?
答案 0 :(得分:1)
我非常确定您不能拥有具有相同键绑定的键盘映射条目 - (myModMask, xK_a)
。在这种情况下,最后一个条目会覆盖前一个条目。
您可以将两个条目组合在一起:
((myModMask, xK_a), submap . M.fromList $
[ ((0, xK_l), submap . M.fromList $
[
((0, xK_1), spawn "xbacklight -set 10" )
, ((0, xK_5), spawn "xbacklight -set 50" )
]
)
]
)
答案 1 :(得分:1)
您可能还想尝试EZConfig
,它会为您提供受Emacs启发的绑定字符串的子图。例如:
import XMonad.Util.EZConfig
myKeymap :: [(String, X ())]
myKeymap =
[ ("M-; s m", namedScratchpadAction myScratchpads "mongod" )
, ("M-; s a m", namedScratchpadAction myScratchpads "mongod2" )
, ("M-; s z", namedScratchpadAction myScratchpads "zk" )
, ("M-; s k", namedScratchpadAction myScratchpads "kafka" )
-- ... and so on ...
将其与additionalKeys
一起使用,请参阅https://hackage.haskell.org/package/xmonad-contrib-0.13/docs/XMonad-Util-EZConfig.html