¿Por qué necesito personalizar el teclado?
Puede usar la configuración estándar, pero a veces los cambios hacen posible escribir más rápido (esto, por supuesto, no es una impresión a ciegas, pero aún así), cometer menos errores, cambiar el diseño menos ...
¿Por qué quería cambiar mi teclado?
En primer lugar, cuando comencé a usarlo vim
como editor principal, me di cuenta de que no quería llegar cada vez ESC
. Además, escribí principalmente en Python, así que ;
presioné con mucha menos frecuencia :
y la vim
diferencia se hizo más pronunciada.
En segundo lugar, después de un tiempo comencé a usar combinaciones de Vimov para navegar en el navegador, luego el administrador de ventanas de mosaico i3
, donde también se usaban, y quería cambiar a todas partes (en lugar de las flechas habituales, por ejemplo, en el administrador de archivos).
En tercer lugar, cuando empecé a escribir notas sobre TeX
en vim
, me di cuenta de que realmente yo podría simplificar y acelerar este proceso; Si los diseños en inglés y ruso son más similares entre sí, entonces puedo ingresar los mismos caracteres (por ejemplo, punto, coma, comillas, dólar) de la misma manera. Además, a menudo tiene que cambiar el idioma, por lo que debe hacerlo de manera rápida, confiable y conveniente.
Configuración del interruptor de diseño
Bueno, empecemos. Primero, descubramos cómo puede configurar un cambio de distribución del teclado.
La primera manera Puede usar algún programa, por ejemplo gnome-tweaks
:
aquí podemos elegir una de las opciones que ofrecen los desarrolladores.

Lo principal es que no podemos crear nuestra propia versión. Aprendamos a hacer eso también.
.
, , .
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 ] };
, .
Del mismo modo, puede agregar una quinta capa, aunque hasta ahora personalmente no siento ninguna necesidad: la tercera es suficiente.
Una versión interesante de BackSpace al final
¿Y tal vez lo suficiente como para llegar muy lejos en la esquina más alejada del teclado?
Ponerlo BackSpace
en $mod3+Space
( $mod3
nuestro tercer nivel de modificador)!
key <SPCE> { [ space, space, BackSpace, BackSpace ] };
PD
Todas las configuraciones son, en principio, aplicables a cualquier distribución de Linux que use X.
Las configuraciones completas se pueden encontrar en GitHub .
Esta publicación se ha convertido para mí en un punto de partida para comprender cómo se puede y se debe configurar el teclado.