Переключение рабочих пространств в 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)]
Я хочу изменить это, чтобы иметь возможность доступа к рабочим областям с 1 по 9 с помощью клавиш от 2 до 0.
Как я мог достичь этого? Я пытался изменить третью строку на
| (i, k) <- zip (XMonad.workspaces conf) [xK_2 .. xK_0]
но тогда я не смог получить доступ к 9-й рабочей области. Как мне изменить это? Было бы неплохо короткое объяснение, чтобы узнать кое-что об этой конструкции (я изучил Haskell много лет назад и забыл большую ее часть).
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]
Не забудьте добавить несколько скобок, если это часть большего выражения.