Primeiro, desculpe minha ignorância sobre X e XKB; Eu tenho tentado hackear uma solução na esperança de conseguir o que quero sem exigir uma compreensão detalhada dela.
Estou tentando criar um mapa de teclado XKB no Ubuntu 12.04 que me permite estipular qual das duas teclas Shift constitui o modificador Level2. Especificamente, a 4tecla deve produzir apenas a $
quando o turno direito é pressionado, não o esquerdo.
Minha leitura até agora:
- http://www.charvolant.org/~doug/xkb/html/node5.html
- http://people.uleth.ca/~daniel.odonnell/Blog/custom-keyboard-in-linuxx11
- http://www.x.org/releases/X11R7.5/doc/input/XKB-Enhancing.html
- Muita pesquisa!
Tentei definir um tipo personalizado e depois referi-lo explicitamente em um mapa de símbolos:
/usr/share/X11/xkb/types/mbfisher
:
default xkb_types "mbfisher" {
type "RIGHT_SHIFT" {
modifiers = None+Shift_R;
map[None] = Level1;
map[Shift_R] = Level2;
};
}
/usr/share/X11/xkb/symbols/mbfisher
:
default
partial alphanumeric_keys
xkb_symbols "basic" {
name[Group1]= "mbfisher";
key <AE04> {
type= "RIGHT_SHIFT",
symbols[Group1]= [ 4, dollar ]
};
};
Depois, seleciono o mapa com a GUI do Ubuntu Keyboard Layout.
Obviamente, isso desativa o teclado alfanumérico além da 4tecla, mas o cifrão ainda pode ser digitado com qualquer tecla Shift.
Estou consciente de escrever uma pergunta massiva com muitas informações inúteis, então vou parar por aqui; por favor, peça qualquer coisa que eu tenha perdido.
Alguma ideia?
# xmodmap -verbose -e "clear shift" ! 1: clear shift clear shift ! ! executing work queue ! clear shift
Aqui está o que finalmente funcionou! Eu usei
xmodmap
e um~/.Xmodmap
arquivo em vez de configuração xkb.~/.Xmodmap
:As duas linhas comentadas (olhando para
!
) mostram os títulos das colunas antes e depois das minhas alterações. Isso me permitiu especificar a coluna 2 como Shift_L e a coluna 3 como Shift_R, pois mapeei shift_R como Mode_switch.As alterações são feitas executando:
setxkbmap us
define o mapa padrão dos EUA para trabalhar com uma lista limpa exmodmap
anexa as alterações personalizadas.Quando implementado o
!
,@
,#
,$
e%
personagens só pode ser digitado com a tecla shift direita, e^
,&
,*
,(
e)
só pode ser digitado com a tecla shift esquerda.Agora posso continuar mapeando todas as teclas no lado esquerdo do teclado para serem modificadas apenas pela tecla shift direita (ou seja, os caracteres alfabéticos e suas modificações em maiúsculas) e vice-versa; esta solução significa que eu só preciso remapear o lado esquerdo.
Outros links úteis encontrados ao longo do caminho:
Muito obrigado a @Trudbert por me levar a caminho da resposta!
fonte