通过 Wayland 在美国键盘上提供特殊字符

通过 Wayland 在美国键盘上提供特殊字符

我有一个美式键盘和布局,但有时我需要德语特殊键 (äÄöÖüÜß)。当然,我可以在需要时切换键盘布局,但我过去常常滥用那个毫无用处的 Caps Lock 键来访问我需要的字符,如下所示~/.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

由于某种奇怪的原因,当 Fedora 切换到 Wayland 时,键盘行为发生了变化。现在我的(神奇的)键盘映射有时才起作用,大写锁定键又充当了大小写锁定键 :(

有没有Wayland aware办法让(德语)特殊字符在美国键盘上可用?(或者[]{}|<>在德语键盘上按一下键即可使用)

答案1

Wayland 使用 XKB,但如何指定布局取决于您的合成器(您不能像在 Xorg 中那样使用setxkbmapxkbcomp)。您可能需要altgr-intl标准us布局的变体(美国国际版面)可能还有一些选项:Compose(又名 Multi_key),也许在菜单键上?AltGr 在右 Alt 键上?(变intl体类似,但在第 1 级包含死键;altgr-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 = ß

对于韦斯顿,您需要添加设置到$HOME/.config/weston.ini

[keyboard]
keymap_rules=evdev
keymap_layout=us
keymap_variant=altgr-intl
keymap_options=compose:menu,level3:ralt_switch

为了摇摆(与 i3 类似),您需要在执行之前设置环境变量,可以通过命令行或者辅助脚本将它们链接在一起:

#!/bin/sh
export XKB_DEFAULT_LAYOUT=us
export XKB_DEFAULT_VARIANT=altgr-intl
export XKB_DEFAULT_OPTIONS=compose:menu,level3:ralt_switch
sway

在 GNOME 下,您必须咨询您最喜欢的gsettingsdconf前端。您可以在中指定 XKB 选项,/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']"

KDE 使用自己的图形控制面板;你可以在系统设置 > 硬件 > 输入设备 > 键盘。 这布局选项卡将允许您配置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])

答案2

一种可能就是将默认键盘从英语(美国)改为英语(国际)。我在所有我能控制的电脑上都这样做,这样我就可以使用一些标点符号作为“死键”重音来获取常见的非英语字符。

在 Windows 上,这会将右 Alt 键转换为 AltGr,并将其与某些按键组合起来,即可获得相关的非英语字符,例如 AltGr+s 表示升号 s,AltGr+t 表示冰岛语 thorn,AltGr+d 表示冰岛语 edh 等等。

对于“死键”,大多数标点符号都兼作重音符号 - 要获得 e-acute,请输入 ' 然后输入 e;o-acute ' 然后输入 o,a-grave ` 然后输入 a,u-umlaut " 然后输入 u,依此类推。要获得标点符号,请按与其不组合为重音符号的字符,或按空格 - 撇号是 ' 然后输入空格;双引号/英寸标记是 " 然后输入空格,依此类推。这需要一点调整,但比记住 alt 代码(在 Windows 上)或不断在布局之间切换要容易得多。

(我已经在“开箱即用”的 Linux Mint 中这样做了;除了一些 AltGr 字符位置上的细微差别外,它具有相同的效果 - 但它韦兰)。

相关内容