xkb: Use uma tecla para alterar o nível de turno sem aparecer como um modificador

3

Eu gostaria de configurar o XKB para usar Caps Lock como uma maneira de produzir chaves diferentes, mas eu não quero que ele apareça como um modificador. Por exemplo:

  • F1 produz F21 keypress
  • Caps Lock + F1 produz F1 keypress (ou seja, sem modificadores)
  • Shift + Caps Lock + F1 produz Shift + F1 keypress (apenas Shift conta como um modificador)

Eu consegui parcialmente isso atribuindo Caps Lock para Hyper_R , mas o problema é que isso só funciona se Hyper_R também estiver definido como um modificador, por exemplo. %código%. Isso significa Shift + Caps Lock + F1 na verdade produz Mod3 , então qualquer tecla de atalho que esteja ouvindo Shift + Mod3 + F1 não funciona porque não usa t como Shift + F1 estando presente.

Existe alguma maneira que eu possa usar Caps Lock para alterar o comportamento de certas teclas, sem realmente ter que aparecer para uma aplicação X como uma tecla modificadora?

Os documentos que li sugerem que isso é possível com a configuração avançada do XKB, mas não consigo encontrar nenhum detalhe.

    
por Malvineous 16.09.2014 / 08:00

1 resposta

3

Desculpe, isso é antigo, mas talvez seja tarde demais para você, outra pessoa pode achar essa dica útil:

No seu types , adicione:

type "CapsShiftSpecial" {
    modifiers= Shift+Hyper;

    map[Shift]= Level2;
    preserve[Shift]= Shift;

    map[Hyper]= Level3;

    map[Shift+Hyper]= Level4;
    preserve[Shift+Hyper]= Shift;

    level_name[Level1]= "Base";
    level_name[Level2]= "Shift";
    level_name[Level3]= "Hyper";
    level_name[Level4]= "Shift Hyper";
};

Em seguida, no arquivo symbols , tenha algo como

key <FK01>  { type[group1]="CapsShiftSpecial",
              symbols[group1]=[ F21, F21, F1, F1 ]};

Um programa que monitora as teclas ( xev ou emacs , por exemplo) verá os pressionamentos de teclas como se você tivesse pressionado F21 , Shift + F21 , F1 e Shift + F1 .

    
por 25.06.2015 / 00:20