Por que preciso personalizar o teclado?
VocĂȘ pode usar as configuraçÔes padrĂŁo, mas Ă s vezes as alteraçÔes tornam possĂvel digitar mais rapidamente (isso, Ă© claro, nĂŁo Ă© uma impressĂŁo cega, mas ainda assim), cometem menos erros, alteram menos o layout ...
Por que eu quis mudar meu teclado?
Primeiro, quando comecei a usĂĄ-lo vim
como editor principal, percebi que nĂŁo queria acessĂĄ-lo a cada vez ESC
. Além disso, eu escrevi principalmente em python, então ;
pressionei com muito menos frequĂȘncia :
e a vim
diferença se tornou mais acentuada.
Em segundo lugar, depois de um tempo, comecei a usar combinaçÔes do Vimov para navegar no navegador, depois o gerenciador de janelas lado a lado i3
, onde elas também eram usadas, e eu queria mudar para elas em qualquer lugar (em vez das setas usuais, por exemplo, no gerenciador de arquivos).
Em terceiro lugar, quando comecei a escreve notas no TeX
no vim
, eu percebi que eu poderia realmente simplificar e acelerar este processo; se os layouts em inglĂȘs e russo forem mais parecidos entre si, posso inserir os mesmos caracteres (por exemplo, ponto final, vĂrgula, aspas, dĂłlar) da mesma maneira. AlĂ©m disso, vocĂȘ geralmente precisa alterar o idioma, portanto, Ă© necessĂĄrio fazer isso de forma rĂĄpida, confiĂĄvel e conveniente.
Configuração do interruptor de layout
Bem, vamos começar. Primeiro, vamos descobrir como vocĂȘ pode configurar uma alteração no layout do teclado.
O primeiro caminho. VocĂȘ pode usar algum programa, por exemplo gnome-tweaks
:
aqui podemos escolher uma das opçÔes oferecidas pelos desenvolvedores.

O principal é que não podemos criar nossa própria versão. Vamos aprender a fazer isso também.
.
, , .
Alt
( AltGr
):
$ setxkbmap -layout us,ru -option grp:toggle
, , ? /usr/share/X11/xkb/symbols/
. /usr/share/X11/xkb/symbols/group
. :
partial modifier_keys
xkb_symbols "toggle" {
virtual_modifiers AltGr;
key <RALT> {
symbols[Group1] = [ ISO_Next_Group ],
virtualMods = AltGr
};
};
, , , , , .
AltGr
: AltGr
, Shift+AltGr
â .
- , :
$ setxkbmap -layout us,ru -print
- (pc105
):
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+ru:2+inet(evdev)" };
xkb_geometry { include "pc(pc105)" };
};
~/.config/xkb/config
.
/usr/share/X11/xkb/symbols/group
CapsLock
, , us
ISO_First_Group
, ru
â ISO_Second_Group
.
key <CAPS> { [ ISO_First_Group, ISO_Last_Group ] };
, <CAPS>
ISO_First_Group
, Shift
â ISO_Last_Group
.
xkb_symbols
:
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_geometry { include "pc(pc105)" };
xkb_symbols "my" {
include "pc+us+ru:2+inet(evdev)"
key <RALT> { [ ISO_First_Group, ISO_Last_Group ] };
};
};
, . :
$ xkbcomp $HOME/.config/xkb/config $DISPLAY
.
, , (, TeX
), , , , , , . , .
â .
. , . /usr/share/X11/xkb/symbols/
. us
:
key <AC10> { [ semicolon, colon ] };
.
ESC
CapsLock
ESC
CapsLock
. capslock
:
hidden partial modifier_keys
xkb_symbols "swapescape" {
key <CAPS> { [ Escape ] };
key <ESC> { [ Caps_Lock ] };
};
hidden partial modifier_keys
xkb_symbols "escape" {
key <CAPS> { [ Escape ] };
};
partical
â , .
include "swapescape"
, .
Alt
Win
, , Alt
Win
, i3wm
, Win
, , Alt
(, ...).
? , - - , , .
: level3
, level5
. Shift
.
, CapsLock
h, j, k, l . .
( ESC
, : ):
key <CAPS> { [ ISO_Level3_Shift ] };
, :
name[group1] = "English (US)";
name[group2] = "Russian";
key <CAPS> {
symbols[group1] = [ ISO_Level3_Shift ],
symbols[group2] = [ Caps_Lock ]
}
h, j, k, l. â , . <AC06>
,⊠<AC09>
. . :
key <AC06> { [ h, H, KP_Left ] };
key <AC07> { [ j, J, KP_Down ] };
key <AC08> { [ k, K, KP_Up ] };
key <AC09> { [ l, L, KP_Right ] };
, â , â .
.
, CapsLock
â ESC
.
xcape
, , , . : , .
, , CapsLock
ESC
, .
$ xcape -t < > -e " = "
500 . :
$ xcape -t 500 -e "ISO_Level3_Shift=Escape"
TeX
, , . . , , , , , ...
:
.
:
( /, , , ):
key <AD03> {
type = "ALPHABETIC",
type[group2] = "FOUR_LEVEL",
symbols[group2] = [Cyrillic_u, Cyrillic_U, Cyrillic_yu, Cyrillic_YU]
};
, .
, ( ), , . .
: , , .
, (, - , , ).
:
key <AD11> {
type[group2]="FOUR_LEVEL",
symbols[group2]=[Cyrillic_ha, Cyrillic_HA, bracketleft, braceleft]
};
key <AD12> {
type[group2]="FOUR_LEVEL",
symbols[group2]=[Cyrillic_hardsign, Cyrillic_HARDSIGN, bracketright, braceright]
};
key <AC10> {
type[group2]="FOUR_LEVEL",
symbols[group2]=[Cyrillic_zhe, Cyrillic_ZHE, colon, semicolon]
};
key <AC11> {
type[group2]="FOUR_LEVEL",
symbols[group2]=[Cyrillic_e, Cyrillic_E, apostrophe, quotedbl]
};
key <AB08> {
type[group2]="FOUR_LEVEL",
symbols[group2]=[Cyrillic_be, Cyrillic_BE, comma, less]
};
key <AB09> {
type[group2]="FOUR_LEVEL",
symbols[group2]=[Cyrillic_yu, Cyrillic_YU, period, greater]
};
, .
key <AB10> {
symbols[group2]=[slash, question]
};
, , , .
key <AE03> { [ 3, numbersign, number, apostrophe ] };
key <AE04> { [ 4, dollar ] };
key <AE06> { [ 6, asciicircum ] };
key <AE07> { [ 7, ampersand ] };
, .
Da mesma forma, vocĂȘ pode adicionar uma quinta camada, embora atĂ© agora eu pessoalmente nĂŁo sinta necessidade - a terceira Ă© suficiente.
Uma versĂŁo interessante do BackSpace no final
E talvez o suficiente para chegar muito longe no canto mais distante do teclado?
Coloque-o BackSpace
no $mod3+Space
( $mod3
nosso modificador de terceiro nĂvel)!
key <SPCE> { [ space, space, BackSpace, BackSpace ] };
PS
Todas as configuraçÔes sĂŁo, em princĂpio, aplicĂĄveis ââa qualquer distribuição Linux usando X.
ConfiguraçÔes completas podem ser encontradas no GitHub .
Este post tornou- se um ponto de partida para entender como o teclado pode e deve ser configurado.