我的使用

我的使用

我的使用

我使用定制的 QWERTY 键盘来输入法语。它是 QWERTY Lafayette。 https://qwerty-lafayette.org/

问题

在许多应用程序(例如 vscode)中,我的键盘无法使用,并且仍处于 qwerty us 状态。因此,我无法输入使用 AltGr 可访问的字符或法语中的重音符号。

此外,在 gnome 设置中,我没有看到创建的键盘。

我的设置

网页上有我使用的 Python 安装程序。它运行得很好。

以下是它正确生成并集成的文件中的内容/usr/share/X11/xkb/rules/evdev.xml

    <layout>
      <configItem>
        <name>fr</name>
        <!-- Keyboard indicator for French layouts -->
        <shortDescription>fr</shortDescription>
        <description>French</description>
        <countryList>
          <iso3166Id>FR</iso3166Id>
        </countryList>
        <languageList>
          <iso639Id>fra</iso639Id>
        </languageList>
      </configItem>
      <variantList>
        <variant>
          <configItem>
            <name>nodeadkeys</name>
            <description>French (no dead keys)</description>
          </configItem>
        </variant>
        <variant>
          <configItem>
            <name>oss</name>
            <description>French (alt.)</description>
          </configItem>
        </variant>
        <variant>
          <configItem>
            <name>oss_latin9</name>
            <description>French (alt., Latin-9 only)</description>
          </configItem>
        </variant>
        <variant>
          <configItem>
            <name>oss_nodeadkeys</name>
            <description>French (alt., no dead keys)</description>
          </configItem>
        </variant>
        <variant>
          <configItem>
            <name>latin9</name>
            <description>French (legacy, alt.)</description>
          </configItem>
        </variant>
        <variant>
          <configItem>
            <name>latin9_nodeadkeys</name>
            <description>French (legacy, alt., no dead keys)</description>
          </configItem>
        </variant>
        <variant>
          <configItem>
            <name>bepo</name>
            <description>French (BEPO)</description>
          </configItem>
        </variant>
        <variant>
          <configItem>
            <name>bepo_latin9</name>
            <description>French (BEPO, Latin-9 only)</description>
          </configItem>
        </variant>
        <variant>
          <configItem>
            <name>bepo_afnor</name>
            <description>French (BEPO, AFNOR)</description>
          </configItem>
        </variant>
        <variant>
          <configItem>
            <name>dvorak</name>
            <description>French (Dvorak)</description>
          </configItem>
        </variant>
        <variant>
          <configItem>
            <name>mac</name>
            <description>French (Macintosh)</description>
          </configItem>
        </variant>
        <variant>
          <configItem>
            <name>azerty</name>
            <description>French (AZERTY)</description>
          </configItem>
        </variant>
        <variant>
          <configItem>
            <name>afnor</name>
            <description>French (AZERTY, AFNOR)</description>
          </configItem>
        </variant>
        <variant>
          <configItem>
            <name>bre</name>
            <description>French (Breton)</description>
          </configItem>
        </variant>
        <variant>
          <configItem>
            <name>oci</name>
            <description>Occitan</description>
            <languageList>
              <iso639Id>oci</iso639Id>
            </languageList>
          </configItem>
        </variant>
        <variant>
          <configItem>
            <name>geo</name>
            <description>Georgian (France, AZERTY Tskapo)</description>
            <languageList>
              <iso639Id>kat</iso639Id>
            </languageList>
          </configItem>
        </variant>
        <variant>
          <configItem>
            <name>us</name>
            <description>French (US)</description>
          </configItem>
        </variant>
        <variant type="lafayette">
          <configItem>
            <name>lafayette</name>
            <description>French (Lafayette)</description>
          </configItem>
        </variant>
        <variant type="lafayette">
          <configItem>
            <name>lafayette42</name>
            <description>French (Lafayette42)</description>
          </configItem>
        </variant>
      </variantList>
    </layout>

/usr/share/X11/xkb/symbols/fr有这个:

// LAFAYETTE::BEGIN


// Project page  : https://github.com/fabi1cazenave/qwerty-lafayette
// Author        : Fabien Cazenave
// Version       : 0.6.1
// Last change   : 2018-04-08
// License       : WTFPL - Do What The Fuck You Want Public License
//
// French (Qwerty-Lafayette)
//
// Base layer + dead key
// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━━┓
// │ ~   │ ! ¡ │ @ ‘ │ # ’ │ $ ¢ │ % ‰ │ ^   │ &   │ * ★ │ (   │ )   │ _ – │ + ± ┃          ┃
// │ `   │ 1 „ │ 2 “ │ 3 ” │ 4 £ │ 5 € │ 6   │ 7 | │ 8 ∞ │ 9   │ 0 ° │ - — │ = ≠ ┃ ⌫        ┃
// ┢━━━━━┷━━┱──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┺━━┳━━━━━━━┫
// ┃        ┃ Q   │ W   │ E   │ R ™ │ T   │ Y ¤ │ U   │ I   │ O   │ P ¶ │ « { │ » } ┃       ┃
// ┃ ↹      ┃   æ │   é │   è │   ® │   þ │   ¥ │   ù │   ij │   œ │   § │  ̂ [ │  ̈ ] ┃       ┃
// ┣━━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓  ⏎   ┃
// ┃         ┃ A   │ S   │ D   │ F ª │ G   │ H   │ J   │ K   │ L   │  ⃡   │ "   │ |   ┃      ┃
// ┃ ⇬       ┃   à │   ß │   ð │   ſ │   © │   ← │   ↓ │   ↑ │   → │  ⃡ ` │ '   │ \   ┃      ┃
// ┣━━━━━━┳━━┹──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┲━━┷━━━━━┻━━━━━━┫
// ┃      ┃ > ≥ │ Z   │ X   │ C   │ V   │ B   │ N   │ M º │ ; • │ :   │ ? ¿ ┃               ┃
// ┃ ⇧    ┃ < ≤ │   < │   > │   ç │   ŭ │   † │   ñ │   µ │ , · │ . … │ / \ ┃ ⇧             ┃
// ┣━━━━━━┻┳━━━━┷━━┳━━┷━━━━┱┴─────┴─────┴─────┴─────┴─────┴─┲━━━┷━━━┳━┷━━━━━╋━━━━━━━┳━━━━━━━┫
// ┃       ┃       ┃       ┃                                ┃       ┃       ┃       ┃       ┃
// ┃ Ctrl  ┃ super ┃ Alt   ┃ ␣                              ┃ AltGr ┃ super ┃ menu  ┃ Ctrl  ┃
// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛
//
// AltGr layer
// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━━┓
// │    ̃ │     │   « │   » │    ́ │    ̈ │    ̂ │   ⁷ │   ⁸ │   ⁹ │   ÷ │     │     ┃          ┃
// │    ̀ │   ! │   ( │   ) │   ' │   " │   ^ │   7 │   8 │   9 │   / │     │     ┃ ⌫        ┃
// ┢━━━━━┷━━┱──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┺━━┳━━━━━━━┫
// ┃        ┃   ≠ │     │     │   — │   ± │     │   ⁴ │   ⁵ │   ⁶ │   × │     │     ┃       ┃
// ┃ ↹      ┃   = │   < │   > │   - │   + │     │   4 │   5 │   6 │   * │     │     ┃       ┃
// ┣━━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓  ⏎   ┃
// ┃         ┃     │     │     │     │     │     │   ¹ │   ² │   ³ │   − │    ̇ │     ┃      ┃
// ┃ ⇬       ┃   { │   [ │   ] │   } │   / │     │   1 │   2 │   3 │   - │    ́ │     ┃      ┃
// ┣━━━━━━┳━━┹──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┲━━┷━━━━━┻━━━━━━┫
// ┃      ┃     │    ̃ │    ̀ │     │   – │     │     │   ⁰ │     │     │   ¬ ┃               ┃
// ┃ ⇧    ┃     │   ~ │   ` │   | │   _ │   \ │     │   0 │   , │   . │   + ┃ ⇧             ┃
// ┣━━━━━━┻┳━━━━┷━━┳━━┷━━━━┱┴─────┴─────┴─────┴─────┴─────┴─┲━━━┷━━━┳━┷━━━━━╋━━━━━━━┳━━━━━━━┫
// ┃       ┃       ┃       ┃                                ┃       ┃       ┃       ┃       ┃
// ┃ Ctrl  ┃ super ┃ Alt   ┃ ␣                              ┃ AltGr ┃ super ┃ menu  ┃ Ctrl  ┃
// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛

partial alphanumeric_keys modifier_keys
xkb_symbols "lafayette" {
    name[group1]= "French (Lafayette)";
    key.type[group1] = "EIGHT_LEVEL";

    // Digits
    key <AE01> {[ 1               , exclam          , U201E           , exclamdown      , exclam          , VoidSymbol      , VoidSymbol      , VoidSymbol      ]}; // 1 ! „ ¡ !
    key <AE02> {[ 2               , at              , U201C           , U2018           , parenleft       , guillemotleft   , VoidSymbol      , VoidSymbol      ]}; // 2 @ “ ‘ ( «
    key <AE03> {[ 3               , numbersign      , U201D           , U2019           , parenright      , guillemotright  , VoidSymbol      , VoidSymbol      ]}; // 3 # ” ’ ) »
    key <AE04> {[ 4               , dollar          , sterling        , cent            , apostrophe      , dead_acute      , VoidSymbol      , VoidSymbol      ]}; // 4 $ £ ¢ ' ´
    key <AE05> {[ 5               , percent         , EuroSign        , U2030           , quotedbl        , dead_diaeresis  , VoidSymbol      , VoidSymbol      ]}; // 5 % € ‰ " ¨
    key <AE06> {[ 6               , asciicircum     , VoidSymbol      , VoidSymbol      , asciicircum     , dead_circumflex , VoidSymbol      , VoidSymbol      ]}; // 6 ^     ^ ^
    key <AE07> {[ 7               , ampersand       , bar             , brokenbar       , 7               , U2077           , VoidSymbol      , VoidSymbol      ]}; // 7 & | ¦ 7 ⁷
    key <AE08> {[ 8               , asterisk        , infinity        , U2605           , 8               , U2078           , VoidSymbol      , VoidSymbol      ]}; // 8 * ∞ ★ 8 ⁸
    key <AE09> {[ 9               , parenleft       , VoidSymbol      , VoidSymbol      , 9               , U2079           , VoidSymbol      , VoidSymbol      ]}; // 9 (     9 ⁹
    key <AE10> {[ 0               , parenright      , degree          , VoidSymbol      , slash           , division        , VoidSymbol      , VoidSymbol      ]}; // 0 ) °   / ÷

    // Letters, first row
    key <AD01> {[ q               , Q               , ae              , AE              , equal           , notequal        , VoidSymbol      , VoidSymbol      ]}; // q Q æ Æ = ≠
    key <AD02> {[ w               , W               , eacute          , Eacute          , less            , lessthanequal   , VoidSymbol      , VoidSymbol      ]}; // w W é É < ≤
    key <AD03> {[ e               , E               , egrave          , Egrave          , greater         , greaterthanequal, VoidSymbol      , VoidSymbol      ]}; // e E è È > ≥
    key <AD04> {[ r               , R               , registered      , trademark       , minus           , emdash          , VoidSymbol      , VoidSymbol      ]}; // r R ® ™ - —
    key <AD05> {[ t               , T               , thorn           , Thorn           , plus            , plusminus       , VoidSymbol      , VoidSymbol      ]}; // t T þ Þ + ±
    key <AD06> {[ y               , Y               , yen             , currency        , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol      ]}; // y Y ¥ ¤
    key <AD07> {[ u               , U               , ugrave          , Ugrave          , 4               , U2074           , VoidSymbol      , VoidSymbol      ]}; // u U ù Ù 4 ⁴
    key <AD08> {[ i               , I               , U0133           , U0132           , 5               , U2075           , VoidSymbol      , VoidSymbol      ]}; // i I ij IJ 5 ⁵
    key <AD09> {[ o               , O               , oe              , OE              , 6               , U2076           , VoidSymbol      , VoidSymbol      ]}; // o O œ Œ 6 ⁶
    key <AD10> {[ p               , P               , section         , paragraph       , asterisk        , multiply        , VoidSymbol      , VoidSymbol      ]}; // p P § ¶ * ×

    // Letters, second row
    key <AC01> {[ a               , A               , agrave          , Agrave          , braceleft       , VoidSymbol      , VoidSymbol      , VoidSymbol      ]}; // a A à À {
    key <AC02> {[ s               , S               , ssharp          , U1E9E           , bracketleft     , VoidSymbol      , VoidSymbol      , VoidSymbol      ]}; // s S ß ẞ [
    key <AC03> {[ d               , D               , eth             , Eth             , bracketright    , VoidSymbol      , VoidSymbol      , VoidSymbol      ]}; // d D ð Ð ]
    key <AC04> {[ f               , F               , U017F           , ordfeminine     , braceright      , VoidSymbol      , VoidSymbol      , VoidSymbol      ]}; // f F ſ ª }
    key <AC05> {[ g               , G               , copyright       , VoidSymbol      , slash           , VoidSymbol      , VoidSymbol      , VoidSymbol      ]}; // g G ©   /
    key <AC06> {[ h               , H               , leftarrow       , U21D0           , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol      ]}; // h H ← ⇐
    key <AC07> {[ j               , J               , downarrow       , U21D3           , 1               , onesuperior     , VoidSymbol      , VoidSymbol      ]}; // j J ↓ ⇓ 1 ¹
    key <AC08> {[ k               , K               , uparrow         , U21D1           , 2               , twosuperior     , VoidSymbol      , VoidSymbol      ]}; // k K ↑ ⇑ 2 ²
    key <AC09> {[ l               , L               , rightarrow      , U21D2           , 3               , threesuperior   , VoidSymbol      , VoidSymbol      ]}; // l L → ⇒ 3 ³
    key <AC10> {[ ISO_Level3_Latch, ISO_Level3_Latch, grave           , VoidSymbol      , minus           , U2212           , VoidSymbol      , VoidSymbol      ]}; // ` ` `   - −

    // Letters, third row
    key <AB01> {[ z               , Z               , less            , lessthanequal   , asciitilde      , dead_tilde      , VoidSymbol      , VoidSymbol      ]}; // z Z < ≤ ~ ~
    key <AB02> {[ x               , X               , greater         , greaterthanequal, grave           , dead_grave      , VoidSymbol      , VoidSymbol      ]}; // x X > ≥ ` `
    key <AB03> {[ c               , C               , ccedilla        , Ccedilla        , bar             , brokenbar       , VoidSymbol      , VoidSymbol      ]}; // c C ç Ç | ¦
    key <AB04> {[ v               , V               , ubreve          , Ubreve          , underscore      , endash          , VoidSymbol      , VoidSymbol      ]}; // v V ŭ Ŭ _ –
    key <AB05> {[ b               , B               , dagger          , doubledagger    , backslash       , VoidSymbol      , VoidSymbol      , VoidSymbol      ]}; // b B † ‡ \ 
    key <AB06> {[ n               , N               , ntilde          , Ntilde          , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol      ]}; // n N ñ Ñ
    key <AB07> {[ m               , M               , mu              , masculine       , 0               , U2070           , VoidSymbol      , VoidSymbol      ]}; // m M µ º 0 ⁰
    key <AB08> {[ comma           , semicolon       , periodcentered  , U2022           , comma           , VoidSymbol      , VoidSymbol      , VoidSymbol      ]}; // , ; · • ,
    key <AB09> {[ period          , colon           , ellipsis        , VoidSymbol      , period          , VoidSymbol      , VoidSymbol      , VoidSymbol      ]}; // . : …   .
    key <AB10> {[ slash           , question        , backslash       , questiondown    , plus            , notsign         , VoidSymbol      , VoidSymbol      ]}; // / ? \ ¿ + ¬

    // Pinky keys
    key <AE11> {[ minus           , underscore      , emdash          , endash          , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol      ]}; // - _ — –
    key <AE12> {[ equal           , plus            , notequal        , plusminus       , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol      ]}; // = + ≠ ±
    key <AD11> {[ dead_circumflex , guillemotleft   , bracketleft     , braceleft       , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol      ]}; // ^ « [ {
    key <AD12> {[ dead_diaeresis  , guillemotright  , bracketright    , braceright      , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol      ]}; // ¨ » ] }
    key <AC11> {[ apostrophe      , quotedbl        , VoidSymbol      , VoidSymbol      , dead_acute      , dead_abovedot   , VoidSymbol      , VoidSymbol      ]}; // ' "     ´ ˙
    key <TLDE> {[ grave           , asciitilde      , VoidSymbol      , VoidSymbol      , dead_grave      , dead_tilde      , VoidSymbol      , VoidSymbol      ]}; // ` ~     ` ~
    key <BKSL> {[ backslash       , bar             , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol      ]}; // \ |
    key <LSGT> {[ less            , greater         , lessthanequal   , greaterthanequal, VoidSymbol      , VoidSymbol      , VoidSymbol      , VoidSymbol      ]}; // < > ≤ ≥

    // Space bar
    key <SPCE> {[ space           , nobreakspace    , U2019           , U2019           , nobreakspace    , U202F           , VoidSymbol      , VoidSymbol      ]}; //     ’ ’

    // The “OneDeadKey” is an ISO_Level3_Latch, i.e. a “dead AltGr” key:
    // this is the only way to have a multi-purpose dead key with XKB.
    // The real AltGr key is an ISO_Level5_Switch.
    include "level5(ralt_switch)"
};

最后,我setxkbmap fr -variant lafayette 运行这个命令时,它告诉我要小心,因为我在 Wayland 下。我别无选择,因为键盘没有出现在 gnome 设置中。

答案1

Wayland 应用程序不知道什么setxkbmap是。如果你正在使用 GNOME Wayland 会话,请尝试

gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'fr+lafayette')]"

我不确定如何让 GNOME 设置将其作为“添加输入源”对话框中的可能选项。据我所知,gnome-control-center 43 使用 gnome_xkb_info_get_layouts_for_language() 从 libgnome-desktop 获取这些,我认为它将委托给 libxkbregistry,后者在某个时候被合并到 libxkbcommon 中,我思考应该解析/usr/share/X11/xkb/rules/evdev.xml

也许您的 evdev.xml 已损坏?我发现type="..."您的自定义标签上<variant>没有其他标签,这很奇怪。

相关内容