我将 KDE 配置为可以轻松地从 bépo(french-dvorak)布局切换到 azerty 布局。我用 KDE 接口 ( systemsettings
) 配置了它,但我猜它只是调用setxkbmap be
和setxkbmap fr
。 azerty 布局是默认布局(也是布局列表中的第一个)。
然而,快捷键仍然附加在物理键上:按下该q键会产生 azerty 中的“q”和 bepo 布局中的“a”。但是,按ctrl+q在这两种情况下具有相同的效果(在大多数软件中,例如使用kwrite
或退出konsole
)。但请注意,某些软件(如firefox
)会进行切换(按下该j键,会打印带有 bépo 布局的“t”,ctrl同时打开一个新选项卡,这是预期的行为)。根据这个评论,GTK 应用程序执行切换,而 Qt 应用程序则不执行。
如何让所有软件中的快捷键键和输入文字键重合
更准确地说,快捷方式是根据列表中的第一个布局定义的。如何为 Qt 应用程序切换快捷方式的定义?
配置(系统):
$ kded4 --version
Qt: 4.8.7
KDE Development Platform: 4.14.38
KDE Daemon: 4.14.38
$ uname -a
Linux debian 4.19.0-16-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 10 (buster)
Release: 10
Codename: buster
配置(setxkbmap):
$ setxkbmap -query
rules: evdev
model: pc104
layout: us,fr
variant: intl-unicode,bepo
options: grp:caps_toggle
(其中 fr 实际上是 bepo)
$ localectl list-x11-keymap-variants fr
azerty
bepo
bepo_latin9
bre
dvorak
geo
latin9
latin9_nodeadkeys
latin9_sundeadkeys
mac
nodeadkeys
oci
oss
oss_latin9
oss_nodeadkeys
oss_sundeadkeys
sundeadkeys
us
相关页面:
- 独立于键盘布局的快捷键(这个问题和我的相反!)
- http://kate-editor.org/2013/10/07/multiple-keyboard-layouts-and-shortcuts/(提出了 2 年前的解决方法)。根据此页面,“[布局]的顺序定义了优先级,并且快捷方式始终使用列表中的第一个条目。”
- https://bugs.kde.org/show_bug.cgi?id=197552(错误报告,声称已关闭)
- https://bugreports.qt.io/browse/QTBUG-32908
- https://codereview.qt-project.org/c/qt/qtbase/+/96993
- http://forums.linuxmint.com/viewtopic.php?f=56&t=189004(重新映射单个键的解决方案)
- 在键盘布局之间切换时如何运行脚本通过触发一个改变布局顺序的脚本,也许可以做到这一点。
编辑:这个问题已被打开2131前几天,收到三赏金,31 个赞成票,有 11 个收藏夹,这是目前为止获得最多支持的未回答问题,但没有提供一个严肃的、有动机的答案?我可能应该提交错误报告,但我什至不知道哪个软件负责!
答案1
您可以设置
localectl set-keymap --no-convert <keymap>
这将更改启动时使用的键盘映射。将此处的键盘映射替换为您想要使用的键盘映射。还要确保更改其他区域设置信息。
答案2
这似乎在我当前的设置中得到了解决:
~$ kded5 --version
kded5 5.78.0
~$ uname -a
Linux XXX 5.10.0-19-amd64 #1 SMP Debian 5.10.149-2 (2022-10-21) x86_64 GNU/Linux
~$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 11 (bullseye)
Release: 11
Codename: bullseye