XKB_DEFAULT_OPTIONS = grp:shift_caps_switch具有两个以上的键盘布局

时间:2018-07-25 00:16:58

标签: linux keyboard keyboard-shortcuts user-input keyboard-layout

如果设置了此选项,则只需分别按下CapsLock和Shift + CapsLock,即可切换到第一(美国)和第二(ru)布局。
我对这种行为感到满意,因为它非常符合人体工程学并且不会分散注意力。

但是,此外,我还需要第三(pl)和第四(ua)布局,并且看起来它们没有预定义的快捷方式,也没有启用它的(已记录文档)选项。

我不想更改CapsLock→我们,Shift + CapsLock→ru,行为,理想情况下Ctrl + CapsLock快捷方式应在辅助(pl和ua)布局之间循环。
绑定它的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

我相信您正在寻找toggle选项。

XKB_DEFAULT_OPTIONS=grp:shift_caps_toggle 

您也可以将其传递给setxkb命令

setxkbmap -rules xorg -model $model -layout "us,ru,pl,ua" \
 -option "grp:shift_caps_toggle"

文档相当杂乱,但是您可以使用the xorg documentationsource description

诚然,如评论中所述,这不理想,但是设置两个键组应该很简单。

# This is the primary set
setxkbmap -rules xorg -model $model -layout "us,ru" \
 -option "grp:shift_caps_toggle"
# This is the secondary 
setxkbmap -rules xorg -model $model -layout "pl,ua" \
 -option "grp:ctrl_caps_toggle"

答案 1 :(得分:0)

最后,我切换到WM,并使用以下配置进行了正确的设置:

input "1:1:AT_Translated_Set_2_keyboard" {
    xkb_options caps:none,shift:both_capslock,compose:ralt
    xkb_layout us
    xkb_numlock enabled
}

bindcode Ctrl+Shift+66 \
    input "1:1:AT_Translated_Set_2_keyboard" xkb_layout ua; \
    input "1:1:AT_Translated_Set_2_keyboard" xkb_options caps:none,shift:both_capslock,compose:ralt

bindcode      Shift+66 \
    input "1:1:AT_Translated_Set_2_keyboard" xkb_layout ru; \
    input "1:1:AT_Translated_Set_2_keyboard" xkb_options caps:none,shift:both_capslock,compose:ralt

bindcode       Ctrl+66 \
    input "1:1:AT_Translated_Set_2_keyboard" xkb_layout pl; \
    input "1:1:AT_Translated_Set_2_keyboard" xkb_options caps:none,shift:both_capslock,lv3:ralt_switch_multikey

bindcode            66 \
    input "1:1:AT_Translated_Set_2_keyboard" xkb_layout us; \
    input "1:1:AT_Translated_Set_2_keyboard" xkb_options caps:none,shift:both_capslock,compose:ralt

在这里,我禁用了主要CapsLock,因此它开始发出66个键码,然后我将其与其他键的组合绑定到相应的键盘布局。

此外,xkb_options的设置只是将RightAlt绑定为composeuaru上的us键和{{ 1}}符号访问lv3布局上的键。

CapsLock功能仍可以通过pl选项访问。