2017-09-14 10 views
2

This answerは、Xmonadでコンボ・キー・バインディングを作成する方法を説明しています。 additionalKeysXmonad複数のサブマップ・キーのコンボ

は、私は私の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") ]) 
    ]) 
... 

しかし、それは、ここで同じ鍵作品(で始まる最初の1から始まるそれらの唯一の最後の定義された組み合わせのように思えます"a"は最後のものによって上書きされるように見えます)。

リンクされた答えの例と異なるのは、組み合わせがキーだけではなく、キー+キーのバインディングで始まることです。

ここで問題が発生する可能性がありますか?

答えて

1

同じキーバインドのキーマップリストエントリを持つことはできません。(myModMask, xK_a)です。この場合、最後の入力は前の入力よりも優先されます。

あなたはしかし、2つのエントリを組み合わせることができます:

((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

をまたにEmacsのものに触発された文字列を結合与えられたあなたのためのサブマップを作るEZConfigを、試してみたいことがあります。たとえば:additionalKeysとのこと

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 ... 

使用は、この作品もはるかにエレガントな私はそれを試してみました方法よりもhttps://hackage.haskell.org/package/xmonad-contrib-0.13/docs/XMonad-Util-EZConfig.html