我有一个美式键盘和布局,但有时我需要德语特殊键 (äÄöÖüÜß)。当然,我可以在需要时切换键盘布局,但我过去常常滥用那个毫无用处的 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 中那样使用setxkbmap
或xkbcomp
)。您可能需要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 下,您必须咨询您最喜欢的gsettings
或dconf
前端。您可以在中指定 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 字符位置上的细微差别外,它具有相同的效果 - 但它韦兰)。