我需要的是
- Shift-CapsLock使用我最喜欢的快捷方式(即)在俄语和英语布局之间切换
- 使用另一个快捷方式切换到白俄罗斯布局(例如,,Ctrl-RightShift但实际绑定并不重要)
- 当白俄罗斯语布局处于活动状态时,切换回俄语/英语Shift-CapsLock
xkb有可能吗?如果是这样,该怎么办?
答案1
三个有用的命令:
1。获取当前的键盘布局,从此话题:
setxkbmap -print | grep xkb_symbols | awk -F"+" '{print $2}'
返回布局(变体),其中变体是可选的
2。知道当前键盘布局是否为layout(variant):
setxkbmap -print | grep "layout(variant)"
或者没有“(变体)”。
返回什么都不是。
3。将键盘布局设置为指定值:
setxkbmap layout variant
其中变体是可选的。
(查看man setxkbmap
更多信息)
你可以做什么:
1。创建一个简单的可执行 ( chmod +x file
) 脚本,根据当前键盘布局动态更改键盘布局。例如,如果我们处理第一点:
#!/bin/bash
if setxkbmap -print | grep "us"
then
setxkbmap ru
else
setxkbmap us
fi
2。使用键盘快捷键管理器,将Shift-CapsLock
按键分配给该脚本。
祝你好运!
答案2
您真正想要的东西是不可能的,因为它需要全状态过程(以了解切换到布局之前的状态by
)。
然而,除了允许在布局环中递减/递增的 ISO_Prev_Group 和 ISO_Next_Group 符号之外,还有这两个符号:ISO_First_Group 和 ISO_Last_Group。有了这个环:us,by,ru
您始终可以通过一次切换访问三种布局中的任何一种。
例如,定义Shift-在布局CapsLock中时发送 ISO_Last_Group ,在或中时发送 ISO_First_Group ;定义-在 ISO_Prev_Group中时发送 ISO_Next_Group ,在中时发送 ISO_Next_Group(或 Last)。us
ru
by
CtrlRightShiftus
ru
by
与您想要的不同之处在于,在by
.
另外,如果您by
只需要几个白俄罗斯特定西里尔字母的布局;另一种选择是使用修改后的ru
布局,在某些键中添加额外的符号,可以使用 AltGr 或类似的键访问,就像大多数拉丁键盘一样。
正如文件中by
只有 3 个不同的键一样,ru
这似乎是正确的方法。在这种情况下,我会将布局堆叠为:us,ru,by
在“us”中使用 ISO_Next_Group,在“ru”中使用 ISO_Prev_Group 表示 Shift-Capslock,并在“ru”中定义带有锁存 ISO_Next_Group 的键。
为此:创建一个 ~/.xkb/keymap/mykbd ,在其中放置 setxkbmap 的输出,它将成为您的基本键盘定义;例如:
setxkbmap "us,ru,by" ; setxkbmap -print > ~/.xkb/keymap/mykbd
然后创建一个文件 ~/.xkb/symbols/mysymbols :
partial modifier_keys
xkb_symbols "shift_caps_us_ru_by" {
key <CAPS> {
symbols[Group1] = [ Caps_Lock, ISO_Next_Group ],
symbols[Group2] = [ Caps_Lock, ISO_Prev_Group ],
symbols[Group3] = [ Caps_Lock, ISO_First_Group ]
};
key <RALT> {
symbols[Group2] = [ ISO_Group_Latch ]
};
};
编辑~/.xkb/keymap/mykbd
文件,然后更改行xkb_symbols
以添加+mysymbols(shift_caps_us_ru_by)
最后,您可以使用xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd
现在加载它Shift-CapsLock在拉丁语(美国)和西里尔语(俄罗斯)布局之间切换;在西里尔语中,您可以按住AltGr(右 Alt)键访问白俄罗斯语特定字母。
答案3
好吧,所以我是什么真的想要的是按照 MRU(最近使用的)顺序切换布局。你猜怎么着,GNOME 的默认布局切换器是做什么的恰恰(确保“调整”→“键盘和鼠标”→“其他布局选项”→“更改布局的键”中的复选框未被激活!)。因此,目前我在一个环中有 4 个布局(俄语、白俄罗斯语、乌克兰语、英语),并且可以轻松在最新的布局之间进行切换SuperSpace。这样就解决了我的问题以及一些问题。
答案4
我强烈推荐使用sxhkd(简单的 X 热键守护进程)。它的配置根本不应该具有挑战性。按照中提供的步骤进行操作维基百科教程您很快就会启动并运行它。
为了简单起见,sxhkd 使您能够将输入事件(例如按下某个键...)映射/绑定到操作(例如来回更改键盘布局...)
就我个人而言,我会在 3 种不同的布局之间即时切换。我使用的映射:
super + k; {u,f,r}
setxkbmap {us,fr,ru}
super是一个特殊键(称为修饰键),您可以使用其他修饰键,例如Ctrl或Alt等(均已记录)
因此,当我按住修饰键(super在我的例子中是 windows 键),k然后释放这两个键并按下三个键之一时u f r,它会使用根据按下的键提供的三个参数之一运行命令setxkbmap
(尊重顺序)。假设我点击了superk然后f我得到了setxkbmap fr
法式布局
ps:如果您意外地绑定了已经与某个操作关联的键组合,您可能会得到不希望的/意外的结果(很可能后期的绑定会掩盖早期的绑定)。但请记住,凡事总有解决办法。所以不要害怕尝试。