使用世界语抑扬符设置 xorg

Sav*_*nel 5 xorg keyboard-layout dvorak

我正在尝试将我的键盘设置为普通的德沃夏克键盘,并将世界语的抑扬符添加到有意义的按键上。这意味着 \xc5\x9d 作为 s 键的修饰符,\xc4\x89 作为 c 键的修饰符,依此类推。

\n\n

然而,在我看来正确的设置中,当我按下相关的组合键时却没有得到任何响应。

\n\n

X11/xkb/symbols/epo列出部分键盘映射,这些映射根据基本键盘是 querty、dvorak 还是 colemak 来应用扬抑符。例如,以下是 qwerty 部分的一些内容:

\n\n
partial\nxkb_symbols "qwerty" {\n    key <AB03> { [ NoSymbol, NoSymbol, ccircumflex, Ccircumflex ] };\n    key <AC05> { [ NoSymbol, NoSymbol, gcircumflex, Gcircumflex ] };\n    key <AC06> { [ NoSymbol, NoSymbol, hcircumflex, Hcircumflex ] };\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我查看evdev.lst或 时base.lst,我发现这个部分称为esperanto, esperanto:qwertyesperanto:dvorak我认为应该应用上述部分之一,这意味着它将AltGr-c生成一个带扬抑符的小写 c。

\n\n

我键盘上的右 Alt 键会生成扫描代码 108,互联网上的一些地方传统上称其为AltGrISO_Level3_Shift。但 xev 很清楚这是Alt_R

\n\n
KeyPress event, serial 34, synthetic NO, window 0x2400001,\n    root 0x6c0, subw 0x0, time 28019153, (69,719), root:(1033,739),\n    state 0x0, keycode 108 (keysym 0xffea, Alt_R), same_screen YES,\n    XLookupString gives 0 bytes: \n    XmbLookupString gives 0 bytes: \n    XFilterEvent returns: False\n
Run Code Online (Sandbox Code Playgroud)\n\n

最后,这是我尝试设置的 xorg 配置。我会注意到,尽管 xev 指示按 right-alt 并c生成Alt_R和,但两个键盘都不会生成修改后的字符c

\n\n
      Section "InputClass"\n        Identifier "built-in keyboard"\n        MatchProduct "AT Translated Set 2 keyboard"\n        Option "XkbLayout" "dvorak"\n        Option "XkbOptions" "esperanto:dvorak"\n      EndSection\n\n      Section "InputClass"\n        Identifier "ErgoDox EZ"\n        MatchVendor "ZSA"\n        MatchProduct "ZSA Ergodox EZ"\n        Option "XkbLayout" "us"\n        Option "XkbOptions" "esperanto:qwerty"\n      EndSection\n
Run Code Online (Sandbox Code Playgroud)\n\n

就目前情况而言,我不知道问题是否是我的键盘没有生成 AltGr 扫描代码,或者 AltGr 现在意味着完全不同的东西,或者我的键盘选项不正确。我希望能够帮助您完成这项工作,或者至少理解为什么它不起作用。

\n

Sav*_*nel 2

嗯,找到了。

经过大量研究后,我了解到我实际上相当接近。问题是美国键盘布局实际上默认情况下并未启用 3 级。

我偶然发现了这个页面,在那里我lv3:ralt_switch清楚地看到了该XkbOptions部分。

因此,我现在修改了 Xorg 配置部分,如下所示:

      Section "InputClass"
        Identifier "built-in keyboard"
        MatchProduct "AT Translated Set 2 keyboard"
        Option "XkbLayout" "us"
        Option "XkbVariant" "dvorak"
        Option "XkbOptions" "esperanto:dvorak,lv3:ralt_switch"
      EndSection

      Section "InputClass"
        Identifier "ErgoDox EZ"
        MatchVendor "ZSA"
        MatchProduct "ZSA Ergodox EZ"
        Option "XkbLayout" "us"
        Option "XkbOptions" "esperanto:qwerty,lv3:ralt_switch"
      EndSection
Run Code Online (Sandbox Code Playgroud)

请注意,两个键盘都设置为美国布局,内部键盘设置为 dvorak 变体(因为外部键盘是 Ergodox,而且我已经将布局闪现到硬件中)。添加lv3:ralt_switch在我的右侧 alt 上启用 AltGr。在esperanto:dvorak相关esperanto:qwerty部分中,我现在两个键盘都可以按照我在问题开头所描述的那样工作。