【问题标题】:Switching workspaces in xmonad using programmer dvorak keyboard layout (shifted numbers)使用程序员 dvorak 键盘布局(移位数字)在 xmonad 中切换工作区
【发布时间】:2013-02-15 09:25:18
【问题描述】:

好吧,我实际上并没有使用 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)]

我想改变它,以便能够使用键 2 到 0 访问工作区 1 到 9。

我怎么能做到这一点?我试图将第三行更改为

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

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

【问题讨论】:

  • 请分享您的配置。我在任何地方都找不到一个可以直接使用的。谢谢:)

标签: haskell keyboard xmonad ergonomics


【解决方案1】:

你的问题是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]

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

【讨论】:

  • Quib​​ble:[a..b]enumerated type算术序列,而不是列表推导式。
  • 谢谢。和我想的差不多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-11
  • 1970-01-01
  • 2011-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多