X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/8bf4b29ac2bea396e7aafe10713ec3b148a153a8..32a6cc3086f1c4ff99aadd88c976fe854a3fd826:/Shiar_Sheet/Keyboard.pm diff --git a/Shiar_Sheet/Keyboard.pm b/Shiar_Sheet/Keyboard.pm index 44ecc4d..98c5a40 100644 --- a/Shiar_Sheet/Keyboard.pm +++ b/Shiar_Sheet/Keyboard.pm @@ -14,12 +14,12 @@ my %keyrows = do 'keys.inc.pl'; # add first two cases of each row again with each char prepended by + (alt) push @$_, map { [map {"+$_"} @$_] } @$_[0,1] for map {@$_} values %keyrows; -my %keytrans = qw( - ^@ NUL ^a SOH ^b STX ^c ETX ^d EOT ^e ENQ ^f ACK ^g BEL - ^h BS ^i tab ^j LF ^k VT ^l FF ^m CR ^n SO ^o SI - ^p DLE ^q DC1 ^r DC2 ^s DC3 ^t DC4 ^u NAK ^v SYN ^w ETB - ^x CAN ^y EM ^z SUB ^[ ESC ^\ FS ^] GS ^^ RS ^_ US - ^? DEL +my %keytrans = ( + '^h' => "\x{232B}", # BS + '^i' => "\x{21E5}", # TAB + '^m' => "\x{21B5}", # CR + '^?' => "\x{2326}", # DEL + '^[' => "\x{238B}", # ESC ); sub new { @@ -89,6 +89,19 @@ sub keyunalias { return $self->keyunalias($keyinfo, $ancestry); } +sub print_letter { + my $self = shift; + my ($key, $mode) = @_; + + return if $key eq '^0'; + return 'Esc' if $key eq "\e"; + return $keytrans{$key} if defined $keytrans{$key}; + my $html = $self->{def}{$mode}{lead} . escapehtml($key); + $html =~ s{\^(?=.)}{^}; # element around ctrl-identifier + $html =~ s{\+(?=.)}{+}; # meta + return $html; +} + sub print_key { my $self = shift; my ($mode, $key, $flags) = @_; @@ -106,12 +119,9 @@ sub print_key { ($desc, $mnem) = split /\n/, $self->escapedesc($txt); } -# $key = $keytrans{$key} if defined $keytrans{$key}; - my $keytxt = $key eq "\e" ? 'Esc' : $self->{def}{$mode}{lead} . escapehtml($key) if $key ne '^0'; + my $keytxt = $self->print_letter($key, $mode); $keytxt .= $self->{sign}->{$1} while $flags =~ s/(?:^| )(arg[a-ln-z]?)\b//; # arguments $keytxt .= "$self->{sign}->{motion}" if $flags =~ s/ ?\bargm\b//; # motion argument - $keytxt =~ s{\^(?=.)}{^}; # element around ctrl-identifier - $keytxt =~ s{\+(?=.)}{+}; # meta my $keyhint = defined($mnem) && qq{ title="$mnem"}; $keytxt = "$keytxt"; $keytxt .= ' '.$desc if defined $desc;