"Набор исключений"
Напомню, что с каждой клавишей может быть связан набор исключений, который запрещает изменять "привязку" "действий", флагов "залипания" и автоповтора и набора виртуальных модификаторов при выполнении "интерпретаций".
Заметьте, что в описании клавиши нет явных инструкций для задания "набора исключений". Но этот набор все-таки создается в некоторых случаях
- если в описании клавши явно указан набор "действий" (инструкция actions), то устанавливается запрет "выполнения интерпретации" для этой клавиши;
- если задан явно автоповтор (инструкция repeat) - запрещается "изменение автоповтора";
- если задан явно флаг "залипания" или радио-группа (инструкции locks и radiogroup) - запрещается "изменение залипания";
- и, наконец, если указан явно список виртуальных модификаторов (инструкция vmod), то устанавливается "запрет изменения" набора модификаторов.
Это битовая маска, которая указывает - какая информация, связанная с клавишей, "задана точно" (explicit) и не должна изменяться в некоторых случаях. Дело в том, что в core protocol определены команды, с помощью которых программы могут менять "раскладку клавиатуры" внутри клавиатурного модуля X-сервера. Естественно, эти комады меняют только "привязку" символов, поскольку другие "свойства" скан-кодов в core protocol'е не определены.
Для того, чтобы XKB мог при этом поменять и "привязку" других "свойств", в нем предусмотрен специальный механизм - "интерпретации" символов (об этом см.ниже).
Так вот. Набор "исключений" может защитить информацию, связанную с конкретным скан-кодом, именно от таких косвенных изменений.
Если прикладная программа будет пользоваться соответствующим запросами XKB модуля (а не core protocol), такой защиты не требуется.
Итак, с помощью этой маски можно запретить
- изменение типа клавиши (количество уровней) для каждой группы (можно установить запрет для каждой группы поотдельности);
- изменения, которые могут произойти при применнии "интерпретации", при этом можно запретить -
- вообще все изменения, вызываемые "интерпретацией";
- изменение флагов "автоповтор" и "залипание";
- изменение набора виртуальных модификаторов.