git.shiar.nl
/
sheet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
keyboard/altgr: label keys in each row with big class
[sheet.git]
/
tools
/
mkkeyboard-xkb-symbols
diff --git
a/tools/mkkeyboard-xkb-symbols
b/tools/mkkeyboard-xkb-symbols
index 8e1f9e1dba8aac45e59f862338a430791d90b925..5cac74d803c3a1f7f08d4157fbb4b3caaac2a700 100755
(executable)
--- a/
tools/mkkeyboard-xkb-symbols
+++ b/
tools/mkkeyboard-xkb-symbols
@@
-4,10
+4,11
@@
use warnings;
use utf8;
use re '/msx';
use open IO => ':encoding(utf-8)', ':std';
use utf8;
use re '/msx';
use open IO => ':encoding(utf-8)', ':std';
+use charnames ();
use JSON ();
use Data::Dump 'pp';
use JSON ();
use Data::Dump 'pp';
-our $VERSION = '1.0
1
';
+our $VERSION = '1.0
2
';
my $symname = eval {
open my $keysymh, '<', 'data/keysymdef.json' or die $!;
my $symname = eval {
open my $keysymh, '<', 'data/keysymdef.json' or die $!;
@@
-31,6
+32,9
@@
while (readline) {
elsif (defined $symname->{$chr}) {
$chr = $symname->{$chr};
}
elsif (defined $symname->{$chr}) {
$chr = $symname->{$chr};
}
+ elsif ($chr eq 'NoSymbol') {
+ next;
+ }
else {
warn "unknown symbol $chr at $pos\n";
}
else {
warn "unknown symbol $chr at $pos\n";
}
@@
-38,7
+42,15
@@
while (readline) {
#$res{$pos}[$shift] = $symname->{$chr} // $chr; # geochar
}
}
#$res{$pos}[$shift] = $symname->{$chr} // $chr; # geochar
}
}
-say pp(\%res) =~ s/(?<=") \\x \{? ([0-9A-F]{2,6}) \}?/chr hex $1/reg;
+say ppp(\%res);
+
+sub ppp {
+ local $_ = pp(@_);
+ s/(?<=") \\x \{? ([0-9A-F]{2,6}) \}?/chr hex $1/eg; # unescape glyphs
+ s/(\p{Mn})/sprintf '\N{%s}', charnames::viacode(ord $1)/eg; # named accents
+ return $_;
+}
+
__END__
__END__