大家好!
我想分享分享我对问题的解决方案,该问题在标题中指出。 这篇文章的灵感来自同事
brnovk ,他不太懒惰,并建议部分(对我来说)解决问题的方法。 我做了帮助我的“拐杖”。 我和你分享。
问题描述
我使用Ubuntu 18.04进行工作,最近注意到,当在应用程序(如Visual Studio Code,Skype,Slack和其他使用Electron创建的应用程序)中按Alt + shift切换布局时,会出现以下问题:输入字段的焦点转到窗口的顶部面板(菜单)。 由于其他原因,我搬到了Fedora + KDE,并意识到问题并没有消失。 在寻找解决方案时,我发现了一篇很棒的文章
《自己动手做Skype》 。 非常感谢
brnovk同志详细
解释了问题并分享了解决问题的方式。 但是文章中指定的方法仅用一个应用程序Skype覆盖了这个问题。 对于我来说,使用Visual Studio Code仍然很关键,因为使用跳转菜单编写消息很烦人,但是如果您正在开发,则不需要那么多。 另外,一位同事提出了一种解决方案,其中应用程序菜单完全消失,但是我真的不想丢失VS Code中的菜单。
我试图了解发生了什么事
因此,我决定花些时间弄清楚发生了什么。 现在,我将简要介绍我的去向,也许是对此事有更深入了解的人将有助于阐明我遇到的困难。
我打开了Visual Studio Code,然后开始单击Alt + <%something%>的不同组合,查看应用程序的反应。 在几乎所有情况下,除Alt + Shift以外的所有组合都可以正常工作而不会失去焦点。 似乎有人吃了按下Shift键,然后按住ALT键,然后应用程序认为我按下了Alt键,然后什么也没按下,松开了Alt键,它很高兴地将我的注意力集中到了菜单上,这在他看来是合乎逻辑的。
我打开了键盘布局切换设置(嗯,您知道这个长长的列表,其中包含复选框和按键的各种设置),然后通过Alt键设置键盘布局切换,而无需另外按下任何按钮。

之后,Alt + Tab停止工作以切换窗口。 只有Tab起作用了,也就是说,有人再次“吃了”我的Alt。 这个“某人”谁没有问题,但我不知道该怎么办。
但是由于必须至少以某种方式解决问题,所以我想到了解决方案:
- 在设置中,禁用热键以切换键盘布局(删除“切换到另一个布局”部分中的所有复选框);
- 创建自己的热键以切换我的布局
解决方案说明
首先,安装一个程序,该程序允许您将命令分配给Xbindkeys键。 不幸的是,标准工具不允许我通过漂亮的界面为Alt + Shift类型的组合创建热键。 可以针对Alt + S,Alt + 1,Alt + shift + Y等方式执行。 等等,但这不适合我们的任务。
sudo dnf install xbindkeysrc
在
ArchWiki上有更多关于它的信息
接下来,为该程序创建一个示例设置文件。 该示例非常简短,仅需几个命令即可确定如何使用它:
xbindkeys -d > ~/.xbindkeysrc
从文件中的示例中可以看到,我们需要指定我们要使用的热键以及应该执行的命令。 看起来很简单。
作为热键,您可以使用可读的拼写或键代码。 它仅对代码有效,但没有人禁止您尝试一下。
要获取代码,您需要使用以下命令:
xbindkeys -k
一个小的“ X”窗口将打开。 您只需要按此窗口上的焦点即可! 只有在这种情况下,您才会在终端中看到以下内容:
[podkmax@localhost ~]$ xbindkeys -k Press combination of keys or/and click under the window. You can use one of the two lines after "NoCommand" in $HOME/.xbindkeysrc to bind a key. "(Scheme function)" m:0x4 + c:39 Control + s
就我而言,键盘快捷键Alt + Shift如下所示:
m:0x8 + c:50
现在,您需要确保在单击此组合时,布局已正确切换。 我发现只有一个工作命令来指定布局:
setxkbmap ru setxkbmap us
从示例中可以看到,她只知道如何打开一个或另一个布局,因此,除了编写脚本之外,我什么都没想到。
vim ~/layout.sh
现在,如果.xbindkeysrc和layout.sh文件位于同一目录中,则.xbindkeysrc文件的最终形式如下所示:
之后,应用更改:
xbindkeys -p
您可以检查。 不要忘记在默认设置中禁用任何用于切换布局的选项。
总结
同事们,我希望本文可以帮助某人快速摆脱烦人的问题。 我个人一整天都在花时间来整理问题并以某种方式解决问题,以免在工作时间内被分心。 我写这篇文章是为了节省某人的时间和神经。 你们中的许多人使用另一种方式来切换布局,却不了解问题所在。 我个人喜欢切换Alt + Shift。 我希望它能以这种方式工作。 如果您同意我的观点并且遇到了此问题,那么本文将为您提供帮助。