Gostaria de fazer uma pergunta sobre as configurações do xkb.
Considere o seguinte cenário. Eu quero dois layouts de teclado e uma maneira de alternar facilmente entre eles. Vamos considerar os EUA e os EUA (dvorak).
Para mudar, quero usar a opção xkb grp:shifts_toggle
, o que torna
ShiftR + ShiftL := ISO_Prev_Group
e ShiftL + ShiftR := ISO_Next_Group
Para obter o comportamento desejado, executo o comando setxkbmap -layout us,"us(dvp)" -option grp:shifts_toggle
que define corretamente a opção desejada (testado com setxkbmap -print
).
O problema vem com o ambiente de desktop. Em particular sob openbox tudo funciona fora da caixa enquanto sob gnome a opção fica definida mas não funciona.
De qualquer forma, quando eu emito o comando no gnome, as chaves são corretamente remapeadas, ou seja, o ISO_Next(Prev)_Group
é acionado, mas não entra em vigor no sistema (testei-o com xev).
Eu acho que o gnome usa algum outro utilitário que depende do xkb, mas o substitui de alguma forma.
Para completar, dou minhas configurações de xkb antes de qualquer comando ser emitido.
>> setxkbmap -print -verbose 10
Setting verbose level to 10
locale is C
Trying to load rules file ./rules/evdev...
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Applied rules from evdev:
rules: evdev
model: pc105
layout: us,us
variant: altgr-intl,
options: terminate:ctrl_alt_bksp
Trying to build keymap using the following components:
keycodes: evdev+aliases(qwerty)
types: complete
compat: complete
symbols: pc+us(altgr-intl)+us:2+inet(evdev)+terminate(ctrl_alt_bksp)
geometry: pc(pc105)
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us(altgr intl)+us:2+inet(evdev)+terminate(ctrl_alt_bksp)" };
xkb_geometry { include "pc(pc105)" };
};
EDITAR:
Parece que definir grp:shifts_toggle
diretamente no arquivo de configuração em xorg.cong.d faz a combinação funcionar pelo menos em ISO_Next_Group
. No entanto ISO_Prev_Group still is still not effective
.