如何添加国际英文键盘以便我可以使用德文字母?

如何添加国际英文键盘以便我可以使用德文字母?

我的一个朋友在他的 Windows 上使用德国字母和美国国际 Qwerty 键盘。 Arch Linux 有类似的东西吗?如果不存在,还有其他选择吗?

我朋友使用的 Windows 键盘

答案1

setxkbmap us -variant intl在命令行中输入很好地解决了我的问题。

但谢谢你们的帮助。

答案2

以下是我在 Debian 上的做法(使用Xxdmfvwm,而不是 Wayland):

可能 X 下的键盘标识为“pc104/us/altgr-int”。

我有一个.Xmodmap文件,其中内容包括

remove mod4 = Super_L Hyper_L
keysym Super_L = Mode_switch
keycode  34 = bracketleft braceleft adiaeresis Adiaeresis
keycode  35 = bracketright braceright udiaeresis Udiaeresis
keycode  51 = backslash bar odiaeresis Odiaeresis
keycode  21 = equal plus ssharp ssharp
keycode  47 = semicolon colon doublelowquotemark singlelowquotemark paragraph degree paragraph degree
keycode  48 = apostrophe quotedbl leftdoublequotemark leftsinglequotemark dead_acute dead_diaeresis dead_acute dead_diaeresis

这使我可以使用左侧的“Windows”键作为模式开关,以进入äüöÄÜÖß通常位于德语键盘上的位置以及„“‚‘中间行。

不需要Alt-Gr(当我尝试使用它时,我总是弄断手指),并且可以Shift按照变音符号的预期工作。

由会话登录时执行的文件中的.Xmodmap命令读取。xmodmap $HOME/.Xmodmap~/.xsessionxdm

有很多可能的变体;特别是 Arch Linux 和你朋友使用的显示管理器(无论他安装了什么,或者 Arch 默认使用什么)可能需要稍微不同的文件名或不同的设置。

答案3

Mosvy 的评论setxkbmap 'de(us)'让我看到了 中的这个条目xkb/symbols/de

partial alphanumeric_keys
xkb_symbols "us" {
    include "us"

    name[Group1]="German (US, with German letters)";

    key <AC01> { [           a,          A, adiaeresis, Adiaeresis ] };
    key <AC02> { [           s,          S,     ssharp,      U1E9E ] };
    key <AC10> { [   semicolon,      colon, odiaeresis, Odiaeresis ] };
    key <AC11> { [  apostrophe,   quotedbl, adiaeresis, Adiaeresis ] };
    key <AD03> { [           e,          E,   EuroSign,   EuroSign ] };
    key <AD07> { [           u,          U, udiaeresis, Udiaeresis ] };
    key <AD09> { [           o,          O, odiaeresis, Odiaeresis ] };
    key <AD11> { [ bracketleft,  braceleft, udiaeresis, Udiaeresis ] };
    key <AE03> { [           3, numbersign,    section,    section ] };
    key <AE11> { [       minus, underscore,     ssharp,   question ] };

    include "level3(ralt_switch)"
};

正如US, with German letters我们include "us"所展示的,从技术上讲,这实际上更多的是一种us(de)布局。

这为您提供了元音变音/分音符号的两种选择:字母“aou”本身或原始位置;'[。但仅在修饰符之后,此处ralt.


为了在 qwerty 键盘上流畅地输入德语,变音符号必须位于冒号-引号-左括号键上。但这些也很重要,因此应该可以通过修饰符访问它们。除非你写的德语对话有很多双引号,否则这应该是最好的妥协。


然后是 Y 和 Z...

我宁愿拥有我所看到的,虽然我需要右侧的元音变音符,但左下角的 Z 对我的干扰要小于通常位置但标记为“Y”的 Z。


所以需要的是一些us(de)(反之亦然),它基本上是标准的us,但是冒号键直接生成 aö等,对于冒号,您使用 AltGr (或其他修饰符)。

加上选项/变体us(de-YZ):交换这两个。对于想要以正常方式书写“zu”的人。


一个简单的setxkbmap de实际上就足以获得元音变音。实际上,它可以让你得到一切,这就是问题所在。字母 A 到 X 和 Punkt und Komma 都可以,所以你可以写得很好,但其他一切都完全乱了。一旦你需要冒号、斜杠或破折号,你就会迷失方向。


对于Linux安慰此行“启用”A-Umlaute:

keycode  30 = +a A Control_a nul adiaeresis Adiaeresis

用于nul使其匹配Alt-Shift-Alt取决于修饰符定义......


我的一个朋友使用德文字母

我真的很想知道以什么方式......听起来他经常使用它们。

答案4

这是一种对我有用的方法(我非常疯狂地改变了我的键盘设置,以便能够在英文键盘上编程,但将元音变音保持在ALT+ a(=ä) 或ALT+ SHIFT+ a(=ä) 上)。

  1. 检查键盘布局:setxkbmap -print -verbose 10

    $ setxkbmap -print -verbose 10
    Setting verbose level to 10
    locale is C
    Trying to load rules file ./rules/evdev...
    Trying to load rules file /usr/share/X11/xkb/rules/evdev...
    Success.
    Applied rules from evdev:
    rules:      evdev
    model:      pc105
    layout:     de,us,us
    variant:    ,,
    Trying to build keymap using the following components:
    keycodes:   evdev+aliases(qwertz)
    types:      complete
    compat:     complete
    symbols:    pc+de+us:2+us:3+inet(evdev)
    geometry:   pc(pc105)
    xkb_keymap {
        xkb_keycodes  { include "evdev+aliases(qwertz)" };
        xkb_types     { include "complete"  };
        xkb_compat    { include "complete"  };
        xkb_symbols   { include "pc+de+us:2+us:3+inet(evdev)"   };
        xkb_geometry  { include "pc(pc105)" };
    };
    
  2. 正常的美国键盘布局不起作用与“修饰键或 Mod 键”(键盘上具有特殊功能的键,如SHIFTALTALT-GR、 ...)。提到这一点的唯一来源:xmodmap - ArchWiki

    要更改为“键盘布局 us(intl)”:setxkbmap -layout 'us(intl)'

    再次检查: setxkbmap -print -verbose 10

    Setting verbose level to 10
    locale is C
    Trying to load rules file ./rules/evdev...
    Trying to load rules file /usr/share/X11/xkb/rules/evdev...
    Success.
    Applied rules from evdev:
    rules:      evdev
    model:      pc105
    layout:     us(intl)
    Trying to build keymap using the following components:
    keycodes:   evdev+aliases(qwerty)
    types:      complete
    compat:     complete
    symbols:    pc+us(intl)+inet(evdev)
    geometry:   pc(pc105)
    xkb_keymap {
            xkb_keycodes  { include "evdev+aliases(qwerty)" };
            xkb_types     { include "complete"      };
            xkb_compat    { include "complete"      };
            xkb_symbols   { include "pc+us(intl)+inet(evdev)"       };
            xkb_geometry  { include "pc(pc105)"     };
    };
    
  3. 现在您可以将更改应用到.XModmap您想要的内容(在我的示例中)...如果您没有执行步骤 1. 和 2.,则步骤 3 不会发生任何事情。

    ...
        keycode  38 = a A a A adiaeresis Adiaeresis
    ...
    

    要在 .XModmap 中“获取”(进行)更改(活动):xmodmap .Xmodmap

  4. 这些变化不是永久性的。为了使它们永久存在,您必须在启动时执行它们。我使用的是 i3wm,所以我放入了 i3wm-config 文件

    " permanent layout: us intl
    exec_always setxkbmap -layout 'us(intl)'
    " loading the custom-Xmodmap
    exec_always sh -c 'sleep 10 && xmodmap ~/.Xmodmap'
    

    用普通的 gnome-ubuntu(而不是 i3wm)做同样的事情,crone可以做同样的工作。

PS 编辑帖子后,我意识到你在要求 Arch。我的答案适用于 Ubuntu...我想在 Arch 上也是一样的。

相关内容