eri*_*rik 8 keyboard ergonomics haskell xmonad
好吧,我实际上并没有使用Dvorak而是使用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)]
Run Code Online (Sandbox Code Playgroud)
我想改变这一点,以便能够使用键2到0访问工作区1到9.
我怎么能这样做?我试图改变第三行
| (i, k) <- zip (XMonad.workspaces conf) [xK_2 .. xK_0]
Run Code Online (Sandbox Code Playgroud)
但后来我无法访问第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]
[]
Run Code Online (Sandbox Code Playgroud)
你会想要使用比这更长的列表.至少有两种合理的方法可以做到这一点; 一种是自己手动指定所有键:
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]
Run Code Online (Sandbox Code Playgroud)
我可能会使用的更短一点:
Prelude XMonad> [xK_2 .. xK_9] ++ [xK_0]
[50,51,52,53,54,55,56,57,48]
Run Code Online (Sandbox Code Playgroud)
如果它是更大表达式的一部分,请记住添加一些括号.