لماذا أحتاج إلى تخصيص لوحة المفاتيح؟
يمكنك استخدام الإعدادات القياسية ، ولكن في بعض الأحيان تجعل التغييرات من الممكن الكتابة بشكل أسرع (بالطبع ، هذه ليست طبعة عمياء ، ولكنها لا تزال) ، أو ارتكاب أخطاء أقل ، أو تبديل التنسيق أقل ...
لماذا أردت تغيير لوحة المفاتيح الخاصة بي؟
أولاً ، عندما بدأت في استخدامه vim
كمحرر رئيسي ، أدركت أنني لا أريد الوصول في كل مرة ESC
. بالإضافة إلى ذلك ، كتبت بشكل رئيسي بلغة الثعبان ، لذلك ;
ضغطت أقل كثيرًا من ذلك :
، 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 ] };
ملاحظة
جميع الإعدادات ، من حيث المبدأ ، قابلة للتطبيق على أي توزيع Linux باستخدام X.
يمكن العثور على التكوينات الكاملة على GitHub .
أصبحت هذه المشاركة بالنسبة لي نقطة انطلاق لفهم كيفية تكوين لوحة المفاتيح وكيف يمكن تكوينها.