+);
+
+for my $name (map {@{$_}} values %cat) {
+ my $keys = do "keyboard/altgr/$name.eng.inc.pl" or next;
+ my %row = %{$keys}{qw( title category flag mode image imagealt )};
+ $cat{$name} = \%row;
+
+ $keys->{mode} //= {'' => undef};
+
+ if ($keys->{def}{''}{'+a'}) {
+ # move root +meta keys to distinct mode
+ $keys->{mode}{"\e"} = '+';
+ /^\+./ and $keys->{def}{"\e"}{$_} = delete $keys->{def}{''}{$_}
+ for keys %{ $keys->{def}{''} };
+ }
+
+ for my $mode (keys %{ $keys->{mode} }) {
+ $row{def}{''}{$_} = $keys->{def}{''}{$_} for $mode || ();
+ $row{inventory}{$mode}{$_}++ for grep { /^g[2-9]/ } map { s/ (?!ext).*//r } map {$_->[0]}
+ values %{ $keys->{def}{$mode} };
+ }