Как иметь модификатор multipl 'level 3' с помощью xkb

Как иметь модификатор multipl 'level 3' с помощью xkb

Я пытаюсь улучшить раскладку клавиатуры xkb, используя 4 уровня по умолчанию (или, лучше сказать, 2 уровня? Я не очень разбираюсь в терминах).

И когда я открываю скобки, я обнаружил, что xkb очень плохо документирован (или я не знаю, как искать). Некоторые говорят об уровнях, некоторые о группах, некоторые определяют уровни как shift, являющийся первым, AltGr, второй, а другие считают базовый символ первым, а затем увеличивают каждую комбинацию. Я имею в виду, что есть много несоответствий..)

В любом случае, вот 4 «комбинации» клавиш по умолчанию Mна некоторых клавиатурах:

// Pressing   <M> <Shift+M> <AltGr+M> <Shift+AltGr+M>
key <AB07> { [ m ,    M    ,    mu   ,      mu       ] }; // m M µ µ

Можно ли добавить в смесь другие модификаторы?

Например, с одним дополнительным модификатором, например, R CtrlI, может быть 6 комбинаций:

// Pressing   <M> <Shift+M> <AltGr+M> <AltGr+Shift+M> <RCtrl+M> <RCtrl+Shift+M>
key <AB07> { [ m ,    M    ,    mu   ,    mu         , comma  , semicolon] };// m M µ µ , ;

Или даже 8 комбинаций со всеми тремя модификаторами.
И на самом деле, похоже, что в некоторых symbolфайлах уже есть 8-уровневое сопоставление с ключевым словомEIGHT_LEVEL

Однако я не собираюсь получать 42 комбинации для одного ключа.

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

// Pressing   <M> <Shift+M> <AltGr+M>  <RCtrl+M>  <RWin>+M
key <AB07> { [ m ,    M    ,  comma  , semicolon ,    µ   ] }; // m M , ; µ

Я бы также хотел сопоставить других персонажей или даже движения.(стрелки, домой/в конец, страница вверх/вниз)с другими неиспользуемыми модификаторами (capslock, numlock)

Как я могу это сделать ?

Большое спасибо.

решение1

Там вы можете использовать groupдля достижения цели «два нажатия клавиши»:

key <AB07> { 
type[group1]= "FOUR_LEVEL",
type[group2]= "TWO_LEVEL_BIS",
symbols[group1]= [ m ,    M    ,  comma  , NoSymbol],
symbols[group2]= [ semicolon ,    µ ] 
};

Теперь вам необходимо определить type TWO_LEVEL_BISдля использования нужных вам модификаторов.

Стоит знать, что Mode_switchтакое ключ, который увеличивает фактическую группу, поэтому взгляните на его определение.

Связанный контент