diff options
-rw-r--r-- | nixos/common.nix | 22 | ||||
-rw-r--r-- | nixos/kusanagi.nix | 1 | ||||
-rw-r--r-- | nixos/lindy.nix | 2 | ||||
-rw-r--r-- | nixos/sway.nix | 32 | ||||
-rw-r--r-- | nixos/wayfire.nix | 40 | ||||
-rw-r--r-- | nixos/wmonly.nix | 8 | ||||
-rw-r--r-- | nixpkgs/kusanagi.nix | 5 | ||||
-rw-r--r-- | nixpkgs/wayfire.nix | 19 | ||||
-rw-r--r-- | nixpkgs/wmonly.nix | 14 | ||||
-rw-r--r-- | wayfire/wayfire.ini | 4 | ||||
-rw-r--r-- | xkb/keymaps/custom-fr (renamed from xkb/symbols/custom-fr) | 0 | ||||
-rw-r--r-- | xkb/keymaps/xkb.dump (renamed from xkb/symbols/xkb.dump) | 0 | ||||
-rw-r--r-- | xkb/symbols/ergol-07 | 117 | ||||
-rw-r--r-- | xkb/symbols/ergol-07-lx | 125 |
14 files changed, 325 insertions, 64 deletions
diff --git a/nixos/common.nix b/nixos/common.nix index 69cde9c..324de81 100644 --- a/nixos/common.nix +++ b/nixos/common.nix @@ -49,12 +49,24 @@ services.xserver.enable = true; # Configure keymap in X11 - services.xserver.layout = "fr-custom-lx"; + services.xserver.layout = "fr-custom-lx,ergol-lx"; services.xserver.xkbOptions = "terminate:ctrl_alt_bksp,caps:escape"; - services.xserver.extraLayouts."fr-custom-lx" = { - description = "French (LX custom azerty)"; - languages = ["fre"]; - symbolsFile = ../xkb/symbols/fr-custom-lx; + services.xserver.extraLayouts = { + "fr-custom-lx" = { + description = "French (LX custom azerty)"; + languages = ["fre"]; + symbolsFile = ../xkb/symbols/fr-custom-lx; + }; + "ergol" = { + description = "Ergol"; + languages = ["fre"]; + symbolsFile = ../xkb/symbols/ergol-07; + }; + "ergol-lx" = { + description = "Ergol LX"; + languages = ["fre"]; + symbolsFile = ../xkb/symbols/ergol-07-lx; + }; }; # Input method for japanese diff --git a/nixos/kusanagi.nix b/nixos/kusanagi.nix index 88e3b66..34a886c 100644 --- a/nixos/kusanagi.nix +++ b/nixos/kusanagi.nix @@ -20,6 +20,7 @@ in [ (modulesPath + "/installer/scan/not-detected.nix") ./common.nix + ./sway.nix ./wayfire.nix ./local.nix (import "${home-manager}/nixos") diff --git a/nixos/lindy.nix b/nixos/lindy.nix index e6e8e2c..279a79c 100644 --- a/nixos/lindy.nix +++ b/nixos/lindy.nix @@ -8,7 +8,7 @@ #./95theme.nix #./gnome.nix #./fdn-vpn.nix - ./wayfire.nix + ./sway.nix ]; networking.hostName = "lindy"; diff --git a/nixos/sway.nix b/nixos/sway.nix new file mode 100644 index 0000000..73050f5 --- /dev/null +++ b/nixos/sway.nix @@ -0,0 +1,32 @@ +{ config, lib, pkgs, modulesPath, ... }: +{ + imports = [ + ./wmonly.nix + ]; + + programs.sway = { + enable = true; + #package = pkgs.swayfx; + wrapperFeatures.gtk = true; + wrapperFeatures.base = true; + extraPackages = with pkgs; [ + glib + ]; + }; + + security.pam.services.swaylock = {}; + + environment.systemPackages = with pkgs; [ + swaybg + bemenu + swayimg + + xdg-desktop-portal-wlr + waybar + alacritty + swaylock + wdisplays + grim + cage + ]; +} diff --git a/nixos/wayfire.nix b/nixos/wayfire.nix index 2feeefd..05c3fbd 100644 --- a/nixos/wayfire.nix +++ b/nixos/wayfire.nix @@ -1,46 +1,14 @@ + { config, lib, pkgs, modulesPath, ... }: { imports = [ ./wmonly.nix ]; - services.xserver.displayManager.sx.enable = true; - - security.pam.services.swaylock = {}; - - programs.sway = { - enable = true; - #package = pkgs.swayfx; - wrapperFeatures.gtk = true; - wrapperFeatures.base = true; - extraPackages = with pkgs; [ - glib - ]; - }; - qt = { - enable = true; - platformTheme = "gnome"; - style = "adwaita"; - }; - environment.systemPackages = with pkgs; [ # ---- wayfire ---- - #wayfire-with-plugins - #wayfirePlugins.wcm - #wayfirePlugins.wf-shell - - # ---- sway ---- - #swayfx - swaybg - bemenu - swayimg - - # ---- common utils ---- - xdg-desktop-portal-wlr - waybar - alacritty - swaylock - wdisplays - grim + wayfire-with-plugins + wayfirePlugins.wcm + wayfirePlugins.wf-shell ]; } diff --git a/nixos/wmonly.nix b/nixos/wmonly.nix index 2f1b2f1..42c9300 100644 --- a/nixos/wmonly.nix +++ b/nixos/wmonly.nix @@ -1,5 +1,13 @@ { config, lib, pkgs, modulesPath, ... }: { + services.xserver.displayManager.sx.enable = true; + + qt = { + enable = true; + platformTheme = "gnome"; + style = "adwaita"; + }; + services.udisks2.enable = true; services.gvfs.enable = true; diff --git a/nixpkgs/kusanagi.nix b/nixpkgs/kusanagi.nix index 19b367d..03a3bf7 100644 --- a/nixpkgs/kusanagi.nix +++ b/nixpkgs/kusanagi.nix @@ -6,7 +6,7 @@ let sha256 = "sha256:1dizlmwzl6319s9cfbd770ydlj0kf0k3yz5rzw4xni8lnh691hx7"; }; in { - imports = [ ./common.nix ./wayfire.nix ]; + imports = [ ./common.nix ./wmonly.nix ]; programs.bash.profileExtra = '' function mklink { @@ -37,6 +37,9 @@ in { mklink /Z/lx/app/element ~/.config/Element mklink /Z/lx/app/dino ~/.local/share/dino mklink /Z/lx/app/signal ~/.config/Signal + + mkdir -p ~/.xkb + mklink /etc/X11/xkb/symbols ~/.xkb/symbols ''; programs.bash.shellAliases.z = "cd /Z/lx"; diff --git a/nixpkgs/wayfire.nix b/nixpkgs/wayfire.nix deleted file mode 100644 index b0e26b7..0000000 --- a/nixpkgs/wayfire.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ pkgs, ... }: { - imports = [ ./wmonly.nix ]; - - home.file = { - ".config/wayfire.ini".source = ../wayfire/wayfire.ini; - - ".config/waybar/config".source = ../waybar/config; - ".config/waybar/style.css".source = ../waybar/style.css; - - ".config/sway/config".source = ../sway/config; - }; - - xdg.mimeApps.defaultApplications = { - "application/pdf" = [ "org.gnome.Evince.desktop" ]; - "image/jpeg" = [ "org.gnome.eog.desktop" ]; - "image/png" = [ "org.gnome.eog.desktop" ]; - "text/plain" = [ "org.gnome.gedit.desktop" ]; - }; -} diff --git a/nixpkgs/wmonly.nix b/nixpkgs/wmonly.nix index fbc5324..ef08289 100644 --- a/nixpkgs/wmonly.nix +++ b/nixpkgs/wmonly.nix @@ -19,4 +19,18 @@ GTK_IM_MODULE = "fcitx"; QT_IM_MODULE = "fcitx"; }; + + home.file = { + ".config/waybar/config".source = ../waybar/config; + ".config/waybar/style.css".source = ../waybar/style.css; + ".config/sway/config".source = ../sway/config; + ".config/wayfire.ini".source = ../wayfire/wayfire.ini; + }; + + xdg.mimeApps.defaultApplications = { + "application/pdf" = [ "org.gnome.Evince.desktop" ]; + "image/jpeg" = [ "org.gnome.eog.desktop" ]; + "image/png" = [ "org.gnome.eog.desktop" ]; + "text/plain" = [ "org.gnome.gedit.desktop" ]; + }; } diff --git a/wayfire/wayfire.ini b/wayfire/wayfire.ini index d37d810..0384c54 100644 --- a/wayfire/wayfire.ini +++ b/wayfire/wayfire.ini @@ -190,9 +190,9 @@ tap_to_click = true touchpad_accel_profile = default touchpad_cursor_speed = 0.000000 touchpad_scroll_speed = 1.000000 -xkb_layout = fr-custom-lx +xkb_layout = ergol-lx xkb_model = -xkb_options = +xkb_options = altwin:swap_lalt_lwin,caps:super xkb_rules = evdev xkb_variant = diff --git a/xkb/symbols/custom-fr b/xkb/keymaps/custom-fr index 795c7ff..795c7ff 100644 --- a/xkb/symbols/custom-fr +++ b/xkb/keymaps/custom-fr diff --git a/xkb/symbols/xkb.dump b/xkb/keymaps/xkb.dump index 2c0bc8c..2c0bc8c 100644 --- a/xkb/symbols/xkb.dump +++ b/xkb/keymaps/xkb.dump diff --git a/xkb/symbols/ergol-07 b/xkb/symbols/ergol-07 new file mode 100644 index 0000000..b39b730 --- /dev/null +++ b/xkb/symbols/ergol-07 @@ -0,0 +1,117 @@ +// Project page : https://github.com/Nuclear-Squid/ergol +// Author : NuclearSquid +// Version : 0.7.0 LTS +// Last change : 2024-02-05 +// License : WTFPL - Do What The Fuck You Want Public License +// +// French (Ergo-L) +// +// Base layer + dead key +// ╭╌╌╌╌╌┰─────┬─────┬─────┬─────┬─────┰─────┬─────┬─────┬─────┬─────┰╌╌╌╌╌┬╌╌╌╌╌╮ +// ┆ ~ ┃ ! ¡ │ @ « │ # » │ $ ¢ │ % ‰ ┃ ^ │ & │ * │ ( │ ) ┃ _ – ┆ + ± ┆ +// ┆ ` ┃ 1 „ │ 2 “ │ 3 ” │ 4 £ │ 5 € ┃ 6 ¥ │ 7 ¤ │ 8 § │ 9 ¶ │ 0 ° ┃ / ÷ ┆ = ≠ ┆ +// ╰╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +// ┃ Q │ C │ O │ P │ W ┃ J │ M │ D _ │***¨ │ F ┃ { ┆ } ┆ +// ┃ â │ ç │ œ │ ô │ – ┃ │ µ │ _ │***¨ │ û ┃ [ ┆ ] ┆ +// ┠─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +// ┃ A │ S │ E │ N │ ; • ┃ L │ R │ T │ I │ U ┃ " ┆ | ┆ +// ┃ à │ é │ è │ ê │ , · ┃ │ │ î │ ï │ ù ┃ ' ┆ \ ┆ +// ╭╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┴╌╌╌╌╌╯ +// ┆ > ┃ Z │ X │ ? ¿ │ V │ B ┃ : │ H │ G │ Y │ K ┃ +// ┆ < ┃ æ │ ß │ - ‑ │ ñ │ — ┃ . … │ │ *µ │ ÿ │ ŭ ┃ +// ╰╌╌╌╌╌┸─────┴─────┴─────┴─────┴─────┸─────┴─────┴─────┴─────┴─────┚ +// +// AltGr layer +// ╭╌╌╌╌╌┰─────┬─────┬─────┬─────┬─────┰─────┬─────┬─────┬─────┬─────┰╌╌╌╌╌┬╌╌╌╌╌╮ +// ┆ ┃ ¹ │ ² │ ³ │ ⁴ │ ⁵ ┃ ⁶ │ ⁷ │ ⁸ │ ⁹ │ ⁰ ┃ ┆ ┆ +// ┆ ┃ ₁ │ ₂ │ ₃ │ ₄ │ ₅ ┃ ₆ │ ₇ │ ₈ │ ₉ │ ₀ ┃ ┆ ┆ +// ╰╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +// ┃ │ │ │ *¤ │ ‰ ┃ *^ │ │ × │ *´ │ *` ┃ ┆ ┆ +// ┃ @ │ < │ > │ $ │ % ┃ ^ │ & │ * │ ' │ ` ┃ ┆ ┆ +// ┠─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +// ┃ │ ⁽ │ ⁾ │ │ ≠ ┃ */ │ ± │ — │ ÷ │ *¨ ┃ ┆ ┆ +// ┃ { │ ( │ ) │ } │ = ┃ \ │ + │ - │ / │ " ┃ ┆ ┆ +// ╭╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┴╌╌╌╌╌╯ +// ┆ ┃ *~ │ │ │ – │ ┃ │ ¬ │ *¸ │ │ ┃ +// ┆ ┃ ~ │ [ │ ] │ _ │ # ┃ | │ ! │ ; │ : │ ? ┃ +// ╰╌╌╌╌╌┸─────┴─────┴─────┴─────┴─────┸─────┴─────┴─────┴─────┴─────┚ + +partial alphanumeric_keys modifier_keys +xkb_symbols "ergol" { + name[group1]= "French (Ergo-L)"; + key.type[group1] = "EIGHT_LEVEL"; + + // Digits + key <AE01> {[ 1 , exclam , U2081 , onesuperior , U201E , exclamdown , VoidSymbol , VoidSymbol ]}; // 1 ! „ ¡ ₁ ¹ + key <AE02> {[ 2 , at , U2082 , twosuperior , U201C , guillemotleft , VoidSymbol , VoidSymbol ]}; // 2 @ “ « ₂ ² + key <AE03> {[ 3 , numbersign , U2083 , threesuperior , U201D , guillemotright , VoidSymbol , VoidSymbol ]}; // 3 # ” » ₃ ³ + key <AE04> {[ 4 , dollar , U2084 , U2074 , sterling , cent , VoidSymbol , VoidSymbol ]}; // 4 $ £ ¢ ₄ ⁴ + key <AE05> {[ 5 , percent , U2085 , U2075 , EuroSign , U2030 , VoidSymbol , VoidSymbol ]}; // 5 % € ‰ ₅ ⁵ + key <AE06> {[ 6 , asciicircum , U2086 , U2076 , yen , VoidSymbol , VoidSymbol , VoidSymbol ]}; // 6 ^ ¥ ₆ ⁶ + key <AE07> {[ 7 , ampersand , U2087 , U2077 , currency , VoidSymbol , VoidSymbol , VoidSymbol ]}; // 7 & ¤ ₇ ⁷ + key <AE08> {[ 8 , asterisk , U2088 , U2078 , section , VoidSymbol , VoidSymbol , VoidSymbol ]}; // 8 * § ₈ ⁸ + key <AE09> {[ 9 , parenleft , U2089 , U2079 , paragraph , VoidSymbol , VoidSymbol , VoidSymbol ]}; // 9 ( ¶ ₉ ⁹ + key <AE10> {[ 0 , parenright , U2080 , U2070 , degree , VoidSymbol , VoidSymbol , VoidSymbol ]}; // 0 ) ° ₀ ⁰ + + // Letters, first row + key <AD01> {[ q , Q , at , VoidSymbol , acircumflex , Acircumflex , VoidSymbol , VoidSymbol ]}; // q Q â  @ + key <AD02> {[ c , C , less , lessthanequal , ccedilla , Ccedilla , VoidSymbol , VoidSymbol ]}; // c C ç Ç < ≤ + key <AD03> {[ o , O , greater , greaterthanequal, oe , OE , VoidSymbol , VoidSymbol ]}; // o O œ Œ > ≥ + key <AD04> {[ p , P , dollar , dead_currency , ocircumflex , Ocircumflex , VoidSymbol , VoidSymbol ]}; // p P ô Ô $ ¤ + key <AD05> {[ w , W , percent , U2030 , endash , VoidSymbol , VoidSymbol , VoidSymbol ]}; // w W – % ‰ + key <AD06> {[ j , J , asciicircum , dead_circumflex , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // j J ^ ^ + key <AD07> {[ m , M , ampersand , VoidSymbol , mu , VoidSymbol , VoidSymbol , VoidSymbol ]}; // m M µ & + key <AD08> {[ d , D , asterisk , multiply , underscore , underscore , VoidSymbol , VoidSymbol ]}; // d D _ _ * × + key <AD09> {[ ISO_Level5_Latch, ISO_Level5_Latch, apostrophe , dead_acute , dead_diaeresis , dead_diaeresis , VoidSymbol , VoidSymbol ]}; // *¨ *¨ ¨ ¨ ' ´ + key <AD10> {[ f , F , grave , dead_grave , ucircumflex , Ucircumflex , VoidSymbol , VoidSymbol ]}; // f F û Û ` ` + + // Letters, second row + key <AC01> {[ a , A , braceleft , VoidSymbol , agrave , Agrave , VoidSymbol , VoidSymbol ]}; // a A à À { + key <AC02> {[ s , S , parenleft , U207D , eacute , Eacute , VoidSymbol , VoidSymbol ]}; // s S é É ( ⁽ + key <AC03> {[ e , E , parenright , U207E , egrave , Egrave , VoidSymbol , VoidSymbol ]}; // e E è È ) ⁾ + key <AC04> {[ n , N , braceright , VoidSymbol , ecircumflex , Ecircumflex , VoidSymbol , VoidSymbol ]}; // n N ê Ê } + key <AC05> {[ comma , semicolon , equal , notequal , periodcentered , U2022 , VoidSymbol , VoidSymbol ]}; // , ; · • = ≠ + key <AC06> {[ l , L , backslash , dead_stroke , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // l L \ / + key <AC07> {[ r , R , plus , plusminus , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // r R + ± + key <AC08> {[ t , T , minus , emdash , icircumflex , Icircumflex , VoidSymbol , VoidSymbol ]}; // t T î Î - — + key <AC09> {[ i , I , slash , division , idiaeresis , Idiaeresis , VoidSymbol , VoidSymbol ]}; // i I ï Ï / ÷ + key <AC10> {[ u , U , quotedbl , dead_diaeresis , ugrave , Ugrave , VoidSymbol , VoidSymbol ]}; // u U ù Ù " ¨ + + // Letters, third row + key <AB01> {[ z , Z , asciitilde , dead_tilde , ae , AE , VoidSymbol , VoidSymbol ]}; // z Z æ Æ ~ ~ + key <AB02> {[ x , X , bracketleft , VoidSymbol , ssharp , U1E9E , VoidSymbol , VoidSymbol ]}; // x X ß ẞ [ + key <AB03> {[ minus , question , bracketright , VoidSymbol , U2011 , questiondown , VoidSymbol , VoidSymbol ]}; // - ? ‑ ¿ ] + key <AB04> {[ v , V , underscore , endash , ntilde , Ntilde , VoidSymbol , VoidSymbol ]}; // v V ñ Ñ _ – + key <AB05> {[ b , B , numbersign , VoidSymbol , emdash , VoidSymbol , VoidSymbol , VoidSymbol ]}; // b B — # + key <AB06> {[ period , colon , bar , brokenbar , ellipsis , VoidSymbol , VoidSymbol , VoidSymbol ]}; // . : … | ¦ + key <AB07> {[ h , H , exclam , notsign , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // h H ! ¬ + key <AB08> {[ g , G , semicolon , dead_cedilla , dead_greek , VoidSymbol , VoidSymbol , VoidSymbol ]}; // g G µ ; ¸ + key <AB09> {[ y , Y , colon , VoidSymbol , ydiaeresis , Ydiaeresis , VoidSymbol , VoidSymbol ]}; // y Y ÿ Ÿ : + key <AB10> {[ k , K , question , VoidSymbol , ubreve , Ubreve , VoidSymbol , VoidSymbol ]}; // k K ŭ Ŭ ? + + // Pinky keys + key <AE11> {[ slash , underscore , VoidSymbol , VoidSymbol , division , endash , VoidSymbol , VoidSymbol ]}; // / _ ÷ – + key <AE12> {[ equal , plus , VoidSymbol , VoidSymbol , notequal , plusminus , VoidSymbol , VoidSymbol ]}; // = + ≠ ± + key <AE13> {[ VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // + key <AD11> {[ bracketleft , braceleft , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // [ { + key <AD12> {[ bracketright , braceright , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // ] } + key <AC11> {[ apostrophe , quotedbl , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // ' " + key <AB11> {[ VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // + key <TLDE> {[ grave , asciitilde , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // ` ~ + key <BKSL> {[ backslash , bar , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // \ | + key <LSGT> {[ less , greater , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // < > + + // Space bar + key <SPCE> {[ space , U202F , space , nobreakspace , U2019 , U2019 , VoidSymbol , VoidSymbol ]}; // ’ ’ + + // The AltGr key is an ISO_Level3_Shift: + include "level3(ralt_switch)" + + // The “OneDeadKey” is an ISO_Level5_Latch, which is activated by this: + // (note: MDSW [Mode_switch] is an alias for LVL5 on recent versions of XKB) + replace key <MDSW> { + type[Group1] = "ONE_LEVEL", + symbols[Group1] = [ ISO_Level5_Shift ] + }; + modifier_map Mod3 { <MDSW> }; +}; diff --git a/xkb/symbols/ergol-07-lx b/xkb/symbols/ergol-07-lx new file mode 100644 index 0000000..1bfd3bf --- /dev/null +++ b/xkb/symbols/ergol-07-lx @@ -0,0 +1,125 @@ +// Generated by kalamine on 2024-04-08 +// +// This XKB symbols file should be copied to: +// /usr/share/X11/xkb/symbols/custom +// or +// $XKB_CONFIG_ROOT/symbols/custom +// +// File : ergol.xkb_symbols +// Project page : https://github.com/Nuclear-Squid/ergol +// Author : NuclearSquid +// Version : 0.7.0-LX +// License : WTFPL - Do What The Fuck You Want Public License +// +// French (Ergo-L) +// +// Base layer + dead key +// ╭╌╌╌╌╌┰─────┬─────┬─────┬─────┬─────┰─────┬─────┬─────┬─────┬─────┰╌╌╌╌╌┬╌╌╌╌╌╮ +// ┆ ~ ┃ 1 ¡ │ 2 « │ 3 » │ 4 ¢ │ 5 ‰ ┃ 6 │ 7 │ 8 │ 9 │ 0 ┃ # – ┆ + ± ┆ +// ┆ ^ ┃ { „ │ } “ │ " ” │ ' £ │ [ € ┃ ] ¥ │ ` ¤ │ _ § │ ( ¶ │ ) ° ┃ / ÷ ┆ = ≠ ┆ +// ╰╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +// ┃ Q │ C │ O │ P │ W ┃ J │ M │ D _ │***¨ │ F ┃ @ ┆ & ┆ +// ┃ â │ ç │ œ │ ô │ – ┃ │ µ │ _ │***¨ │ û ┃ ! ┆ $ ┆ +// ┠─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +// ┃ A │ S │ E │ N │ ; • ┃ L │ R │ T │ I │ U ┃ % ┆ | ┆ +// ┃ à │ é │ è │ ê │ , · ┃ │ │ î │ ï │ ù ┃ \ ┆ * ┆ +// ╭╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┴╌╌╌╌╌╯ +// ┆ > ┃ Z │ X │ ? ¿ │ V │ B ┃ : │ H │ G │ Y │ K ┃ +// ┆ < ┃ æ │ ß │ - ‑ │ ñ │ — ┃ . … │ │ *µ │ ÿ │ ŭ ┃ +// ╰╌╌╌╌╌┸─────┴─────┴─────┴─────┴─────┸─────┴─────┴─────┴─────┴─────┚ +// +// AltGr layer +// ╭╌╌╌╌╌┰─────┬─────┬─────┬─────┬─────┰─────┬─────┬─────┬─────┬─────┰╌╌╌╌╌┬╌╌╌╌╌╮ +// ┆ ┃ ¹ │ ² │ ³ │ ⁴ │ ⁵ ┃ ⁶ │ ⁷ │ ⁸ │ ⁹ │ ⁰ ┃ ┆ ┆ +// ┆ ┃ ₁ │ ₂ │ ₃ │ ₄ │ ₅ ┃ ₆ │ ₇ │ ₈ │ ₉ │ ₀ ┃ ┆ ┆ +// ╰╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +// ┃ │ │ │ *¤ │ ‰ ┃ *^ │ │ × │ *´ │ *` ┃ ┆ ┆ +// ┃ @ │ < │ > │ $ │ % ┃ ^ │ & │ * │ ' │ ` ┃ ┆ ┆ +// ┠─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤ +// ┃ │ ⁽ │ ⁾ │ │ ≠ ┃ */ │ ± │ — │ ÷ │ *¨ ┃ ┆ ┆ +// ┃ { │ ( │ ) │ } │ = ┃ \ │ + │ - │ / │ " ┃ ┆ ┆ +// ╭╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┴╌╌╌╌╌╯ +// ┆ ┃ *~ │ │ │ – │ ┃ │ ¬ │ *¸ │ │ ┃ +// ┆ ┃ ~ │ [ │ ] │ _ │ # ┃ | │ ! │ ; │ : │ ? ┃ +// ╰╌╌╌╌╌┸─────┴─────┴─────┴─────┴─────┸─────┴─────┴─────┴─────┴─────┚ + +partial alphanumeric_keys modifier_keys +xkb_symbols "ergol" { + name[group1]= "French (Ergo-L)"; + key.type[group1] = "EIGHT_LEVEL"; + + // Digits + key <AE01> {[ braceleft , 1 , U2081 , onesuperior , U201E , exclamdown ]}; // { 1 ₁ ¹ „ ¡ + key <AE02> {[ braceright , 2 , U2082 , twosuperior , U201C , guillemotleft ]}; // } 2 ₂ ² “ « + key <AE03> {[ quotedbl , 3 , U2083 , threesuperior , U201D , guillemotright ]}; // " 3 ₃ ³ ” » + key <AE04> {[ apostrophe , 4 , U2084 , U2074 , sterling , cent ]}; // ' 4 ₄ ⁴ £ ¢ + key <AE05> {[ bracketleft , 5 , U2085 , U2075 , EuroSign , U2030 ]}; // [ 5 ₅ ⁵ € ‰ + key <AE06> {[ bracketright , 6 , U2086 , U2076 , yen , VoidSymbol ]}; // ] 6 ₆ ⁶ ¥ + key <AE07> {[ grave , 7 , U2087 , U2077 , currency , VoidSymbol ]}; // ` 7 ₇ ⁷ ¤ + key <AE08> {[ underscore , 8 , U2088 , U2078 , section , VoidSymbol ]}; // _ 8 ₈ ⁸ § + key <AE09> {[ parenleft , 9 , U2089 , U2079 , paragraph , VoidSymbol ]}; // ( 9 ₉ ⁹ ¶ + key <AE10> {[ parenright , 0 , U2080 , U2070 , degree , VoidSymbol ]}; // ) 0 ₀ ⁰ ° + + // Letters, first row + key <AD01> {[ q , Q , at , VoidSymbol , acircumflex , Acircumflex ]}; // q Q @ â  + key <AD02> {[ c , C , less , lessthanequal , ccedilla , Ccedilla ]}; // c C < ≤ ç Ç + key <AD03> {[ o , O , greater , greaterthanequal, oe , OE ]}; // o O > ≥ œ Œ + key <AD04> {[ p , P , dollar , dead_currency , ocircumflex , Ocircumflex ]}; // p P $ ¤ ô Ô + key <AD05> {[ w , W , percent , U2030 , endash , VoidSymbol ]}; // w W % ‰ – + key <AD06> {[ j , J , asciicircum , dead_circumflex , VoidSymbol , VoidSymbol ]}; // j J ^ ^ + key <AD07> {[ m , M , ampersand , VoidSymbol , mu , VoidSymbol ]}; // m M & µ + key <AD08> {[ d , D , asterisk , multiply , underscore , underscore ]}; // d D * × _ _ + key <AD09> {[ ISO_Level5_Latch, ISO_Level5_Latch, apostrophe , dead_acute , dead_diaeresis , dead_diaeresis ]}; // *¨ *¨ ' ´ ¨ ¨ + key <AD10> {[ f , F , grave , dead_grave , ucircumflex , Ucircumflex ]}; // f F ` ` û Û + + // Letters, second row + key <AC01> {[ a , A , braceleft , VoidSymbol , agrave , Agrave ]}; // a A { à À + key <AC02> {[ s , S , parenleft , U207D , eacute , Eacute ]}; // s S ( ⁽ é É + key <AC03> {[ e , E , parenright , U207E , egrave , Egrave ]}; // e E ) ⁾ è È + key <AC04> {[ n , N , braceright , VoidSymbol , ecircumflex , Ecircumflex ]}; // n N } ê Ê + key <AC05> {[ comma , semicolon , equal , notequal , periodcentered , U2022 ]}; // , ; = ≠ · • + key <AC06> {[ l , L , backslash , dead_stroke , VoidSymbol , VoidSymbol ]}; // l L \ / + key <AC07> {[ r , R , plus , plusminus , VoidSymbol , VoidSymbol ]}; // r R + ± + key <AC08> {[ t , T , minus , emdash , icircumflex , Icircumflex ]}; // t T - — î Î + key <AC09> {[ i , I , slash , division , idiaeresis , Idiaeresis ]}; // i I / ÷ ï Ï + key <AC10> {[ u , U , quotedbl , dead_diaeresis , ugrave , Ugrave ]}; // u U " ¨ ù Ù + + // Letters, third row + key <AB01> {[ z , Z , asciitilde , dead_tilde , ae , AE ]}; // z Z ~ ~ æ Æ + key <AB02> {[ x , X , bracketleft , VoidSymbol , ssharp , U1E9E ]}; // x X [ ß ẞ + key <AB03> {[ minus , question , bracketright , VoidSymbol , U2011 , questiondown ]}; // - ? ] ‑ ¿ + key <AB04> {[ v , V , underscore , endash , ntilde , Ntilde ]}; // v V _ – ñ Ñ + key <AB05> {[ b , B , numbersign , VoidSymbol , emdash , VoidSymbol ]}; // b B # — + key <AB06> {[ period , colon , bar , brokenbar , ellipsis , VoidSymbol ]}; // . : | ¦ … + key <AB07> {[ h , H , exclam , notsign , VoidSymbol , VoidSymbol ]}; // h H ! ¬ + key <AB08> {[ g , G , semicolon , dead_cedilla , dead_greek , VoidSymbol ]}; // g G ; ¸ µ + key <AB09> {[ y , Y , colon , VoidSymbol , ydiaeresis , Ydiaeresis ]}; // y Y : ÿ Ÿ + key <AB10> {[ k , K , question , VoidSymbol , ubreve , Ubreve ]}; // k K ? ŭ Ŭ + + // Pinky keys + key <AE11> {[ slash , numbersign , VoidSymbol , VoidSymbol , division , endash ]}; // / # ÷ – + key <AE12> {[ equal , plus , VoidSymbol , VoidSymbol , notequal , plusminus ]}; // = + ≠ ± + key <AE13> {[ VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // + key <AD11> {[ exclam , at , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // ! @ + key <AD12> {[ dollar , ampersand , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // $ & + key <AC11> {[ backslash , percent , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // \ % + key <AB11> {[ VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // + key <TLDE> {[ asciicircum , asciitilde , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // ^ ~ + key <BKSL> {[ asterisk , bar , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // * | + key <LSGT> {[ less , greater , VoidSymbol , VoidSymbol , VoidSymbol , VoidSymbol ]}; // < > + + // Space bar + key <SPCE> {[ space , U202F , space , nobreakspace , U2019 , U2019 ]}; // ’ ’ + + // The AltGr key is an ISO_Level3_Shift: + include "level3(ralt_switch)" + + // The “OneDeadKey” is an ISO_Level5_Latch, which is activated by this: + // (note: MDSW [Mode_switch] is an alias for LVL5 on recent versions of XKB) + replace key <MDSW> { + type[Group1] = "ONE_LEVEL", + symbols[Group1] = [ ISO_Level5_Shift ] + }; + modifier_map Mod3 { <MDSW> }; +}; +// vim: ft=xkb:fdm=indent:ts=4:nowrap |