-# $key = $keytrans{$key} if defined $keytrans{$key};
- my $keytxt = $mode . escapehtml($key) if $key ne '^0';
- $keytxt .= $self->{sign}->{$1} while $flags =~ s/(?:^| )(arg[a-ln-z]?)\b//; # arguments
+sub print_key {
+ my $self = shift;
+ my ($mode, $key, $flags) = @_;
+ my ($desc, $mnem);
+
+ if (not defined $flags) {
+ $flags = $key eq '^0' ? 'ni' : 'no';
+ }
+ elsif ($flags =~ s/^=(\S+)\s?//) { # alias
+ my $ref = $1;
+ $desc = $self->{sign}->{alias} . ($ref eq "\e" ? 'esc' : $ref);
+ $flags = join ' ', $self->keyunalias($ref), 'alias', $flags;
+ }
+ if (my $txt = $self->{key}->{$mode.$key}) {
+ ($desc, $mnem) = split /\n/, $self->escapedesc($txt);
+ }
+
+ my $keytxt = $self->print_letter($key, $mode);