- my ($mode, $key, $keyinfo) = @_;
-
- $keyinfo = [ $self->{sign}->{alias}.$keyinfo, $self->keyunalias($keyinfo)->[1] . ' alias' ]
- if defined $keyinfo and not ref $keyinfo; # alias
- my ($desc, $flags, $mnem) = @$keyinfo if defined $keyinfo;
- defined $desc or $flags = $key eq '^0' ? 'ni' : 'no';
+ my ($mode, $key, $flags) = @_;
+ my ($desc, $mnem);
+
+ if (not defined $flags) {
+ $flags = $key eq '^0' ? 'ni' : 'no';
+ }
+ elsif ($flags =~ s/^=//) { # alias
+ $desc = $self->{sign}->{alias};
+ $desc .= $flags eq "\e" ? 'esc' : $flags;
+ $flags = $self->keyunalias($flags) . ' alias';
+ }
+ if (my $txt = $self->{key}->{$mode.$key}) {
+ ($desc, $mnem) = split /\n/, $self->escapedesc($txt);
+ }