10 my $map = shift if @ARGV and $ARGV[0] =~ /^-+m/;
14 return JSON->new->utf8->decode(readline);
15 } or die "Could not read keyboard layout data: $@\n";
17 my $geochar = do './keyspos.inc.pl'
18 or die "Could not read keyboard position names: $@\n";
20 if (($info->{moderows} // '') =~ /4/) {
21 push @{$_}, map {"+$_"} @{$_} for values %{$geochar};
24 unshift @{$_}, '', '' for values %{$geochar};
27 my ($name) = $ARGV =~ m{.*/([^.]+)};
28 my $len = (grep { defined $_->[4] } values %{$geochar}) ?
32 default partial alphanumeric_keys
34 name[Group1] = "$info->{title}";
35 key.type[Group1] = "${len}_LEVEL_SEMIALPHABETIC";
38 for my $k (sort keys %{$geochar}) {
39 printf "\tkey <%s> {[%s]};\n", $k, join(', ',
40 map { !$_ ? 'NoSymbol' : sprintf 'U%04X', ord }
41 map { $info->{key}->{$_} } @{ $geochar->{$k} }
49 mkxkbsymbols - Export keyboard layout metadata as Xorg symbols
53 tools/mkxkbsymbols data/keyboard/altgr/$NAME.eng.json >$NAME
54 setxkbmap -print $NAME | xkbcomp -w0 -I.. - $DISPLAY
58 Converts site includes (back) to I<xkb_symbols> configurations
59 compatible with C<xkbcomp> so it can be used in Xorg.
63 Mischa POSLAWSKY <perl@shiar.org>
67 Licensed under the GNU Affero General Public License version 3.