From: Mischa POSLAWSKY Date: Thu, 21 Mar 2024 15:22:59 +0000 (+0100) Subject: keyboard/altgr/unigraph: mkxkbsymbols --map to export a partial mode X-Git-Tag: v1.19~29 X-Git-Url: http://git.shiar.net/sheet.git/commitdiff_plain/696a8536a4d0407116c0d587433b11b80a28a15a keyboard/altgr/unigraph: mkxkbsymbols --map to export a partial mode Proper altgr group only by skipping the first two levels. --- diff --git a/tools/mkxkbsymbols b/tools/mkxkbsymbols index 0a24a7f..52aa8a9 100755 --- a/tools/mkxkbsymbols +++ b/tools/mkxkbsymbols @@ -5,7 +5,9 @@ use utf8; use JSON (); -our $VERSION = '1.00'; +our $VERSION = '1.01'; + +my $map = shift if @ARGV and $ARGV[0] =~ /^-+m/; my $info = eval { local $/; @@ -18,18 +20,28 @@ my $geochar = do './keyspos.inc.pl' if (($info->{moderows} // '') =~ /4/) { push @{$_}, map {"+$_"} @{$_} for values %{$geochar}; } +if ($map) { + unshift @{$_}, '', '' for values %{$geochar}; +} my ($name) = $ARGV =~ m{.*/([^.]+)}; -say "// setxkbmap -print $name | xkbcomp -w0 -I.. - \$DISPLAY"; -say ''; +my $len = (grep { defined $_->[4] } values %{$geochar}) ? + 'EIGHT' : 'FOUR'; + +printf <<"."; +default partial alphanumeric_keys +xkb_symbols "$name" { + name[Group1] = "$info->{title}"; + key.type[Group1] = "${len}_LEVEL_SEMIALPHABETIC"; +. -say sprintf 'xkb_symbols "%s" {', $info->{title}; for my $k (sort keys %{$geochar}) { printf "\tkey <%s> {[%s]};\n", $k, join(', ', map { !$_ ? 'NoSymbol' : sprintf 'U%04X', ord } map { $info->{key}->{$_} } @{ $geochar->{$k} } ); } + say '};'; =head1 NAME