Mapeamento transparente de uma chave modificada (com xkb)

2

Estou tentando simular teclas numéricas do teclado no teclado principal, mas estou lutando com xkb.

Como faço para converter uma tag < LWIN > + < AD07 > em uma 'esquerda'? (AKA Super + u)

Ele precisa ser legal com Shift, Ctrl (e idealmente Alt também).

O mais próximo que eu vim foi:

    type "wkafk1" {
        modifiers = Shift+Super;
        map[Shift]= Level2;
        map[Super] = Level3;
        level_name[Level1] = "Base";
        level_name[Level2] = "Shift"; 
        level_name[Level3] = "Fn"; 
    };

...
    key <AD07> {
        type= "wkafk1",
        symbols[Group1]= [               u,               U, Left ]
    };

Mas Shift + Super + u não é tratado.

Este também estava perto:

    type "wkafk1" {
        modifiers = Shift+Super;
        map[Shift]= Level2;
        map[Super] = Level3;
        map[Shift+Super]=Level4;
        level_name[Level1] = "Base";
        level_name[Level2] = "Shift"; 
        level_name[Level3] = "Fn"; 
        level_name[Level4] = "Fn Shift";
    };
...
    key <AD07> {
        type= "wkafk1",
        symbols[Group1]= [               u,               U, Left, Shift+Left ]
    };

Mas não compilou porque não sei como emitir um símbolo modificado (Shift + Left não é permitido).

Preciso de um statetment 'interpretar' com action = RedirectKey (...)?

    
por Peter L 14.10.2015 / 15:13

1 resposta

1

Graças a algumas arte anterior , aqui estão os passos:

  1. xkbcomp $ DISPLAY custom.xkb
  2. Edite o custom.xkb ...
  3. Adicione isto ao final da seção: xkb_types "..." {

    type "wkafk1" {
      modifiers = Shift+Super;
      map[Shift] = level2;
      map[Super] = level3;
      map[Super+Shift] = level3;
      level_name[Level1] = "Base";
      level_name[Level2] = "Caps";
      level_name[Level3] = "Arrows";
    };
    
  4. Substituir a definição de chave < AD07 > na seção: xkb_symbols "..." {

    key <AD07> {
        type= "wkafk1",
        symbols[Group1]= [ u, U, NoSymbol],
        actions[Group1]=[ NoAction(), NoAction(), RedirectKey(key=<LEFT>,clearmods=Super)]
    };
    
  5. xkbcomp custom.xkb $ DISPLAY

Isso funciona com combinações de teclas Shift e Ctrl.

    
por 21.10.2015 / 15:08

Tags