2013-02-14 42 views
8

好了,我不使用德沃夏克實際上卻Neo2,但由於我使用的是矩陣式鍵盤(Truly Ergonomic我也轉移了號碼。切換工作區(移動號碼)

因此這種結構在我xmonad.hs不符合人體工程學的工作:

-- mod-[1..9], Switch to workspace N 
-- mod-shift-[1..9], Move client to workspace N 
-- 
[((m .|. modMask, k), windows $ f i) 
    | (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9] 
    , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)] 

我想用鑰匙才能改變這種狀況,要能進入工作區2月1日至九日爲0

我怎樣才能達到目的?我試圖將第三行更改爲

| (i, k) <- zip (XMonad.workspaces conf) [xK_2 .. xK_0] 

但後來我無法訪問第9個工作區。我該如何改變這個?一個簡短的解釋會很好,所以要了解這個構造的一些東西(我在很多年前瞭解到Haskell並且大部分都忘了)。

+0

請分享您的配置。我無法在任何地方找到可用的便攜式設備。謝謝:) – matiu 2014-08-21 03:37:36

回答

8

您的問題是xK_2xK_0大,所以列表[xK_2 .. xK_0]爲空:

Prelude XMonad> xK_2 
50 
Prelude XMonad> xK_0 
48 
Prelude XMonad> [xK_2 .. xK_0] 
[] 

您需要使用比這更長的時間列表。至少有兩種合理的方法可以做到這一點;一個是剛剛指定的所有鍵手動自己的:

Prelude XMonad> [xK_2, xK_3, xK_4, xK_5, xK_6, xK_7, xK_8, xK_9, xK_0] 
[50,51,52,53,54,55,56,57,48] 

我可能會使用是有點短:

Prelude XMonad> [xK_2 .. xK_9] ++ [xK_0] 
[50,51,52,53,54,55,56,57,48] 

記住添加一些括號,如果它是一個更大的表達式的一部分。

+1

Quibble:'[a..b]'是[枚舉類型]的一個*算術序列*(http://hackage.haskell.org/packages/archive/base/3.0.3.1/doc/html /GHC-Enum.html#t%3AEnum),而不是列表理解。 – 2013-02-14 23:33:03

+0

@Mechanicalsnail固定,謝謝。 – 2013-02-15 01:25:33

+0

謝謝。與我認爲的相似。 – erik 2013-02-15 10:01:47