在xmonad中使用程序员dvorak键盘布局切换工作区(移位数字)



实际上,我使用的不是德沃夏克,而是Neo2,但由于我使用的是矩阵型键盘(真正符合人体工程学)我也更改了数字

因此,我的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到0访问工作区1到9。

我怎么能做到呢?我试着把第三行改成

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

但后来我无法访问第9个工作区。我该如何更改?简短的解释会很好,所以了解一下这个结构(我多年前就学会了Haskell,但大部分都忘了)。

您的问题是xK_2大于xK_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]

如果它是较大表达式的一部分,请记住添加一些括号。

最新更新