Não é uma resposta direta, mas a melhor maneira de abordar isso seria ver quais eventos estão sendo disparados quando você pressiona as combinações nas quais está interessado. Para fazer isso, instale xev e tente as várias combinações.
Eu remapeei a chave CapsLock para funcionar assim:
CapsLock + J = Tecla de seta para a esquerda
CapsLock + K = Tecla de seta para baixo
etc.
Eu usei o xmodmap (como explicado em Mapeamento Super + hjkl para as teclas de seta abaixo de X ).
O problema é que não consigo fazer as seguintes combinações de teclas funcionar:
Esperado: CapsLock + Deslocamento + J = Deslocamento + Tecla de seta esquerda
Actual: CapsLock + Deslocamento + J = não faz nada.
etc.
Você tem alguma idéia de como fazer isso funcionar? Obrigado.
Não é uma resposta direta, mas a melhor maneira de abordar isso seria ver quais eventos estão sendo disparados quando você pressiona as combinações nas quais está interessado. Para fazer isso, instale xev e tente as várias combinações.
Eu estava tendo o mesmo problema e perguntei sobre AskUbuntu . O problema pode ser resolvido por:
edite /usr/share/X11/xkb/types/iso9995
e adicione preserve[Shift+LevelThree] = Shift;
de modo que o conteúdo do arquivo seja semelhante:
partial default xkb_types "default" {
// A key type which can be used to implement
// an ISO9995-style level-three shift.
virtual_modifiers LevelThree;
type "THREE_LEVEL" {
modifiers = Shift+LevelThree;
map[None] = Level1;
map[Shift] = Level2;
map[LevelThree] = Level3;
map[Shift+LevelThree] = Level3;
preserve[Shift+LevelThree] = Shift;
level_name[Level1] = "Base";
level_name[Level2] = "Shift";
level_name[Level3] = "Level3";
};
};
Edite o arquivo de layout de teclado em /usr/share/X11/xkb/symbols/
da seguinte forma (adaptando-o às suas próprias necessidades)
key <AC06> { type="THREE_LEVEL", [ h, H, Left ] };
key <AC07> { type="THREE_LEVEL", [ j, J, Down ] };
key <AC08> { type="THREE_LEVEL", [ k, K, Up ] };
key <AC09> { type="THREE_LEVEL", [ l, L, Right ] };
e não como
....
key { [ j, J, Down, Down ] };
....
Seu problema pode ser que capslock e shift são quase os mesmos em seu hardware de teclado, pode ser que sua tecla capslock apenas acione permanentemente a tecla Shift.
Se eu entendi bem como funciona, tente no arquivo de especificação do teclado para explícito dizer o que você quer, por exemplo, para ele mudou de posição, por exemplo
key { [ j, J, Down, Next ] };
key { [ k, K, Up, Prior ] };
para ter PageDn e PageUp --- eu não posso chupar agora, mas deve funcionar.
Eu testei muitos métodos sugeridos, mas achei isso muito mais simples de implementar e entender. Crie o arquivo nano ~/.my_keyboard
, cole o código abaixo (altere o mapeamento de acordo com o seu plano) e execute xmodmap ~/.my_keyboard
.
clear lock
keycode 66 = Mode_switch
keysym h = h H Left Left hstroke Hstroke
keysym j = j J Down Down dead_hook dead_horn
keysym k = k K Up Up lstroke ampersand
keysym l = l L Right Right lstroke Lstroke
Isso desativa a funcionalidade padrão Caps Lock
e remapeia a chave para o modificador Mode_switch
. Para redefinir as configurações do xmodmap, você pode executar setxkbmap
.
Aqui está a solução original que eu adicionei.