为什么需要自定义键盘?
您可以使用标准设置,但是有时所做的更改可以使键入速度更快(当然,这不是盲目打印,但仍然可以),减少错误,减少布局切换...
为什么要更换键盘?
首先,当我开始使用它vim
作为主要编辑器时,我意识到我不想每次都接触到它ESC
。另外,我主要使用python编写程序,因此;
按下的频率比少得多:
,并且vim
差异变得更加明显。
其次,过了一会儿我开始使用Vimov组合在浏览器中进行导航,然后是平铺窗口管理器i3
(也使用了它们),我想在任何地方切换到它们(而不是在文件管理器中使用通常的箭头)。
第三,当我开始写笔记上TeX
的vim
,我意识到,我真的可以简化和加速这一进程; 如果英语和俄语的布局彼此更相似,那么我可以以相同的方式输入相同的字符(例如,句号,逗号,引号,美元)。另外,您通常必须更改语言,因此您需要快速,可靠且方便地进行此操作。
布局开关设置
好吧,让我们开始吧。首先,让我们弄清楚如何配置键盘布局更改。
第一种方式。您可以使用某些程序,例如gnome-tweaks
:
在这里,我们可以选择开发人员提供的选项之一。

最主要的是,我们无法创建自己的版本。让我们也学习这样做。
.
, , .
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 ] };
, .
同样,您可以添加第五层,尽管到目前为止我个人感觉没有任何需要-第三层就足够了。
最后一个有趣的BackSpace版本
也许足以触及键盘的远方?
把它BackSpace
上$mod3+Space
($mod3
我们的第三级改性剂)!
key <SPCE> { [ space, space, BackSpace, BackSpace ] };
聚苯乙烯
原则上,所有设置都适用于使用X的任何Linux发行版。
完整的配置可以在GitHub上找到。
对我而言,这篇文章已成为了解如何以及应该如何配置键盘的起点。