keyboard: preliminary altgr subpage ukext with additional classes
authorMischa POSLAWSKY <perl@shiar.org>
Sun, 3 Dec 2023 17:19:25 +0000 (18:19 +0100)
committerMischa POSLAWSKY <perl@shiar.org>
Tue, 19 Dec 2023 03:03:41 +0000 (04:03 +0100)
Copied from <https://en.wikipedia.org/wiki/QWERTY?oldid=1186015470#ChromeOS>
table.

altgr-ukext.eng.inc.pl [new file with mode: 0644]
keyboard.eng.inc.pl

diff --git a/altgr-ukext.eng.inc.pl b/altgr-ukext.eng.inc.pl
new file mode 100644 (file)
index 0000000..0eb81c6
--- /dev/null
@@ -0,0 +1,115 @@
+use utf8;
+our %rows = (
+       '¬' => '◌',
+       '`' => '◌',
+       '~' => '¦',
+       '!' => '¡',
+       '1' => '¹',
+       '"' => '½',
+       '2' => '◌',
+       '£' => '⅓',
+       '3' => '³',
+       '$' => '¼',
+       '4' => '€',
+       '%' => '⅜',
+       '5' => '½',
+       '^' => '⅝',
+       '6' => '◌',
+       '&' => '⅞',
+       '7' => '{',
+       '*' => '™',
+       '8' => '[',
+       '(' => '±',
+       '9' => ']',
+       ')' => '°',
+       '0' => '}',
+       '_' => '¿',
+       '-' => '\\',
+       '+' => '◌',
+       '=' => '◌',
+       'Q' => 'Ω',
+       'q' => '@',
+       'W' => 'Ẃ',
+       'w' => 'ẃ',
+       'E' => 'É',
+       'e' => 'é',
+       'R' => '®',
+       'r' => '¶',
+       'T' => 'Ŧ',
+       't' => 'ŧ',
+       'Y' => 'Ý',
+       'y' => 'ý',
+       'U' => 'Ú',
+       'u' => 'ú',
+       'I' => 'Í',
+       'i' => 'í',
+       'O' => 'Ó',
+       'o' => 'ó',
+       'P' => 'Þ',
+       'p' => 'þ',
+       '{' => '◌',
+       '[' => '◌',
+       '}' => '◌',
+       ']' => '◌',
+       'A' => 'Á',
+       'a' => 'á',
+       'S' => '§',
+       's' => 'ß',
+       'D' => 'Ð',
+       'd' => 'ð',
+       'F' => 'ª',
+       'f' => 'đ',
+       'G' => 'Ŋ',
+       'g' => 'ŋ',
+       'H' => 'Ħ',
+       'h' => 'ħ',
+       'J' => '◌',
+       'j' => '◌',
+       'K' => '&',
+       'k' => 'ĸ',
+       'L' => 'Ł',
+       'l' => 'ł',
+       ':' => '◌',
+       ';' => '◌',
+       '@' => '◌',
+       '\'' => '◌',
+       '~' => '◌',
+       '#' => '◌',
+       '|' => '¦',
+       '\\'=> '|',
+       'Z' => '<',
+       'z' => '«',
+       'X' => '>',
+       'x' => '»',
+       'C' => 'Ç',
+       'c' => 'ç',
+       'V' => '‘',
+       'v' => '“',
+       'B' => '’',
+       'b' => '”',
+       'N' => 'N',
+       'n' => 'n',
+       'M' => 'º',
+       'm' => 'µ',
+       '<' => '×',
+       ',' => '─',
+       '>' => '÷',
+       '.' => '·',
+       '?' => '◌',
+       '/' => '◌',
+);
+
++{
+       %{ do 'keyboard.eng.inc.pl' },
+       title => 'UK-extended',
+       version => '1.0',
+       intro => join("\n",
+               "A Chrome OS extension",
+               "expanding on Windows' UK Extended QWERTY keyboard.",
+               'Similar to the <a href="/keyboard/altgr">US international</a> variant.',
+       ),
+       description => [
+               "Google UK-Extended keyboard layout table for Chrome OS",
+               "with the AltGr modifier key.",
+       ],
+}
index efbdad125c9d5cb7cd07d34ce6fdf7c44bc8eba6..1f372e32c2cf1c8e253e743a3f80dabc1d36247c 100644 (file)
@@ -9,11 +9,13 @@ use Text::Unidecode qw( unidecode );
                                my $v = $rows{$_};
                                my $class = (
                                          !defined $v || $_ eq $v ? 1 # identical
-                                       : $v =~ /\A\p{Mn}+\z/ ? 8 # combining accent
-                                       : NFKD($v) =~ $_ ? 2 # decomposed equivalent
-                                       : $v =~ /^\p{Latin}/ ? 4 # latin script
-                                       : unidecode($v) =~ /^\W*\Q$_/ ? 5 # transliterated
-                                       : 7
+                                       : $v =~ /\A\p{Mn}+\z/ ? 9 # combining accent
+                                       : $v =~ /\A[\p{Sk}\p{Lm}]+\z/ ? 8 # modifier symbol
+                                       : $v =~ /\A[\pM\pP]+\z/ ? 7 # mark
+                                       : NFKD($v) =~ /\Q$_/ ? 2 # decomposed equivalent
+                                       : unidecode($v) =~ /\Q$_\E+/i ? 4 # transliterated
+                                       : $v =~ /^\p{Latin}/ ? 5 # latin script
+                                       : 6
                                );
                                $_ => "g$class"
                        } keys %rows
@@ -23,9 +25,11 @@ use Text::Unidecode qw( unidecode );
        flag => {
                g1 => ['unaltered', "same results as without modifier"],
                g2 => ['accented', "decomposes to the original letter with a combining accent"],
-               g4 => ['latin', "a different (accented) latin letter"],
-               g5 => ['similar', "transliterates (mostly) into the unmodified letter"],
-               g7 => ['other', "symbol not directly deducible from key"],
-               g8 => ['combining', "diacritical mark to be combined with a following character"],
+               g4 => ['similar', "transliterates (mostly) into the unmodified letter"],
+               g5 => ['latin', "a different (accented) latin letter"],
+               g6 => ['symbol', "other character not directly deducible from key"],
+               g7 => ['punctuation', "(punctuation) mark"],
+               g8 => ['mark', "modifier letter or mark (spacing diacritic)"],
+               g9 => ['combining', "diacritical mark to be combined with a following character"],
        },
 }