Xmonad多个子图组合键

时间:2017-09-14 16:32:29

标签: xmonad

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 +键绑定而不仅仅是键开头。

这可能是什么问题?

2 个答案:

答案 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