пользовательская привязка клавиш в xmonad, не влияющая на другие привязки

Я использую xmonad и хотел хороший способ заблокировать экран. Итак, я установил slock (apt-get install slock), и он отлично работает.

Затем я хотел, чтобы простая последовательность клавиш запускала slock, поэтому я определил эту новую функцию в xmonad.hs:

import qualified Data.Map as M

myKeys conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $
        [ ((modMask .|. controlMask, xK_l),
           spawn "slock")
        ]

и добавил keys = myKeys в основную функцию.

Это позволило мне красиво заблокировать экран с помощью Ctrl+Alt+l, но тогда ни один из других ярлыков xmonad не работал!

Есть ли способ добавить одну новую привязку клавиш, но без изменения существующих привязок?


person Gautam    schedule 19.02.2014    source источник


Ответы (1)


Как вы, наверное, догадались, установив keys = myKeys в функции main, вы переопределили настройки по умолчанию. Вы можете добавить свои ключи с помощью оператора additionalKeys, например:

main =
   xmonad $ desktopConfig `additionalKeys` myKeys

Или, если у вас есть другие настройки для desktopConfig,

main =
   xmonad $ desktopConfig
    { 
       -- other customisations
    } `additionalKeys` myKeys
person mhwombat    schedule 20.02.2014
comment
У меня есть ошибки: xmonad.hs:18:52: Not in scope: 'M.fromList' xmonad.hs:28:12: Not in scope: 'additionalKeys' откуда их взять? - person eloyesp; 23.04.2015
comment
Добавьте import qualified Data.Map as M и import XMonad.Util.EZConfig ( additionalKeys ) в начало файла. - person mhwombat; 23.04.2015