- 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 $txt = $self->{key}->{$mode.$key};
+ my ($desc, $mnem) = defined $txt ? @$txt : ();
+
+ if (not defined $flags) {
+ $flags = $key eq '^0' ? 'ni' : 'no';
+ }
+ elsif (not ref $flags) { # alias
+ $desc = $self->{sign}->{alias} . $flags;
+ $flags = $self->keyunalias($flags) . ' alias';
+ }
+ else {
+ $flags = $flags->[0];
+ }