我正在尝试以以下方式更改 Ubuntu 20.04 的行为:我想Left Alt
将键盘布局切换为英语并将Right Alt
其切换为俄语。我还想保留所有Alt+smth
热键。
我目前发现的是:
- 自定义热键:Ubuntu 设置或 Tweak Tools 无法满足我的要求。我可以使用
xbindkeys
将Alt_L
和绑定Alt_R
到任何 shell 命令,但Alt+smth
即使我使用Release
修饰符(如Alt_L + Release
),它也会破坏热键。我仍然不知道如何在Alt
不破坏 的情况下将任何东西映射到Alt+smth
。 - 说到 shell 命令,我能用 shell 命令更改键盘布局的最佳方法是
setxkbmap us
或setxkbmap ru
。这有点用,但 ubuntu 不知何故看不到这一点:当我按下热键时,switch language
ubuntu 托盘中的键盘布局会发生变化,但实际布局始终是us
。此外,setxkbmap us
它不会真正改变当前选定的布局,它将可用布局列表限制为 而不是us
这us,ru
是一种解决方法,但我想我可以忍受。
所以问题是:我如何绑定Left Alt
切换美国布局和Right Alt
切换俄罗斯布局,同时保留所有Alt+smth
热键?
答案1
我弄清楚了如何使用@vanadium 的评论和来做到这一点dconf-tool
。
使用 从终端切换gnome shell
语言eval
:
gdbus call --session --dest org.gnome.Shell \
--object-path /org/gnome/Shell \
--method org.gnome.Shell.Eval \
"imports.ui.status.keyboard.getInputSourceManager().inputSources[0].activate()"
inputSources
更改不同语言的索引。
要设置热键,您需要dconf-tool
。导航到/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/
。方便的是,您无法从dconf-editor
界面添加新的子文件夹,请转到Settings -> Keyboard Shortcuts
,向下滚动到Custom Shortcuts
并添加一个新子文件夹。custom0
子文件夹应出现在dconf-tool
的界面中。将上面的命令设置为命令和Alt_L
或Alt_R
作为绑定。
答案2
我无法将所需的热键分配给Alt_L
/Alt_r
并保持其他Alt+smth
热键正常工作,但我能够使用较少的冲突键实现所请求的功能i3wm
,因此我的答案可能部分有用。
我添加了以下几行.config/i3/config
:
bindcode Mod4+57 exec "setxkbmap -layout us,ru"
bindcode Mod4+58 exec "setxkbmap -layout ru,us"
现在windows_key + n
(n
has keycode 57
)和windows_key + m
(m
has keycode 58
)分别将布局切换为英语和俄语。
请注意,需要bindcode
与键码一起使用,而不是bindsym
与符号一起使用config
,否则热键在俄语布局中将不起作用。