“1. Então, o que o modificador de 5º nível faz? ”
Escolhe o quinto nível. O modificador de segundo nível (apenas o turno normal) escolhe o segundo nível, e o terceiro nível escolhe o terceiro nível.
A razão pela qual o modificador de 5º nível escolhe o quinto nível do quarto nível (logo após o modificador de 3º nível) é que esses três modificadores podem ser combinados de maneiras diferentes para escolher oito nível diferente (isso inclui não usar nenhum dos modificadores, o que é apenas pressionando uma tecla sem tais modificadores). São oito combinações desde 2 ↑ 3 = 8. Para os dois primeiros modificadores existem quatro combinações:
- Sem modificadores (nível 1)
- Modificador de 2º nível, a.k.a. shift (nível 2)
- modificador de nível 3 (nível 3)
- 2º + 3º modificador (nível 4)
Adicionar o terceiro modificador (5º nível) adiciona mais quatro níveis.
“2. Como faço para configurar 5 ou 6 caracteres diferentes? de uma única chave (modificada por Shift, Alt Gr e Right Ctrl por exemplo) ”
Primeiro, você precisa de um layout que use cinco ou mais caracteres por chave. Você pode escolher um layout existente, mas se quiser simplesmente adicionar mais níveis para o layout que você está usando atualmente, que pode não ser ótimo. Por exemplo, existe o layout de teclado Neo († 1), mas é "otimizado para o idioma alemão", então não é tão bom para a maioria Falantes de inglês.
Ainda assim, pode ser instrutivo ver quais as teclas que o Neo tem escolhido para o modificador de nível 5.
Neo aparentemente chama o modificador de nível 5 para "Mod4". Então, como você pode ver
usa a chave à direita da tecla shift esquerda ( LSGT
) e a tecla
tecla alt direita / AltGr
chave. Isso está em um teclado europeu (105 teclas)
que em comparação com o teclado dos EUA (104 teclas) tem um deslocamento estreito à esquerda e
tecla de retorno alta e fina. Para um layout de teclado baseado no
Teclado dos EUA pode ser necessário - ou preferir - escolher outras teclas.
Escolhendo uma tecla modificadora de nível 5
Na resposta do sup, ele escolhe usar o Xmodmap. Hoje em dia ferramentas como
O Setxkbmap é recomendado sobre o Xmodmap. Xkb vem com muitos pré-definidos
opções para coisas como escolher o modificador de nível 5. Se você consultar
man xkeyboard-config e procure por lv5
você encontrará estas opções:
┌──────────────────────┬───────────────────────────────────────────────────┐
│ Option │ Description │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:lsgt_switch_lock │ <Less/Greater> chooses 5th level; acts as onetime │
│ │ lock when pressed together with another 5th level │
│ │ chooser │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:ralt_switch_lock │ Right Alt chooses 5th level; acts as onetime lock │
│ │ when pressed together with another 5th level │
│ │ chooser │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:lwin_switch_lock │ Left Win chooses 5th level; acts as onetime lock │
│ │ when pressed together with another 5th level │
│ │ chooser │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:rwin_switch_lock │ Right Win chooses 5th level; acts as onetime lock │
│ │ when pressed together with another 5th level │
│ │ chooser │
└──────────────────────┴───────────────────────────────────────────────────┘
Portanto, as opções documentadas são a tecla LSGT
, a tecla direita
chave, a tecla direita do Windows e a tecla esquerda do Windows. Como vimos,
Neo usa as duas primeiras opções.
Digamos que você queira usar a opção lv5:ralt_switch_lock
com algum layout.
Este comando configura o layout us
com essa chave modificadora de nível 5:
setxkbmap -option "lv5:ralt_switch_lock" us
Portanto, para qualquer uma das opções documentadas em man xkeyboard-config
,
use isso como um argumento para -option
ao usar o Setxkbmap.
Caso essas opções não sejam suficientes e você queira definir outra chave
para ser o modificador de nível 5, é instrutivo olhar para o
declarações para essas opções. Eles parecem estar em
%código%. A declaração para
/usr/share/X11/xkb/symbols/level5
é assim:
partial modifier_keys
xkb_symbols "ralt_switch_lock" {
include "level5(lock)"
key <RALT> {
type[Group1] = "EIGHT_LEVEL",
symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift,
ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
};
};
O lado direito de lv5:ralt_switch_lock
declara qual chave ou caractere cada
nível da chave deve produzir. Isso usa todos os oito possíveis
níveis desde que é suposto bloquear o modificador de nível 5 quando pressionado
juntamente com outra chave shift de nível 5. Então os níveis 5-8 emitem
symbols[Group1]
, pois todos esses níveis são acessados mantendo pressionados
o deslocamento de nível 5 e alguma combinação das outras teclas de deslocamento (nenhum
todos eles). Se você quer apenas o comportamento de mudança e não também o
comportamento lock-if-two-pressed, você pode fazer uma declaração mais simples
o mesmo arquivo):
// The right Alt key (while pressed) chooses the fifth shift level.
partial modifier_keys
xkb_symbols "ralt_switch" {
key <RALT> {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level5_Shift ]
};
include "level5(modifier_mapping)"
};
Adicionando níveis extras a um layout
Os layouts Xkb são bem modulares. Você pode incluir layouts e altere-os. Então podemos escolher um layout existente com menos de 5 níveis e adicione alguns níveis a ele.
Você pode criar novos layouts copiando o arquivo com seus layouts para
ISO_Level5_Lock
, ou onde quer que suas ferramentas Xkb estejam
para layouts. Mas isso requer privilégio sudo por isso não é o melhor
solução. Como alternativa, você pode copiar a estrutura de diretórios de /usr/share/X11/xkb/symbols/
e coloque seus layouts no diretório apropriado em xkb/
,
%código%. Então diga que você criou um arquivo xkb/
.
Para usar layouts definidos nesse arquivo, você pode usar o symbols/
opção de xkb-tree/symbols/my-layouts
e depois canalizar a saída para -print
. este
script de wrapper toma os layouts como entrada:
#!/bin/sh
# '-option ""' resets all options.
setxkbmap -option "" -layout "" \
-print |
xkbcomp -I"<path-to-project>/xkb-tree" - "$DISPLAY"
No que diz respeito ao ficheiro com o layout, digamos que queremos para expandir o layout “internacional dos EUA”, que usa quatro níveis. Primeiro de todos nós configuramos as teclas de deslocamento de nível 3 e nível 5 da mesma forma que Neo faz:
partial alphanumeric_keys
xkb_symbols "mine" {
// US international
include "us(intl)"
// Set up level 3 modifiers.
include "level3(modifier_mapping)"
include "level3(bksl_switch)"
include "level3(caps_switch)"
// Set up level 5 modifiers.
include "level5(modifier_mapping)"
include "level5(lsgt_switch)"
include "level5(ralt_switch)"
};
Agora queremos adicionar alguns caracteres extras.Vamos usar apenas os quatro primeiros
chaves de layouts Qwerty como um exemplo. Essas chaves são setxkbmap
to xkbcomp
, que
corresponde a Q
a R
. Primeiro precisamos fazer as chaves
capaz de usar até oito níveis:
key.type[Group1] = "EIGHT_LEVEL";
Para os primeiros quatro níveis, para não redefini-los,
nós os mapeamos para <AD01>
. Então nós adicionamos dois níveis. No nível 5 nós adicionamos
as setas <AD04>
(† 2). No nível 6, adicionamos as teclas de direção. Nosso
layout acaba ficando assim:
partial alphanumeric_keys
xkb_symbols "mine" {
// US international
include "us(intl)"
// Set up level 3 modifiers.
include "level3(modifier_mapping)"
include "level3(bksl_switch)"
include "level3(caps_switch)"
// Set up level 5 modifiers.
include "level5(modifier_mapping)"
include "level5(lsgt_switch)"
include "level5(ralt_switch)"
// Make the following keys capable of using eight levels.
key.type[Group1] = "EIGHT_LEVEL";
key <AD01> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
leftarrow, Left
] };
key <AD02> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
downarrow, Down
] };
key <AD03> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
uparrow, Up
] };
key <AD04> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
rightarrow, Right
] };
};
Para usá-lo, podemos usar o script wrapper que fizemos:
./setxkbmap-wrapper "my-layouts(mine)"
† 1: Neo é NoSymbol
em Xkb; ←↓↑→
.
† 2: Para encontrar os nomes simbólicos que o Xkb usa, procure por um arquivo
chamado de(neo)
. Deve estar sob um diretório chamado setxkbmap "de(neo)"
. Você
também pode usar nomes Unicode, por exemplo, keysymdef.h
para U + 2192.