Wayland 中特殊字符(元音变音)的按键重新映射

Wayland 中特殊字符(元音变音)的按键重新映射

在 Xorg 下,我~/.Xmodmap为了能够分别使用右键Ctrla, u, o(以及Shift大写字母)输入德语变音符号(即 äüö):

remove Control = Control_R
keycode 105 = Mode_switch
keysym e = e E EuroSign
keysym c = c C cent
keysym a = a A adiaeresis Adiaeresis
keysym o = o O odiaeresis Odiaeresis
keysym u = u U udiaeresis Udiaeresis
keysym s = s S ssharp

我还没有找到一种方法可以在 Wayland 下使用xkb.到目前为止,我只设法将键盘变体设置为altgr-intl,然后我可以使用右Alt+q来获得 ä。

由于我也在使用 Sway,因此我不能使用Alt+ Shift+q作为大写版本,因为在 Sway 中这是关闭窗口的快捷方式 - 而且我不想重新映射它。

那么,我该如何将元音符号分别放在右侧 - Ctrl+ auo,就像我之前在 Xorg 下使用过的那样?

答案1

此解决方案由 GitHub 用户 RedSoxFan 提供使用Alt Gr和/或Caps lock制作变音符号并在 Wayland / Sway 下工作。您将获得大写变音符号Shift。解决方案是使用自定义键盘布局:

将以下内容保存到$HOME/.config/xkb/symbols/us-german-umlaut

default partial alphanumeric_keys
xkb_symbols "basic" {
    include "us(altgr-intl)"
    include "level3(caps_switch)"
    name[Group1] = "English (US, international with German umlaut)";
    key <AD03> { [ e, E, EuroSign, cent ] };
    key <AD07> { [ u, U, udiaeresis, Udiaeresis ] };
    key <AD09> { [ o, O, odiaeresis, Odiaeresis ] };
    key <AC01> { [ a, A, adiaeresis, Adiaeresis ] };
    key <AC02> { [ s, S, ssharp ] };
};

然后在你的 sway 配置中,使用input type:keyboard xkb_layout us-german-umlaut

答案2

我不知道如何实现你的目标精确的请求,但您可以将“撰写”键分配给 R-Ctrl,从而获得类似的结果。

在 Gnome 中,您可以使用 gnome-tweaks 工具来做到这一点。我不记得肉桂,但我确信有办法,因为我也用过它。 (我不确定其他 DE,而且 - 和你一样 - 我对 Wayland 不太熟悉)。

然后您可以输入R-Ctrl " A以获得 ä 等。请注意,这是一个序列,而不是和弦:您输入R-Ctrl,然后 ",然后 A

它不像您以前的解决方案那么方便快捷,但它更灵活,并且可以让您访问许多其他奇特字符,例如 ø æ ⋄ → € ° · … ´ ≠

答案3

这实际上在所有“普通”Linux 风格下都非常简单。

找到您当前键盘正在使用的“符号”文件。

我最近刚刚购买了一台 Dell Insipiron 3780,并与美国国际键盘一起订购 - 该键盘的 5 上有欧元符号。我还使用无线 Logitech 无线 KB/鼠标组合型号 Y-R0042。 5 上有欧洲键(位于 5 的右下角),但其他方面看起来就像普通的美式键盘。

我选择了“英语(美国、欧元 5)“ 键盘布局。

这个布局基本上是在文件中定义的/usr/share/X11/xkb/symbols/us

您可以看到该文件的语法依赖于继承(由于缺乏更好的词)已定义的键盘的能力,因此在我的例子中,“英语(美国,欧元为 5)继承自“英语(美国)”,其中直接在其上方定义。

在该定义中,您可以看到所有“正常”字母通过它们在键盘上的位置被定义(或者可能被识别为更好的单词)。

我所做的就是编辑实际重要的四行,并将 ä,ü,ö,ẞ 添加到相应的键中,在我看来,这些键是现有的键 a,u,o,s

然后,通过按住“right-alt”(或可能的“Alt Gr”)键并输入对应的英文字母来访问这些内容。

因此,这是我对四行所做的编辑的结果(我向每行添加了最后两个元素(例如 udiaeresis、Udiaeresis),之前它们是空的):

key <AD07> { [ u, U, udiaeresis, Udiaeresis ] };
key <AD09> { [ o, O, odiaeresis, Odiaeresis ] };
key <AC01> { [ a, A, adiaeresis, Adiaeresis ] };
key <AC02> { [ s, S, U00DF, NoSymbol ] };

您必须通过“sudo”(以 root 身份)编辑它。保存后,您将必须重新加载键盘,我只是注销并重新登录,然后 Shazam !

这是迄今为止我见过的最简单的解决方案。我建议您先备份原始文件。

相关内容