的Linux 键盘设定

为什么需要自定义键盘?


您可以使用标准设置,但是有时所做的更改可以使键入速度更快(当然,这不是盲目打印,但仍然可以),减少错误,减少布局切换...


为什么要更换键盘?


首先,当我开始使用它vim作为主要编辑器时,我意识到我不想每次都接触到它ESC另外,我主要使用python编写程序,因此;按下的频率比少得多:,并且vim差异变得更加明显。


其次,过了一会儿我开始使用Vimov组合在浏览器中进行导航,然后是平铺窗口管理器i3(也使用了它们),我想在任何地方切换到它们(而不是在文件管理器中使用通常的箭头)。


第三,当我开始写笔记上TeXvim,我意识到,我真的可以简化和加速这一进程; 如果英语和俄语的布局彼此更相似,那么我可以以相同的方式输入相同的字符(例如,句号,逗号,引号,美元)。另外,您通常必须更改语言,因此您需要快速,可靠且方便地进行此操作。


布局开关设置


好吧,让我们开始吧。首先,让我们弄清楚如何配置键盘布局更改。


  • 第一种方式。您可以使用某些程序,例如gnome-tweaks
    在这里,我们可以选择开发人员提供的选项之一。
    Ubuntu的`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, ruISO_Second_Group.



key <CAPS> { [ ISO_First_Group, ISO_Last_Group ] }; 

, <CAPS> ISO_First_Group, ShiftISO_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 ] };

, — , — .



.
, CapsLockESC.


xcape, , , . : , .


, , CapsLock ESC, .



$ xcape -t <  > -e " = "

500 . :


$ xcape -t 500 -e "ISO_Level3_Shift=Escape"


TeX, , . . , , , , , ...


:


  1. .
    :



    ( /, , , ):


    key <AD03> {                                            
    type = "ALPHABETIC",
    type[group2] = "FOUR_LEVEL",
    symbols[group2] = [Cyrillic_u, Cyrillic_U, Cyrillic_yu, Cyrillic_YU]
    };

    , .
    , ( ), , . .


  2. : , , .
    , (, - , , ).
    :


    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找到


对我而言,这篇文章已成为了解如何以及应该如何配置键盘的起点。

Source: https://habr.com/ru/post/undefined/


All Articles