Переключение рабочих областей в xmonad с помощью раскладки клавиатуры программиста дворака (сдвинутые числа)

На самом деле я использую не Дворжака, а 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 много лет назад и почти все забыл).


person erik    schedule 14.02.2013    source источник
comment
Поделитесь пожалуйста конфигом. Нигде не могу найти пригодный для использования. Спасибо :)   -  person matiu    schedule 21.08.2014


Ответы (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]

Не забудьте добавить круглые скобки, если это часть более крупного выражения.

person Daniel Wagner    schedule 14.02.2013
comment
Придирка: [a..b] – это арифметическая последовательность перечисленный тип, а не понимание списка. - person Mechanical snail; 15.02.2013
comment
Спасибо. Похоже на то, что я думал, что это будет. - person erik; 15.02.2013