如何使用键盘快捷键切换 Openbox 中的键盘布局?

如何使用键盘快捷键切换 Openbox 中的键盘布局?

我正在尝试在 Openbox DE 中通过键盘快捷键配置键盘布局切换。

$ cat /etc/default/keyboard 
XKBLAYOUT="us,ua,ru"
XKBVARIANT=",winkeys,"
BACKSPACE="guess"
XKBMODEL="pc105"
XKBOPTIONS="grp:alt_shift_toggle,grp:win_space_toggle,grp_led:scroll"

$ cat /etc/bash.bashrc | grep kblayout
source /home/user/.kblayout.sh

$ cat /home/user/.kblayout.sh 
#!/bin/bash
setxkbmap -layout us,ru,ua -option grp:lwin_space_toggle

$ setxkbmap -print -verbose 10
Setting verbose level to 10
locale is C
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Applied rules from /usr/share/X11/xkb/rules/evdev:
rules:      /usr/share/X11/xkb/rules/evdev
model:      pc105
layout:     us
options:    grp:alt_shift_toggle,grp:lalt_lshift_toggle,grp:alt_shift_toggle,grp:win_space_toggle,grp_led:scroll,grp:alt_shift_toggle,grp_led:scroll
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwerty)
types:      complete
compat:     complete+ledscroll(group_lock)
symbols:    pc+us+inet(evdev)+group(win_space_toggle)+group(lalt_lshift_toggle)+group(alt_shift_toggle)
geometry:   pc(pc105)
xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete+ledscroll(group_lock)"    };
    xkb_symbols   { include "pc+us+inet(evdev)+group(win_space_toggle)+group(lalt_lshift_toggle)+group(alt_shift_toggle)"   };
    xkb_geometry  { include "pc(pc105)" };
};

$ cat .config/gxkb/gxkb.cfg 
[xkb config]
group_policy=2
default_group=0
never_modify_config=false
model=pc105
layouts=us,ru,ua
variants=
toggle_option=grp:lwin_toggle,lv3:switch,terminate:ctrl_alt_bksp,grp_led:scroll
compose_key_position=

$ cat /etc/X11/xorg.conf
Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
        Option "XkbLayout" "us,ru,ua"
        Option "XkbModel" "pc105"
        Option "XkbVariant" "pc105"
        Option "XkbOptions" "grp:alt_shift_toggle,grp_led:scroll"
EndSection

对于终端窗口输入,在我运行新的实例后,可以使用Win+SpaceAlt+选项更改键盘布局。对于新的实例,它可以工作,但对于刚打开的终端中的 bash 则不行。或者任何在终端中也可以工作的东西。在当前终端会话中,在没有运行新的 bash 实例的情况下,我运行命令或使用该命令获取脚本。但在 Openbox GUI 应用程序中,这一切都不起作用。Shiftbashbashsetxkbmap -layout rusetxkbmap

我已经安装了tint2面板,以便能够通过鼠标单击来切换键盘布局。

键盘快捷键IBus 偏好设置->键盘快捷键实际上并没有改变键盘布局。尝试了不同的按键组合:

在此处输入图片描述

相同的首选项在 iceWM 中可以正常工作,但在那里工作起来很奇怪(当我输入不同的非英语布局时,它经常输入英文字母而不是西里尔字母。它需要删除这些字母几次,直到字母变成西里尔字母)。我并不经常使用西里尔字母,我可以登录 Unity 进行正常的键盘布局切换,但我想弄清楚如何在 Openbox 中正确配置它。

答案1

Openbox 在 处查找用户定义的配置~/.config/openbox。如果没有任何内容,则它会在 处查找默认配置文件:/etc/xdg/openbox/

创建一个新用户,然后在用户目录中复制默认配置文件,以便我们可以编辑它们:

mkdir ~/.config && cp -r /etc/xdg/openbox ~/.config

然后添加这一行:

setxkbmap -layout "us,ru" -option "grp:alt_shift_toggle" &

~/.config/openbox/autostart

现在您可以在注销并重新登录后使用Alt+更改布局。Shift

相关内容