首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wayland中的自定义布局和变体键盘

Wayland中的自定义布局和变体键盘
EN

Ask Ubuntu用户
提问于 2022-10-25 09:21:44
回答 1查看 619关注 0票数 2

我的使用

我使用自定义的QWERTY键盘作为法语。是QWERTY的拉斐特。https://qwerty-lafayette.org/

问题

在许多像vscode这样的应用程序中,我的键盘不工作,并且仍然存在于qwerty us中。所以我不能键入AltGr可以访问的字符,也不能键入法语的重音。

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

我的设置

在网站页面上,我使用了Python安装程序。效果很好。

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

代码语言:javascript
复制
        fr
        
        fr
        French
        
          FR
        
        
          fra
        
      
      
        
          
            nodeadkeys
            French (no dead keys)
          
        
        
          
            oss
            French (alt.)
          
        
        
          
            oss_latin9
            French (alt., Latin-9 only)
          
        
        
          
            oss_nodeadkeys
            French (alt., no dead keys)
          
        
        
          
            latin9
            French (legacy, alt.)
          
        
        
          
            latin9_nodeadkeys
            French (legacy, alt., no dead keys)
          
        
        
          
            bepo
            French (BEPO)
          
        
        
          
            bepo_latin9
            French (BEPO, Latin-9 only)
          
        
        
          
            bepo_afnor
            French (BEPO, AFNOR)
          
        
        
          
            dvorak
            French (Dvorak)
          
        
        
          
            mac
            French (Macintosh)
          
        
        
          
            azerty
            French (AZERTY)
          
        
        
          
            afnor
            French (AZERTY, AFNOR)
          
        
        
          
            bre
            French (Breton)
          
        
        
          
            oci
            Occitan
            
              oci
            
          
        
        
          
            geo
            Georgian (France, AZERTY Tskapo)
            
              kat
            
          
        
        
          
            us
            French (US)
          
        
        
          
            lafayette
            French (Lafayette)
          
        
        
          
            lafayette42
            French (Lafayette42)

/usr/share/X11/xkb/symbols/fr中,我有以下内容:

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

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

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

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

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

    // Space bar
    key  {[ 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设置中。

EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2022-10-31 09:43:53

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

代码语言:javascript
复制
gsettings set org.gnome.desktop.input-source "[('xkb', 'fr+lafayette')]"

我不知道如何让GNOME设置在“添加输入源”对话框中作为可能的选择来提供。AFAICT gnome-control-center 43使用gnome_xkb_info_get_layouts_for_language()从libgnome桌面获取这些信息,我认为它委托给libxkbregistry,它在某个时候被合并到libgnome公共中,我认为它应该解析/usr/share/X11/xkb/rules/evdev.xml

也许你的evdev.xml坏了?我觉得奇怪的是,在您的自定义type="..."标记上看到了其他所有标记都没有的。

票数 1
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1437227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档