2013-02-14 36 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