使美国键盘上的特殊字符可用 Wayland

fra*_*ans 9 linux keyboard-layout wayland

我有美式键盘和布局,但有时我需要德语特殊键 (äÄöÖüÜß)。当然,我可以在需要时切换键盘布局,但我曾经滥用那个完全无用的大写锁定键来访问我需要的字符,如下所示~/.Xmodmap

keycode 66 = Mode_switch Multi_key
keycode 20 = minus underscore ssharp
keycode 34 = bracketleft braceleft udiaeresis Udiaeresis
keycode 47 = semicolon colon odiaeresis Odiaeresis
keycode 48 = apostrophe quotedbl adiaeresis Adiaeresis
Run Code Online (Sandbox Code Playgroud)

由于某些奇怪的原因,当 Fedora 切换到 Wayland 时,键盘行为发生了变化。现在我的(魔法)键盘映射有时只起作用,而大写锁定键又可以用作储物柜:(

是否有一种Wayland aware方法可以在美式键盘上使用(德语)特殊字符?(或者也[]{}|<>可以在德语键盘上一键使用)

qui*_*tic 12

Wayland 使用 XKB,但如何指定您的布局因您的合成器而异(您不能使用setxkbmapxkbcomp在 Xorg 中使用)。您可能需要altgr-intl标准us布局的变体(美国国际布局)和一些选项:撰写(又名 Multi_key),也许在菜单键上?AltGr 在右边的 Alt 键上?(该intl变体类似,但包括级别 1altgr-intl上的死键;将死键放在级别 3 上,因此它们不碍事但仍可访问。)

在这种布局和变体下,您列出的大多数符号都可以在 AltGr 或 Compose 键下轻松使用:

AltGr+q = ä   AltGr+Shift+a = Ä    Compose+",a = ä    Compose+",A = Ä
AltGr+p = ö   AltGr+Shift+p = Ö    Compose+",o = ö    Compose+",O = Ö
AltGr+y = ü   AltGr+Shift+y = Ü    Compose+",u = ü    Compose+",U = Ü
AltGr+s = ß                        Compose+s,s = ß
Run Code Online (Sandbox Code Playgroud)

对于 Weston,您需要将设置添加到$HOME/.config/weston.ini

[keyboard]
keymap_rules=evdev
keymap_layout=us
keymap_variant=altgr-intl
keymap_options=compose:menu,level3:ralt_switch
Run Code Online (Sandbox Code Playgroud)

对于 sway(类似 i3),您需要在执行前设置环境变量,在命令行或帮助脚本中链接在一起:

#!/bin/sh
export XKB_DEFAULT_LAYOUT=us
export XKB_DEFAULT_VARIANT=altgr-intl
export XKB_DEFAULT_OPTIONS=compose:menu,level3:ralt_switch
sway
Run Code Online (Sandbox Code Playgroud)

在 GNOME 下,您必须咨询您最喜欢的gsettingsdconf前端。您可以/org/gnome/desktop/input-sources/xkb-options/org/gnome/desktop/input-sources/sources. (自发布以来这些可能已更改;请检查您现有的设置。)

gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us+altgr-intl')]"
gsettings set org.gnome.desktop.input-sources xkb-options "['compose:menu','lv3:ralt_switch']"
Run Code Online (Sandbox Code Playgroud)

KDE 使用自己的图形控制面板;您可以在System Settings > Hardware > Input Devices > Keyboard 中找到它。“布局”选项卡将允许您配置altgr-intl变体(它被列为“英语(国际 AltGr 死键)”),并且 XKB 选项列在“高级”选项卡上。

在当前的 KDE Frameworks 5 上,此控制面板将设置存储在$HOME/.config/kxkbrc.


如果您的系统使用 systemd,localectl您可以尝试将其设置为您想要的,并且 GNOME/KDE 可能能够从那里获取它。目前这可能只为 Xorg 设置一些东西,但我喜欢将它作为后备,我希望 Wayland 合成器将在未来版本中使用它来获取系统范围的偏好。

sudo localectl set-x11-keymap us pc105 altgr-intl compose:menu,level3:ralt_switch
(format:                  [layout] [model] [variant] [options])
Run Code Online (Sandbox Code Playgroud)