--- /dev/null
+use utf8;
+use strict;
+use warnings;
+use Shiar_Sheet::KeyboardChars 'kbchars';
+
+my %rows = (
+ '!' => "\N{COMBINING GRAVE ACCENT}",
+ '#' => "\N{COMBINING CIRCUMFLEX ACCENT}",
+ '$' => "\N{COMBINING DIAERESIS}",
+ '%' => "\N{COMBINING RING ABOVE}",
+ '&' => "\N{COMBINING CEDILLA}",
+ '~' => "\N{COMBINING TILDE}",
+ '(' => "\N{COMBINING CARON}",
+ ')' => "\N{COMBINING DOUBLE ACUTE ACCENT}",
+ '*' => "\N{COMBINING OGONEK}",
+ '+' => "\x{2260}",
+ '-' => "\"",
+ '0' => "\x{2070}",
+ '1' => "\xB9",
+ '2' => "\xB2",
+ '3' => "\xB3",
+ '4' => "\x{2074}",
+ '5' => "\x{2075}",
+ '6' => "\x{2076}",
+ '7' => "\x{2077}",
+ '8' => "\x{2078}",
+ '9' => "\x{2079}",
+ '=' => "'",
+ '@' => "\N{COMBINING ACUTE ACCENT}",
+ '[' => "{",
+ ']' => "}",
+ '^' => "\N{COMBINING MACRON}",
+ '_' => "\xB1",
+ '`' => "\xA3",
+ 'A' => "\x{2190}",
+ 'a' => "\xE6",
+ 'B' => "\x{20bf}",
+ 'b' => "\x{2642}",
+ 'c' => "\xA9",
+ 'C' => "\xA2",
+ 'd' => "\x{394}",
+ 'D' => "\x{2192}",
+ 'e' => "\x{20AC}",
+ 'E' => "\x{20AC}",
+ 'f' => "\x{192}",
+ 'F' => "\x{191}",
+ #'g' => "g",
+ #'G' => "G",
+ #'H' => "H",
+ #'h' => "h",
+ 'i' => "\x{2018}",
+ 'I' => "\x{2019}",
+ 'j' => "\x{201C}",
+ 'J' => "\x{201D}",
+ 'k' => "\x{201A}",
+ 'K' => "\x{201E}",
+ 'L' => "\x{3BB}",
+ 'l' => "\xA3",
+ #'M' => "M", # at :
+ 'm' => "\xB5", # at ;
+ #'N' => "N",
+ 'n' => "\x{26a5}",
+ 'o' => "\x{153}",
+ 'O' => "\x{3A9}",
+ 'P' => "\x{20b1}",
+ 'p' => "\x{3C0}",
+ 'q' => "\xF8",
+ 'Q' => "\xD8",
+ 'R' => "\x{20bd}",
+ 'r' => "\xAE",
+ 's' => "\xDF",
+ 'S' => "\x{2193}",
+ 'T' => "\x{3C4}",
+ 't' => "\x{2122}",
+ #'u' => "u",
+ #'U' => "U",
+ #'V' => "V",
+ 'v' => "\x{2640}",
+ 'W' => "\x{2191}",
+ #'w' => "w",
+ 'x' => "\xD7",
+ 'X' => "\xF7",
+ 'y' => "\xA5",
+ 'Y' => "\xA5",
+ 'z' => "\xA7",
+ 'Z' => "\xB6",
+ '{' => "\xAB",
+ '}' => "\xBB",
+
+ '"' => "\x{2030}", # unshifted %
+ "'" => "~", # unshifted #
+ #'|' => '×', # unshifted & at BKSL same as x
+ #'\\'=> '$', # unshifted * at bksl
+ '|' => "≤", # unshifted < at LSGT
+ '\\'=> "≥", # unshifted > at lsgt
+ '<' => "\xB7", # unshifted ,
+ ',' => "\x{2026}", # unshifted .
+ '>' => "\xB4", # unshifted ;
+ '.' => "`", # unshifted :
+ '?' => "\xA6", # unshifted \
+ '/' => "|",
+ ':' => "\xBF", # unshifted ? at M
+ ';' => "\xA1", # unshifted ! at m
+);
+
+my $groups = kbchars(\%rows);
+$groups->{def}{''}{$_} .= ' ext' for qw( ` E Y );
+
++{
+ %{$groups},
+ version => '1.0',
+ title => 'Drix',
+ category => 'latin',
+ intro => join("\n",
+ "European Latin layout version 3.1 providing",
+ '<a href="/unicode">Unicode</a> characters while pressing AltGr,',
+ 'developed by Jerome Leclanche',
+ 'for <abbr title="distributed with X since 2019">Linux</abbr>.',
+ ),
+ description => [
+ "Drix EU Latin keyboard layout table",
+ "with the AltGr modifier key: provides miscellaneous symbols",
+ "and accents for some European languages.",
+ ],
+}