Настройка и работа в Linux

         

Изменение набора модификаторов (modifiers)


Как я уже сказал, набор модификаторов распределен по трем переменным - base modifiers, latched modifiers и locked modifiers.
Соответственно действия для их изменения:

  • SetMods - меняет base modifiers,
  • LatchMods - меняет latched modifiers,
  • LockMods - меняет locked modifiers.
  • Основной аргумент у всех трех действий - modifiers (другое имя - mods). А его значение - название виртуального или реального модификатора. Если одно действие меняет сразу несколько модификаторов, их можно перечислить через знак "+". Например

    SetMods(mods=Shift+Control);

    Вместо названия модификатора можно указать специальное значение UseModMapMods (или просто ModMapMods). Это будет означать, что сами модификаторы надо взять из списка виртуальных модификаторов, связаных с этой клавишей (modmap и vmodmap).

    Надо также заметить, что эти три действия отличаются не только тем, какую переменную они меняют. Они по разному работают в момент нажатия и в момент отпускания клавиши. Вспомните как отличается работа клавиш Shift и CapsLock. Первая должна действовать только пока ее удерживают в нажатом состоянии, то есть при ее нажатии модификатор Shift должен появиться, а при отпускании - автоматически исчезнуть. А вот CapsLock должна действовать долговременно - при первом нажатии ее модификатор должен стать активным и оставаться в таком состоянии даже после того как вы отпустите клавишу. А вот по повторному нажатию/отпусканию - убраться.

    Так вот. Первые два действия предназначены для модификаторов типа Shift. То есть когда клавиша с таким действием нажимается, модификатор, указанный в аргументе добавляется в соответсвующую переменную (base или latched), а при отпускании клавиши то же действие выполняет обратную операцию - убирает модификатор.

    А вот действие LockMods при первом исполнении только добавляет модификатор в locked modifiers, но не удаляет его при отпускании клавиши, а вот если модификатор уже установлен (то есть это уже повторное нажатие то же клавши), то при нажатии клавиши модификатор наоборот - убирается из locked modifiers.


    Обратите внимание, что на самом деле совсем необязательно, чтобы вы использовали для модификатора Shift действие типа SetMods, а для модификатора Lock - LockMods. Вы можете "залокировать" Shift или наоборот - делать Lock

    активным только на время удержания клавши. Но это уже зависит от того, что вы собственно хотите этим добится. :-)

    Также поведение первых двух действий могут слегка изменяться с помощью двух флагов - clearLocks и latchToLock.

    Поэтому полное описание всех деталей этих действий выглядит так



    Действие При нажатии При отпускании
    SetMods Добавляет модификаторы в base modifiers



    • Убирает свои модификаторы из base modifiers


    • если clearLocks=yes и между нажатием и отпусканием этой клавиши вы не нажимали другие клавиши, то эти же модификаторы вычищаются и из locked modifiers


    LatchMods Добавляет модификаторы в latched modifiers



    • Убирает свои модификаторы из latched modifiers


    • если clearLocks=yes и между нажатием и отпусканием этой клавиши вы не нажимали другие клавиши, то эти же модификаторы вычищаются и из locked modifiers


    • если latchToLock=yes, то те же модификаторы запоминаются в locked modifiers


    LockMods
  • Добавляет модификаторы в base modifiers


  • если этих модификаторов нет в locked modifiers, то добавляет их туда, в противном случае наоборот - убирает


  • Убирает свои модификаторы из base modifiers


  • locked modifiers не меняется.



  • Содержание раздела