2017-09-14 34 views
2

This answer描述瞭如何在Xmonad中創建組合鍵綁定。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") ]) 
    ]) 
... 

但好像只有那些剛開始使用相同的密鑰作品(這裏的第一個開始的最後定義的組合一個「a」似乎被最後一個覆蓋)。

與鏈接答案中的示例有什麼不同,只是組合以modkey +鍵綁定開頭,而不是一個鍵。

這裏有什麼問題?

回答

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") 
     ] 
    ) 
    ] 
) 
+0

這個工程,也是比我嘗試過的方式更優雅,謝謝! – user905686

+0

幾秒鐘就打敗了我 –

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