切换多个键盘布局的脚本

切换多个键盘布局的脚本

我使用 ElementaryOS 项目中的 Archlinux 和 Pantheon Shell,但它有一个令人不快的问题漏洞与切换布局。现在我用这个脚本在布局之间切换。它的工作效果并不完美(切换之间仍然存在轻微的延迟),但比标准交换机更快。我还从面板上删除了不必要的指示器。现在我正在学习另一种语言,我需要向系统添加另一种布局。

由于50行的python脚本运行缓慢,我想使用setxkbmap us, setxkbmap ru,setxkbmap eo来切换,它与上面所有的不同,可以立即运行。问题是如何将它们组合成一个脚本,以便按CAPSLOCK打开USSHIFT + CAPSLOCK打开RUSHIFT + TAB打开EO?我从来没有写过这样的脚本,也不知道它应该是什么样子。

答案1

有一种方法可以在不编写脚本的情况下完成类似的操作:您可以创建一个合并英语、俄语、世界语的新键盘布局,它的行为几乎如您所愿:

首先在/usr/share/X11/xkb/symbols/(或键盘配置文件所在的任何位置,可能是/usr/share/kbd/keymaps/,具体取决于您的发行版)创建一个文件,并使用不与现有文件冲突的名称(我命名为我的oo)来命名该文件。并在此文件中添加几行以确保其正常工作:

xkb_symbols "multi" {
include "us(basic)"
include "level3(ralt_switch)"
name[Group1] = "english";
name[Group2] = "esperanto";
name[Group3] = "russian";
key <CAPS> {[ISO_Next_Group, ISO_Prev_Group]};
key.type[group1]="FOUR_LEVEL";
key.type[group2]="FOUR_LEVEL";
key.type[group3]="FOUR_LEVEL";
key <AD01> {[], [scircumflex, Scircumflex], [Cyrillic_shorti, Cyrillic_SHORTI]};
};

然后尝试使用setxkbmap oo -variant multi.

  • 按下q就会写入q。此示例仅适用于字母q(但我可以轻松地对其他字母执行此操作)。它可以写ŝ世界语或й俄语。
  • Capsuseoru、 with之间循环输入ISO_Next_Group(重复三遍,您将返回us布局)。
  • Shift + Caps以相反的顺序键入循环ISO_Prev_Group

如果您不喜欢这种在布局之间循环的方式,您可以使用(更改<CAPS>文件中的行):

key <CAPS> {[ISO_First_Group, ISO_Last_Group]};
  • 无论您当前位于何处,键入Caps都会进入布局。usISO_First_Group
  • 无论您身在何处,输入Shift + Caps都会进入布局。ruISO_Last_Group
  • 不幸的是,没有ISO_Second_Group,因此您只能直接访问 2 个布局(但如果您想使用 2 个以上,则可以循环)。还有其他类似键码的列表这里

该文件的工作原理:

  • xkb_symbols "multi" { ... };是键盘布局变体的名称。
  • include "us(basic)"包括qwerty布局,因此您不必将qwerty密钥放入配置文件中。
  • include "level3(ralt_switch)"如果你有时想用的话Altgr
  • key <NAME>{ [group 1 content], [group 2 content], [group 3 content]};,每组内容是默认键、键与Shift、键与Altgr...的逗号分隔名称,最多 8 个值。第一组的内容这里可以省略。

注意:更改组比setxkbmap每次运行都要快。

相关内容