WedX - журнал о программировании и компьютерных науках

Xmonad несколько комбинаций клавиш подкарты

Этот ответ описывает, как создавать привязки комбо-клавиш в Xmonad.

С помощью additionalKeys я добавляю свои привязки клавиш в виде списка в свою конфигурацию XConfig:

...
-- Does NOT work
, ((myModMask, xK_a), submap . M.fromList $
    [ ((0, xK_l),    submap . M.fromList $
        [ ((0, xK_1),  spawn "xbacklight -set 10" ) ])
    ])
-- Does work
, ((myModMask, xK_d), submap . M.fromList $
    [ ((0, xK_l),    submap . M.fromList $
        [ ((0, xK_2),  spawn "xbacklight -set 20" ) ])
    ])
-- Does work
, ((myModMask, xK_a), submap . M.fromList $
    [ ((0, xK_l),    submap . M.fromList $
        [ ((0, xK_5),  spawn "xbacklight -set 50" ) ])
    ])
...

Но похоже, что работает только последняя определенная комбинация тех, которые начинаются с одной и той же клавиши (здесь первая, начинающаяся с «а», кажется, переопределяется последней).

Что отличается от примера в связанном ответе, так это то, что комбинации начинаются с привязки modkey + key, а не просто с ключа.

В чем здесь может быть проблема?

14.09.2017

Ответы:


1

Я совершенно уверен, что у вас не может быть записей списка раскладок с одной и той же привязкой клавиш - (myModMask, xK_a). В этом случае последняя запись переопределяет предыдущую запись.

Однако вы можете объединить две записи:

 ((myModMask, xK_a), submap . M.fromList $
    [ ((0, xK_l),    submap . M.fromList $
         [
             ((0, xK_1),  spawn "xbacklight -set 10" )
           , ((0, xK_5),  spawn "xbacklight -set 50" )
         ]
      )
    ]
 )
18.09.2017
  • Это работает, а также намного элегантнее, чем я пробовал, спасибо! 18.09.2017
  • опередил меня буквально на секунды 19.09.2017

  • 2

    Вы также можете попробовать EZConfig, который создает подкарты для вас с заданными строками привязки, вдохновленными строками в Emacs. Например:

    import XMonad.Util.EZConfig
    
    myKeymap :: [(String, X ())]
    myKeymap =
      [ ("M-; s m",    namedScratchpadAction myScratchpads "mongod" )
      , ("M-; s a m",  namedScratchpadAction myScratchpads "mongod2" )
      , ("M-; s z",    namedScratchpadAction myScratchpads "zk" )
      , ("M-; s k",    namedScratchpadAction myScratchpads "kafka" )
    
      -- ... and so on ...
    

    используйте это с additionalKeys, см. https://hackage.haskell.org/package/xmonad-contrib-0.13/docs/XMonad-Util-EZConfig.html

    19.09.2017
    Новые материалы

    Как создать диаграмму градиентной кисти с помощью D3.js
    Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


    Для любых предложений по сайту: [email protected]