overhaul keyboard module include syntax v1.3
authorMischa POSLAWSKY <perl@shiar.org>
Fri, 18 Jun 2010 21:28:29 +0000 (21:28 +0000)
committerMischa POSLAWSKY <perl@shiar.org>
Fri, 18 Jun 2010 22:01:54 +0000 (22:01 +0000)
Separate key functions (classes) from (translatable) descriptions.

26 files changed:
Shiar_Sheet/Keyboard.pm
keyboard.plp
less.eng.inc.pl [new file with mode: 0644]
less.inc.pl
less.plp
mplayer.eng.inc.pl [new file with mode: 0644]
mplayer.inc.pl
mplayer.plp
mutt.eng.inc.pl [new file with mode: 0644]
mutt.inc.pl
mutt.plp
nethack.eng.inc.pl [new file with mode: 0644]
nethack.inc.pl
nethack.plp
readline.eng.inc.pl [new file with mode: 0644]
readline.inc.pl
readline.plp
starcraft.eng.inc.pl [new file with mode: 0644]
starcraft.inc.pl
starcraft.plp
vi.eng.inc.pl [new file with mode: 0644]
vi.inc.pl
vi.plp
vimperator.eng.inc.pl [new file with mode: 0644]
vimperator.inc.pl
vimperator.plp

index cca8333..7607335 100644 (file)
@@ -5,7 +5,7 @@ use warnings;
 no  warnings 'uninitialized';  # save some useless checks for more legible code
 use Carp;
 
-our $VERSION = 'v1.05';
+our $VERSION = 'v2.00';
 
 my @casedesc = (undef, qw/shift ctrl meta/, 'shift meta');
 my @rowdesc = qw(numeric top home bottom);
@@ -22,18 +22,22 @@ my %keytrans = qw(
 );
 
 sub new {
-       my $self = shift;
-       my ($keys) = @_;
+       my $class = shift;
+       my ($self) = @_;
+
+       croak 'Invalid keyboard definitions specified' unless ref $self eq 'HASH';
+       croak 'No key definitions specified' unless ref $self->{def} eq 'HASH';
+       $self->{map} ||= 'qwerty';
 
-       croak 'Invalid key table specified' unless ref $keys eq 'HASH';
        my $parent = (caller)[0];  # calling module
        my $sign = do {
                no strict 'refs';  # temporarily allow variable references
                \%{ $parent.'::sign' };  # return %sign from parent
        };
        croak "%${parent}::sign not found" unless %$sign;
+       $self->{sign} = $sign;
 
-       bless {sign => $sign, keys => $keys, map => 'qwerty'}, $self;
+       bless $self, $class;
 }
 
 sub map {
@@ -68,25 +72,34 @@ sub keyunalias {
 
        $key =~ s/(\S*?)(\+?\^?\S)($|\s.*)/$2/;
        my $mode = $1;
-       my $keyinfo = $self->{keys}->{$mode}->{$key};
+       my $keyinfo = $self->{def}->{$mode}->{$key};
 
-       return [] unless defined $keyinfo;
-       return $keyinfo if ref $keyinfo;
-       return if $ancestry->{$key}++;  # endless loop failsafe
+       return unless defined $keyinfo;
+       return $keyinfo->[0] if ref $keyinfo;
+       return '' if $ancestry->{$key}++;  # endless loop failsafe
        return $self->keyunalias($keyinfo, $ancestry);
 }
 
 sub print_key {
        my $self = shift;
-       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];
+       }
 
 #      $key = $keytrans{$key} if defined $keytrans{$key};
-       my $keytxt = $mode . escapehtml($key) if $key ne '^0';
+       my $keytxt = $self->{def}{$mode}{lead} . escapehtml($key) if $key ne '^0';
           $keytxt .= $self->{sign}->{$1} while $flags =~ s/(?:^| )(arg[a-ln-z]?)\b//;  # arguments
           $keytxt .= "<small>$self->{sign}->{motion}</small>" if $flags =~ s/ ?\bargm\b//;  # motion argument
           $keytxt =~ s{\^(?=.)}{<small>^</small>};  # element around ctrl-identifier
@@ -95,7 +108,7 @@ sub print_key {
           $keytxt  = "<b$keyhint>$keytxt</b>";
           $keytxt .= ' '.$desc if defined $desc;
           $keytxt = qq{<a href="/$1">$keytxt</a>} if $flags =~ s/ ?\blink(\S*)//;
-       my $onclick = $flags =~ s/ ?\bmode(\S*)// && defined $self->{keys}{$1} && sprintf(
+       my $onclick = $flags =~ s/ ?\bmode(\S*)// && defined $self->{def}{$1} && sprintf(
                ' onclick="setmode(%s)"',
                $1 eq '' ? '' : sprintf(q{'mode%s'}, escapeclass($1))
        );
@@ -112,7 +125,7 @@ sub print_rows {
                # plus specific mode overrides prefixed by '='
        );
        my $defrows = shift || [2, 1, 0];
-       my @modes = sort keys %{ $self->{keys} };
+       my @modes = sort keys %{ $self->{def} };
 
        for (my $row = 0; $row <= $#{ $keyrows{$self->{map}} }; $row++) {
                my $keyrow = $keyrows{$self->{map}}->[$row];
@@ -127,7 +140,7 @@ sub print_rows {
                        my @caserows = $mode =~ s/(\d+)(?:-(\d+))?$//
                                ? (map {$_ - 1} split //, $row == 0 && $2 || $1)  # user override
                                : @$defrows;  # default
-                       my $modekeys = $self->{keys}{$mode};
+                       my $modekeys = $self->{def}{$mode};
 
                        for my $case (@caserows) {
                                my $keycase = $keyrow->[$case] or next;
@@ -137,14 +150,14 @@ sub print_rows {
                                        ' class="%s"', 'mode mode' . escapeclass($basemode)
                                );
                                printf("<h3>%s<small>: %s</small></h3>\n", # XXX insert &nbsp; here to fix msie<=6
-                                               $modekeys->{desc} || "mode $basemode",
+                                               $self->{mode}->{$mode} || "mode $basemode",
                                                "$rowdesc[$row] row $casedesc[$case]"
                                );
                                my $caseclass = 'keys';
                                   $caseclass .= ' lead' if defined $modekeys->{lead};  # leading command key shown
                                   $caseclass .= " $casedesc[$case]" if defined $casedesc[$case];
                                print qq{\t\t<ul class="$caseclass">\n};
-                               $self->print_key($modekeys->{lead}, $_, $modekeys->{$_}) for @$keycase;
+                               $self->print_key($mode, $_, $modekeys->{$_}) for @$keycase;
                                print qq{\t\t</ul>\n};
                        } # case
 
@@ -166,10 +179,17 @@ Shiar_Sheet::Keyboard - Output HTML for key sheets
        our %sign = (alias => 'see: ');
        
        my $keys = Shiar_Sheet::Keyboard({
-               'mode' => {
-                       desc => 'mode description',
-                       'A' => 'a', # alias
-                       'a' => ['description', 'classes', 'comments (on hover)'],
+               def => {
+                       'lead' => {
+                               'A' => 'a', # alias
+                               'a' => ['classes'],
+                       },
+               },
+               key => {
+                       'leada' => ['description', 'comments (on hover)'],
+               },
+               mode => {
+                       'lead' => 'mode description',
                },
        });
        $keys->map('dvorak') or die "Keyboard map not found";
index 588aedc..672b214 100644 (file)
@@ -38,8 +38,9 @@
 
 <:
 our %sign;
-use Shiar_Sheet::Keyboard;
+use Shiar_Sheet::Keyboard 2;
 my $usint = [
+       [  'a' ..                                            'z'],
        [qw(Á B ¢ Ð É F G H Í J Œ Ø µ Ñ Ó Ö Ä ® § Þ Ú V Å X Ü Æ)],
        [qw(á b © ð é f g h í j œ ø µ ñ ó ö ä ® ß þ ú v å x ü æ)],
        [qw(Å ı Ç ð ´ ̉ ˝ ̣ ˆ ½  Þ ¾ ˜ Ø ∏ Œ ‰ / ˇ ¨ ◊ „ ˛ ¼ ¸)],
@@ -47,12 +48,17 @@ my $usint = [
 ];
 
 my $keys = Shiar_Sheet::Keyboard->new({
-       '' => {
+       def => {
+               '' => {
+                       map { $_ => [''] } @{ $usint->[0] }
+               },
+       },
+       key => {
                map {
                        my $i = ord($_) - ord('a');
-                       $_ => ["$usint->[0]->[$i]<br>$usint->[1]->[$i]"]
+                       $_ => ["$usint->[1]->[$i]<br>$usint->[2]->[$i]"]
                } 'a'..'z'
-       }
+       },
 });
 $keys->map($get{map}) or undef $get{map};
 $keys->print_rows($get{rows}, [0]);
diff --git a/less.eng.inc.pl b/less.eng.inc.pl
new file mode 100644 (file)
index 0000000..c0afb11
--- /dev/null
@@ -0,0 +1,113 @@
+use utf8;
+{
+
+key => {
+       'b' => ["page up"],
+       'd' => ['scroll down'],
+       'f' => ["page down"],
+       'F' => ["follow", 'Forward Forever'],
+       'g' => ["(first) line"],
+       'G' => ["last line"],
+       'h' => ["help"],
+       'j' => [$sign{down}],
+       'k' => [$sign{up}],
+       'm' => ["mark pos$sign{_}ition"],
+       'n' => ["next find"],
+       'N' => ["prev find"],
+       'p' => ["reset position", 'beginning or Percentage'],
+       'q' => ["quit"],
+       'r' => ["redraw"],
+       'R' => ["refresh"],
+       's' => ["save to file"],
+       't' => ["next tag"],
+       'T' => ["prev tag"],
+       'u' => ['scroll up'],
+       'v' => ["edit"],
+       'V' => ["version"],
+       'w' => ["page up and set window"],
+       '^x'=> ["emacs aliases"],
+       'z' => ["set page down"],
+
+       '!' => ["shell command"],
+       '|' => ["pipe till mark"],
+       ':' => ["com$sign{_}mand"],
+       '/' => ["find"],
+       '?' => ["find rev."],
+       '&' => ["filter match$sign{_}es"],
+       "'" => ["goto mark"],
+       '-' => ["toggle option"],
+       '_' => ["show option"],
+       '=' => ["file name"],
+       '+' => ["initial cmd"],
+
+       '(' => ["closing"],
+
+       '^[n' => ["any next find"],
+       '^[N' => ["any prev find"],
+       '^[u' => ["mark search", 'Undo'],
+       '^[(' => ["scroll left"],
+       '^[)' => ["scroll right"],
+
+       ':d' => ["drop file"],
+       ':e' => ["open file"],
+       ':n' => ["next file"],
+       ':p' => ["prev file"],
+       ':x' => ["first file"],
+
+       '-a' => ["advance find page"],
+       '-b' => ["buffer space"],
+       '-B' => ["static buffer for pipes"],
+       '-c' => ["clear on scroll"],
+       '-d' => ["dumb term$sign{_}inal"],
+       '-D' => ["dos colours"],
+       '-e' => ["exit after eof"],
+       '-E' => ["exit at eof"],
+       '-f' => ["force open"],
+       '-F' => ["exit if 1 page"],
+       '-g' => ["hilight last match"],
+       '-h' => ["scroll back limit"],
+       '-i' => ["ignore lower$sign{_}c$sign{_}ase"],
+       '-I' => ["ignore case"],
+       '-j' => ["top offset"],
+       '-J' => ["status column"],
+       '-k' => ["key bind$sign{_}ing$sign{_}s"],
+       '-L' => [qq[ignore <span style="font-variant:small-caps">lesso$sign{_}pen</span> filter]],
+       '-m' => ["med. promp$sign{_}t tog$sign{_}gle"],
+       '-M' => ["long promp$sign{_}t tog$sign{_}gle"],
+       '-n' => ["count line num$sign{_}ber$sign{_}s"],
+       '-N' => ["show line n$sign{_}um$sign{_}ber$sign{_}s"],
+       '-o' => ["stdin to log"],
+       '-O' => ["log overwrite"],
+       '-p' => ["initial search"],
+       '-P' => ["status line", "Prompt"],
+       '-q' => ["no info bell", "Quiet"],
+       '-Q' => ["no warn bell", "Quiet!"],
+       '-r' => ["raw chars"],
+       '-R' => ["ansi chars"],
+       '-s' => ["squeeze blank lines"],
+       '-S' => ["no line wrap"],
+       '-t' => ["find tag"],
+       '-T' => ["tags file"],
+       '-u' => ['parse \b \r'],
+       '-U' => ['escape \t \b \r'],
+       '-w' => ["hilight page d$sign{_}own"],
+       '-W' => ["hilight forw$sign{_}ard"],
+       '-x' => ["tab stops"],
+       '-X' => ["no termcap init"],
+       '-y' => ["scroll limit fw$sign{_}d"],
+       '-z' => ["page size"],
+       '-"' => ["shell quotes"],
+       '-~' => ["outside tildes toggle"],
+       '-#' => ["col shift"],
+       '--' => ["option name"],
+       '-+' => ["reset option"],
+},
+
+mode => {
+       ''   => 'normal pager',
+       '^[' => 'escape keys (hold meta/alt)',
+       '-'  => 'flag identifiers',
+       ':'  => 'colon commands',
+},
+
+}
index b5572eb..dcd6512 100644 (file)
@@ -1,79 +1,76 @@
 use utf8;
-
-# less v418
+{ # less v418
 
 '' => {
-       desc => 'normal pager',
-
-       'b' => ["page up", 'pm more'],
+       'b' => ['pm more'],
        '^b'=> 'b',
-       'd' => ['scroll down', 'pm more'],
+       'd' => ['pm more'],
        '^d'=> 'd',
        'e' => 'j',
        '^e'=> 'j',
-       'f' => ["page down", 'pm more'],
+       'f' => ['pm more'],
        '^f'=> 'f',
-       'F' => ["follow", 'mo', 'Forward Forever'],
-       'g' => ["(first) line", 'pm'],
+       'F' => ['mo'],
+       'g' => ['pm'],
        '^g'=> '=',
-       'G' => ["last line", 'pm'],
-       'h' => ["help", 'mo more'],
+       'G' => ['pm'],
+       'h' => ['mo more'],
        'H' => 'h',
-       'j' => [$sign{down}, 'pm'],
-       'k' => [$sign{up}, 'pm'],
+       'j' => ['pm'],
+       'k' => ['pm'],
        '^k'=> 'k',
        '^l'=> 'r', # more
-       'm' => ["mark pos$sign{_}ition", 'po arg'],
+       'm' => ['po arg'],
        '^m'=> 'j',
-       'n' => ["next find", 'co more'],
-       'N' => ["prev find", 'co'],
+       'n' => ['co more'],
+       'N' => ['co'],
        '^n'=> 'j',
-       'p' => ["reset position", 'pm', 'beginning or Percentage'],
+       'p' => ['pm'],
        '^p'=> 'k',
-       'q' => ["quit", 'mv more'],
+       'q' => ['mv more'],
        'Q' => 'q',
-       'r' => ["redraw", 'ci'],
+       'r' => ['ci'],
        '^r'=> 'r',
-       'R' => ["refresh", 'ci'],
-       's' => ["save to file", 'mv arg'],
-       't' => ["next tag", 'co'],
-       'T' => ["prev tag", 'co'],
-       'u' => ['scroll up', 'pm'],
+       'R' => ['ci'],
+       's' => ['mv arg'],
+       't' => ['co'],
+       'T' => ['co'],
+       'u' => ['pm'],
        '^u'=> 'u',
-       'v' => ["edit", 'mv linkvi more'],
+       'v' => ['mv linkvi more'],
        '^v'=> 'f',
-       'V' => ["version", 'ci'],
-       'w' => ["page up and set window", 'pm'],
-       '^x'=> ["emacs aliases", 'mv arg mode^x'],
+       'V' => ['ci'],
+       'w' => ['pm'],
+       '^x'=> ['mv arg mode^x'],
        'y' => 'k',
        '^y'=> 'k',
-       'z' => ["set page down", 'pm more'],
+       'z' => ['pm more'],
 
-       '!' => ["shell command", 'mv more'],
-       '|' => ["pipe till mark", 'mv arg'],
-       ':' => ["com$sign{_}mand", 'mv arg mode:'],
-       '/' => ["find", 'co arg more'],
-       '?' => ["find rev.", 'co arg'],
+       '!' => ['mv more'],
+       '|' => ['mv arg'],
+       ':' => ['mv arg mode:'],
+       '/' => ['co arg more'],
+       '?' => ['co arg'],
        '%' => 'p',
-       '&' => ["filter match$sign{_}es", 'co arg'],
-       "'" => ["goto mark", 'po arg'],
-       '-' => ["toggle option", 'mv arg mode-'],
-       '_' => ["show option", 'ci arg mode-'],
-       '=' => ["file name", 'ci more'],
-       '+' => ["initial cmd", 'mo'],
+       '&' => ['co arg'],
+       "'" => ['po arg'],
+       '-' => ['mv arg mode-'],
+       '_' => ['ci arg mode-'],
+       '=' => ['ci more'],
+       '+' => ['mo'],
 
-       '(' => ["closing", 'co'],
+       '(' => ['co'],
        '<' => 'g',
        '>' => 'G',
 },
 
-'esc' => {
-       'n' => ["any next find", 'co'],
-       'N' => ["any prev find", 'co'],
-       'u' => ["mark search", 'ci', 'Undo'],
+'^[' => { # esc
+       'n' => ['co'],
+       'N' => ['co'],
+       'u' => ['ci'],
        'v' => 'b',
-       '(' => ["scroll left", 'pm'],
-       ')' => ["scroll right", 'pm'],
+       '(' => ['pm'],
+       ')' => ['pm'],
        '<' => 'g',
        '>' => 'G',
 },
@@ -84,64 +81,65 @@ use utf8;
 #},
 
 ':' => {
-       'd' => ["drop file", 'mo'],
-       'e' => ["open file", 'mo'],
+       'd' => ['mo'],
+       'e' => ['mo'],
        'f' => '=',
-       'n' => ["next file", 'mo more'],
-       'p' => ["prev file", 'mo more'],
+       'n' => ['mo more'],
+       'p' => ['mo more'],
        'q' => 'q',
        'Q' => ':q',
-       'x' => ["first file", 'mo'],
+       'x' => ['mo'],
 },
 
 '-' => {
-       'a' => ["advance find page", 'co'],
-       'b' => ["buffer space", 'mo arg'],
-       'B' => ["static buffer for pipes", 'mo'],
-       'c' => ["clear on scroll", 'pm'],
-       'd' => ["dumb term$sign{_}inal", 'mv'],
-       'D' => ["dos colours", 'mv arg ext'],
-       'e' => ["exit after eof", 'mo'],
-       'E' => ["exit at eof", 'mo'],
-       'f' => ["force open", 'mo'],
-       'F' => ["exit if 1 page", 'mo'],
-       'g' => ["hilight last match", 'co'],
-       'h' => ["scroll back limit", 'pm arg'],
-       'i' => ["ignore lower$sign{_}c$sign{_}ase", 'co'],
-       'I' => ["ignore case", 'co'],
-       'j' => ["top offset", 'po arg'],
-       'J' => ["status column", 'ci'],
-       'k' => ["key bind$sign{_}ing$sign{_}s", 'mv arg'],
-       'L' => [qq[ignore <span style="font-variant:small-caps">lesso$sign{_}pen</span> filter], 'mv'],
-       'm' => ["med. promp$sign{_}t tog$sign{_}gle", 'ci'],
-       'M' => ["long promp$sign{_}t tog$sign{_}gle", 'ci'],
-       'n' => ["count line num$sign{_}ber$sign{_}s", 'mv'],
-       'N' => ["show line n$sign{_}um$sign{_}ber$sign{_}s", 'ci'],
-       'o' => ["stdin to log", 'me arg'],
-       'O' => ["log overwrite", 'me arg'],
-       'p' => ["initial search", 'co arg'],
-       'P' => ["status line", 'ci arg', "Prompt"],
-       'q' => ["no info bell", 'mv', "Quiet"],
-       'Q' => ["no warn bell", 'mv', "Quiet!"],
-       'r' => ["raw chars", 'mv'],
-       'R' => ["ansi chars", 'mv'],
-       's' => ["squeeze blank lines", 'mv'],
-       'S' => ["no line wrap", 'mv'],
-       't' => ["find tag", 'co arg'],
-       'T' => ["tags file", 'co arg'],
-       'u' => ['parse \b \r', 'mv'],
-       'U' => ['escape \t \b \r', 'mv'],
+       'a' => ['co'],
+       'b' => ['mo arg'],
+       'B' => ['mo'],
+       'c' => ['pm'],
+       'd' => ['mv'],
+       'D' => ['mv arg ext'],
+       'e' => ['mo'],
+       'E' => ['mo'],
+       'f' => ['mo'],
+       'F' => ['mo'],
+       'g' => ['co'],
+       'h' => ['pm arg'],
+       'i' => ['co'],
+       'I' => ['co'],
+       'j' => ['po arg'],
+       'J' => ['ci'],
+       'k' => ['mv arg'],
+       'L' => ['mv'],
+       'm' => ['ci'],
+       'M' => ['ci'],
+       'n' => ['mv'],
+       'N' => ['ci'],
+       'o' => ['me arg'],
+       'O' => ['me arg'],
+       'p' => ['co arg'],
+       'P' => ['ci arg'],
+       'q' => ['mv'],
+       'Q' => ['mv'],
+       'r' => ['mv'],
+       'R' => ['mv'],
+       's' => ['mv'],
+       'S' => ['mv'],
+       't' => ['co arg'],
+       'T' => ['co arg'],
+       'u' => ['mv'],
+       'U' => ['mv'],
        'V' => 'V',
-       'w' => ["hilight page d$sign{_}own", 'mv'],
-       'W' => ["hilight forw$sign{_}ard", 'mv'],
-       'x' => ["tab stops", 'mv arg'],
-       'X' => ["no termcap init", 'mv'],
-       'y' => ["scroll limit fw$sign{_}d", 'pm arg'],
-       'z' => ["page size", 'pm arg'],
-       '"' => ["shell quotes", 'mv arg'],
-       '~' => ["outside tildes toggle", 'mv'],
-       '#' => ["col shift", 'pm arg'],
-       '-' => ["option name", 'mv arg'],
-       '+' => ["reset option", 'mv arg'],
+       'w' => ['mv'],
+       'W' => ['mv'],
+       'x' => ['mv arg'],
+       'X' => ['mv'],
+       'y' => ['pm arg'],
+       'z' => ['pm arg'],
+       '"' => ['mv arg'],
+       '~' => ['mv'],
+       '#' => ['pm arg'],
+       '-' => ['mv arg'],
+       '+' => ['mv arg'],
 },
 
+}
index ce5ca14..52ca471 100644 (file)
--- a/less.plp
+++ b/less.plp
@@ -2,7 +2,7 @@
 
 Html({
        title => 'less cheat sheet',
-       version => 'v1.0',
+       version => 'v1.1',
        description => [
                "Default bindings of the less pager.",
                "Clearly shows how much it's more than more.",
@@ -26,9 +26,9 @@ Html({
 <li class="row"><ul>
        <li>
                <ul class="keys omni">
-               <li class="mo chr27" onclick="setmode('modeesc')"><b>Esc</b> alt<:=$sign{_}:>/meta
+               <li class="mo chr27" onclick="setmode('mode_c_sbo')"><b>Esc</b> alt<:=$sign{_}:>/meta
                </ul>
-       <li class="mode modeesc">
+       <li class="mode mode_c_sbo">
                <ul class="keys omni">
                <li class="mo chr27" onclick="setmode()"><b>Esc</b> noop
                </ul>
@@ -47,8 +47,10 @@ Html({
        </ul>
 
 <:
-use Shiar_Sheet::Keyboard;
-my $keys = Shiar_Sheet::Keyboard->new({do 'less.inc.pl'});
+use Shiar_Sheet::Keyboard 2;
+my $info = do 'less.eng.inc.pl' or die $@;
+$info->{def} = do 'less.inc.pl';
+my $keys = Shiar_Sheet::Keyboard->new($info);
 $keys->map($get{map}) or undef $get{map};
 $keys->print_rows($get{rows}, [1,0]);
 :>
diff --git a/mplayer.eng.inc.pl b/mplayer.eng.inc.pl
new file mode 100644 (file)
index 0000000..c6de943
--- /dev/null
@@ -0,0 +1,58 @@
+use utf8;
+{
+
+key => {
+       '[' => ["slow down 10%"],
+       ']' => ["speed up 10%"],
+       '{' => ["half speed"],
+       '}' => ["double speed"],
+       '<' => ["previous file"],
+       '>' => ["next file"],
+       'p' => ["pause"],
+       '.' => ["step forward"],
+       'q' => ["stop and quit"],
+       '+' => ["audio delay +$sign{_}.1s"],
+       '-' => ["audio delay -$sign{_}.1s"],
+       '/' => ["volume decrease"],
+       '*' => ["volume increase"],
+       'm' => ["mute sound"],
+       '#' => ["cycle audio tr$sign{_}ack$sign{_}s"],
+       'f' => ["full$sign{_}screen"],
+       'T' => ["stay on top"],
+       'w' => ["pan/sc. decr$sign{_}eas$sign{_}e"],
+       'e' => ["pan/scan increase"],
+       'o' => ["osd state switch"],
+       'd' => ["frame drop mode"],
+       'v' => ["subtitle visibility"],
+       'b' => ["next sub$sign{_}title"],
+       'j' => ["prev$sign{_}ious sub$sign{_}title"],
+       'g' => ["backward in subtitle list"], #TODO
+       'y' => ["forward in subtitle list"], #TODO
+       'F' => ["forced subtitles"],
+       'a' => ["align subtitles"],
+       'c' => ["cycle fs mode"],
+       'n' => ["restore video mode"],
+       'x' => ["subtitle delay +$sign{_}.1s"],
+       'z' => ["subtitle delay -$sign{_}.1s"],
+       'r' => ["subtitles up"],
+       't' => ["subtitles down"],
+       's' => ["screen$sign{_}shot", "-vf screenshot"],
+       'S' => ["record screen$sign{_}shot$sign{_}s", "-vf screenshot"],
+       'I' => ["filename"],
+       '!' => ["chapter back"],
+       '@' => ["chapter forward"],
+       '1' => ["contrast less"],
+       '2' => ["contrast more"],
+       '3' => ["brighter"],
+       '4' => ["darker"],
+       '5' => ["hue to red"],
+       '6' => ["hue to blue"],
+       '7' => ["saturate"],
+       '8' => ["de$sign{_}saturate"],
+},
+
+mode => {
+       '' => "interactive control",
+},
+
+}
index 6946c9e..f0874e0 100644 (file)
@@ -1,56 +1,56 @@
 use utf8;
+{
 
 '' => {
-       desc => "interactive control",
-
-       '[' => ["slow down 10%", 'mo'],
-       ']' => ["speed up 10%", 'mo'],
-       '{' => ["half speed", 'mo'],
-       '}' => ["double speed", 'mo'],
-       '<' => ["previous file", 'me'],
-       '>' => ["next file", 'me'],
-       'p' => ["pause", 'mo'],
-       '.' => ["step forward", 'mo'],
-       'q' => ["stop and quit", 'me'],
-       '+' => ["audio delay +$sign{_}.1s", 'mi'],
-       '-' => ["audio delay -$sign{_}.1s", 'mi'],
-       '/' => ["volume decrease", 'mi'],
-       '*' => ["volume increase", 'mi'],
+       '[' => ['mo'],
+       ']' => ['mo'],
+       '{' => ['mo'],
+       '}' => ['mo'],
+       '<' => ['me'],
+       '>' => ['me'],
+       'p' => ['mo'],
+       '.' => ['mo'],
+       'q' => ['me'],
+       '+' => ['mi'],
+       '-' => ['mi'],
+       '/' => ['mi'],
+       '*' => ['mi'],
        '9' => '/',
        '0' => '*',
-       'm' => ["mute sound", 'mi'],
-       '#' => ["cycle audio tr$sign{_}ack$sign{_}s", 'mi'],
-       'f' => ["full$sign{_}screen", 'co'],
-       'T' => ["stay on top", 'co'],
-       'w' => ["pan/sc. decr$sign{_}eas$sign{_}e", 'co'],
-       'e' => ["pan/scan increase", 'co'],
-       'o' => ["osd state switch", 'ci'],
-       'd' => ["frame drop mode", 'co'],
-       'v' => ["subtitle visibility", 'pm'],
-       'b' => ["next sub$sign{_}title", 'pm'],
-       'j' => ["prev$sign{_}ious sub$sign{_}title", 'pm'],
-       'y' => ["forward in subtitle list", 'pm'], #TODO
-       'g' => 'y', #TODO
-       'F' => ["forced subtitles", 'pm'],
-       'a' => ["align subtitles", 'pm'],
-       'c' => ["cycle fs mode", 'co ext'],
-       'n' => ["restore video mode", 'co ext'],
-       'x' => ["subtitle delay +$sign{_}.1s", 'pm'],
-       'z' => ["subtitle delay -$sign{_}.1s", 'pm'],
-       'r' => ["subtitles up", 'pm'],
-       't' => ["subtitles down", 'pm'],
-       's' => ["screen$sign{_}shot", 'me ext', "-vf screenshot"],
-       'S' => ["record screen$sign{_}shot$sign{_}s", 'me ext', "-vf screenshot"],
-       'I' => ["filename", 'ci'],
-       '!' => ["chapter back", 'mo'],
-       '@' => ["chapter forward", 'mo'],
-       '1' => ["contrast less", 'co ext'],
-       '2' => ["contrast more", 'co ext'],
-       '3' => ["brighter", 'co ext'],
-       '4' => ["darker", 'co ext'],
-       '5' => ["hue to red", 'co ext'],
-       '6' => ["hue to blue", 'co ext'],
-       '7' => ["saturate", 'co ext'],
-       '8' => ["de$sign{_}saturate", 'co ext'],
+       'm' => ['mi'],
+       '#' => ['mi'],
+       'f' => ['co'],
+       'T' => ['co'],
+       'w' => ['co'],
+       'e' => ['co'],
+       'o' => ['ci'],
+       'd' => ['co'],
+       'v' => ['pm'],
+       'b' => ['pm'],
+       'j' => ['pm'],
+       'y' => ['pm'],
+       'g' => ['pm'],
+       'F' => ['pm'],
+       'a' => ['pm'],
+       'c' => ['co ext'],
+       'n' => ['co ext'],
+       'x' => ['pm'],
+       'z' => ['pm'],
+       'r' => ['pm'],
+       't' => ['pm'],
+       's' => ['me ext'],
+       'S' => ['me ext'],
+       'I' => ['ci'],
+       '!' => ['mo'],
+       '@' => ['mo'],
+       '1' => ['co ext'],
+       '2' => ['co ext'],
+       '3' => ['co ext'],
+       '4' => ['co ext'],
+       '5' => ['co ext'],
+       '6' => ['co ext'],
+       '7' => ['co ext'],
+       '8' => ['co ext'],
 },
 
+}
index 2de974a..ef31e6b 100644 (file)
@@ -2,7 +2,7 @@
 
 Html({
        title => 'mplayer cheat sheet',
-       version => 'v1.0',
+       version => 'v1.1',
        description => [
                "Keyboard cheat sheet for the MPlayer media player,",
                "overviewing the default controls."
@@ -30,8 +30,10 @@ Html({
 </li>
 
 <:
-use Shiar_Sheet::Keyboard;
-my $keys = Shiar_Sheet::Keyboard->new({do 'mplayer.inc.pl'});
+use Shiar_Sheet::Keyboard 2;
+my $info = do 'mplayer.eng.inc.pl' or die $@;
+$info->{def} = do 'mplayer.inc.pl';
+my $keys = Shiar_Sheet::Keyboard->new($info);
 $keys->map($get{map}) or undef $get{map};
 $keys->print_rows($get{rows}, [1,0]);
 :>
diff --git a/mutt.eng.inc.pl b/mutt.eng.inc.pl
new file mode 100644 (file)
index 0000000..44f0392
--- /dev/null
@@ -0,0 +1,206 @@
+use utf8;
+
+my %common = (
+       'H' => ["screen top"],
+       'j' => ["entry $sign{down}"],
+       'k' => ["entry $sign{up}"],
+       'L' => ["screen bottom"],
+       '^l'=> ["redraw"],
+       'M' => ["screen middle"],
+       '^m'=> ["select"],
+       'n' => ["search $sign{down}"],
+       'q' => ["exit"],
+       't' => ["tag"],
+       'z' => ["page $sign{down}"],
+       'Z' => ["page $sign{up}"],
+       '*' => ["last entry"],
+       '=' => ["first entry"],
+       ':' => ["enter command"],
+       ';' => ["apply to tagged"],
+       '>' => ["line $sign{down}"],
+       '<' => ["line $sign{up}"],
+       ']' => ["half page $sign{down}"],
+       '[' => ["half page $sign{up}"],
+       '?' => ["help"],
+       '!' => ["invoke shell"],
+       '/' => ["search $sign{down}"],
+       '+/'=> ["search $sign{up}"],
+);
+
+{
+key => {
+       %common,
+
+       '@' => ["display sender"],
+       '.' => ["list new mail"],
+       '|' => ["pipe to shell"],
+       '$' => ["save mailbox"],
+       '#' => ["split up thread"],
+       '&' => ["thread tagged"],
+       '%' => ["toggle reado$sign{_}nl$sign{_}y"],
+
+       'a' => ["create alias"],
+       'b' => ["bounce"],
+       '^b'=> ["url$sign{_}view"],
+       '+b'=> ["search bodies"],
+       'c' => ["open folder"],
+       'C' => ["copy messag$sign{_}e"],
+       '+c'=> ["open reado$sign{_}nly"],
+       '+C'=> ["make plain copy"],
+       'd' => ["delete"],
+       'D' => ["delete patt$sign{_}er$sign{_}n"],
+       '^d'=> ["delete thread"],
+       '+d'=> ["delete subthread"],
+       'e' => ["edit"],
+       '^e'=> ["edit con$sign{_}tent type"],
+       '+e'=> ["edit+send copy"],
+       'f' => ["forward"],
+       'F' => ["toggle important"],
+       '^f'=> ["forget pass$sign{_}phras$sign{_}e"],
+       'g' => ["reply to all", 'Group reply'],
+       'G' => ["fetch POP", 'Gather new mail'],
+       'h' => ["toggle headers"],
+       '^i'=> ["unread msg $sign{down}"],
+       '+^i'=> ["unread msg $sign{up}"],
+       'j' => ["messag$sign{_}e $sign{down}"],
+       'k' => ["messag$sign{_}e $sign{up}"],
+       'J' => ["any $sign{down}"],
+       'K' => ["any $sign{up}"],
+       '^k'=> ["extract pub keys"],
+       '+k'=> ["send public key"],
+       'l' => ["limit pattern"],
+       'L' => ["reply to list"],
+       '+l'=> ["show current limit"],
+       'm' => ["compo$sign{_}s$sign{_}e mail"],
+       'N' => ["toggle new"],
+       '^n'=> ["thread $sign{down}"],
+       '+n'=> ["subthr$sign{_}ead $sign{down}"],
+       'o' => ["sort"],
+       'O' => ["sort reverse"],
+       'p' => ["print"],
+       'P' => ["to parent"],
+       '^p'=> ["thread $sign{up}"],
+       '+p'=> ["subthr$sign{_}ead $sign{up}"],
+       '+P'=> ["check for pgp"],
+       'q' => ["quit"],
+       'Q' => ["query addr$sign{_}ess$sign{_}es"],
+       'r' => ["reply to sender"],
+       'R' => ["recall postpon$sign{_}e$sign{_}d"],
+       '^r'=> ["mark thread read"],
+       '+r'=> ["mark sub$sign{_}thread r$sign{_}ead"],
+       's' => ["move"],
+       '+s'=> ["save and delete"],
+       'T' => ["tag patt$sign{_}er$sign{_}n"],
+       '^t'=> ["untag pattern"],
+       '+t'=> ["tag thread"],
+       'u' => ["undo delete"],
+       'U' => ["res$sign{_}tore pat$sign{_}t$sign{_}er$sign{_}n"],
+       '^u'=> ["restore thread"],
+       '+u'=> ["restore subthread"],
+       'v' => ["attach$sign{_}ments"],
+       'V' => ["version"],
+       '+v'=> ["(un)collapse thread"],
+       '+V'=> ["(un)collapse threads"],
+       'w' => ["set flag"],
+       'W' => ["clear flag"],
+       'x' => ["abort"],
+       'y' => ["list incoming mailboxes"],
+
+       (map { 'm'.$_ => $common{$_} } keys %common),
+
+       'm|' => ["pipe attach$sign{_}m$sign{_}ent"],
+       'ma' => ["attach file"],
+       'mA' => ["attach messag$sign{_}e"],
+       'mb' => ["edit bcc"],
+       'mc' => ["edit cc"],
+       'mC' => ["copy file"],
+       'md' => ["desc$sign{_}ribe attach$sign{_}m$sign{_}ent"],
+       'mD' => ["delete attach$sign{_}m$sign{_}ent"],
+       'm^d'=> ["dispo$sign{_}sition tog$sign{_}gle"],
+       'me' => ["edit body"],
+       'mE' => ["edit all"],
+       'm^e'=> ["edit encoding"],
+       'mf' => ["edit fcc"],
+       'm^f'=> ["forget pass$sign{_}phrase"],
+       'm+f'=> ["edit from"],
+       'mF' => ["filter attach$sign{_}m$sign{_}ent"],
+       'mG' => ["get attach$sign{_}m$sign{_}ent"],
+       'mh' => ["display message"],
+       'mi' => ["run ispell"],
+       'ml' => ["print attach$sign{_}m$sign{_}ent"],
+       'mm' => ["edit attach$sign{_}m$sign{_}ent", 'Mime-appropriate open'],
+       'mM' => ["edit mix"],
+       'm^m'=> ["view attach$sign{_}m$sign{_}ent"],
+       'mn' => ["new attach$sign{_}m$sign{_}ent"],
+       'mP' => ["post$sign{_}pone"],
+       'mr' => ["edit reply$sign{_}-to"],
+       'mR' => ["rename attach$sign{_}m$sign{_}ent"],
+       'ms' => ["edit subject"],
+       'mS' => ["s/mime options"],
+       'mt' => ["edit to"],
+       'm^t'=> ["ctype attach$sign{_}m$sign{_}ent"],
+       'mw' => ["copy to folder"],
+       'mu' => ["unlink toggle"],
+       'mU' => ["encode attach$sign{_}m$sign{_}ent"],
+       'my' => ["send"],
+
+       'wD' => ["deleted"],
+       'wN' => ["new"],
+       'wO' => ["old"],
+       'wr' => ["replied"],
+       'w*' => ["tagged"],
+       'w!' => ["flagged"],
+
+       '/~A' => ["all"],
+       '/~b' => ["msg body"],
+       '/~B' => ["whole msg"],
+       '/~c' => ["cc address"],
+       '/~C' => ["to or cc address"],
+       '/~d' => ["date sent ran$sign{_}g$sign{_}e"],
+       '/~D' => ["deleted"],
+       '/~e' => ["sender"],
+       '/~E' => ["expired"],
+       '/~f' => ["from"],
+       '/~F' => ["flagged"],
+       '/~g' => ["signed"],
+       '/~G' => ["encryp$sign{_}ted"],
+       '/~h' => ["header"],
+       '/~H' => ["spam attr$sign{_}ib$sign{_}ute"],
+       '/~i' => ["msg id"],
+       '/~k' => ["pgp key"],
+       '/~L' => ["receiv$sign{_}d by"],
+       '/~l' => ["mailing list"],
+       '/~m' => ["num$sign{_}ber ran$sign{_}g$sign{_}e"],
+       '/~n' => ["score range"],
+       '/~N' => ["new"],
+       '/~O' => ["old"],
+       '/~p' => ["to you"],
+       '/~P' => ["by you"],
+       '/~Q' => ["replies"],
+       '/~r' => ["receive date ran$sign{_}ge"],
+       '/~R' => ["read"],
+       '/~s' => ["subject"],
+       '/~S' => ["super$sign{_}seded"],
+       '/~t' => ["to address"],
+       '/~T' => ["tagged"],
+       '/~u' => ["subscr$sign{_}ibed list"],
+       '/~U' => ["unread"],
+       '/~v' => ["collapsed thread"],
+       '/~V' => ["verified"],
+       '/~x' => ["refer$sign{_}ence"],
+       '/~X' => ["attach$sign{_}ments"],
+       '/~y' => ["x-label"],
+       '/~z' => ["size range"],
+       '/~=' => ["dupli$sign{_}cate"],
+       '/~$' => ["unrefer$sign{_}enced"],
+       '/~(' => ["in thread"],
+},
+
+mode => {
+       '' => 'index',
+       'm' => 'compose (m)',
+       w => 'message flags (w)',
+       '/~' => 'search flags (/~)',
+},
+
+}
index 8dfaa02..21ca05b 100644 (file)
 use utf8;
 
 my %common = (
-       'H' => ["screen top", 'pm'], # top-page
-       'j' => ["entry $sign{down}", 'pm'], # next-entry, next-undeleted
-       'k' => ["entry $sign{up}", 'pm'], # previous-entry, previous-undeleted
-       'L' => ["screen bottom", 'pm'], # bottom-page
-       '^l'=> ["redraw", 'ci'], # refresh
-       'M' => ["screen middle", 'pm'], # middle-page
-       '^m'=> ["select", 'mi mode^m'], # select-entry, display-message
-       'n' => ["search $sign{down}", 'po'], # search-next
-       'q' => ["exit", 'mv mode'], # exit
-       't' => ["tag", 'co'], # tag-entry
-       'z' => ["page $sign{down}", 'pm'], # next-page
-       'Z' => ["page $sign{up}", 'pm'], # previous-page
+       'H' => ['pm'], # top-page
+       'j' => ['pm'], # next-entry, next-undeleted
+       'k' => ['pm'], # previous-entry, previous-undeleted
+       'L' => ['pm'], # bottom-page
+       '^l'=> ['ci'], # refresh
+       'M' => ['pm'], # middle-page
+       '^m'=> ['mi mode^m'], # select-entry, display-message
+       'n' => ['po'], # search-next
+       'q' => ['mv mode'], # exit
+       't' => ['co'], # tag-entry
+       'z' => ['pm'], # next-page
+       'Z' => ['pm'], # previous-page
 
-       '*' => ["last entry", 'pm'], # last-entry
-       '=' => ["first entry", 'pm'], # first-entry
-       ':' => ["enter command", 'mi'], # enter-command
-       ';' => ["apply to tagged", 'mi arg'], # tag-prefix
-       '>' => ["line $sign{down}", 'pm'], # next-line
-       '<' => ["line $sign{up}", 'pm'], # previous-line
-       ']' => ["half page $sign{down}", 'pm'], # half-down
-       '[' => ["half page $sign{up}", 'pm'], # half-up
-       '?' => ["help", 'ci'], # help
-       '!' => ["invoke shell", 'ci arg'], # shell
-       '/' => ["search $sign{down}", 'po arg mode/~'], # search
-       '+/'=> ["search $sign{up}", 'po arg mode/~'], # search
+       '*' => ['pm'], # last-entry
+       '=' => ['pm'], # first-entry
+       ':' => ['mi'], # enter-command
+       ';' => ['mi arg'], # tag-prefix
+       '>' => ['pm'], # next-line
+       '<' => ['pm'], # previous-line
+       ']' => ['pm'], # half-down
+       '[' => ['pm'], # half-up
+       '?' => ['ci'], # help
+       '!' => ['ci arg'], # shell
+       '/' => ['po arg mode/~'], # search
+       '+/'=> ['po arg mode/~'], # search
 );
 
-'' => {
-       desc => 'index',
+{
 
+'' => {
        %common,
 
-       '@' => ["display sender", 'ci'], # display-address
-       '.' => ["list new mail", 'mv'], # buffy-list #TODO
-       '|' => ["pipe to shell", 'mi'], # pipe-message
-       '$' => ["save mailbox", 'co'], # sync-mailbox
-       '#' => ["split up thread", 'co'], # break-thread
-       '&' => ["thread tagged", 'co'], # link-threads
-       '%' => ["toggle reado$sign{_}nl$sign{_}y", 'co'], # toggle-write
+       '@' => ['ci'], # display-address
+       '.' => ['mv'], # buffy-list #TODO
+       '|' => ['mi'], # pipe-message
+       '$' => ['co'], # sync-mailbox
+       '#' => ['co'], # break-thread
+       '&' => ['co'], # link-threads
+       '%' => ['co'], # toggle-write
        ' ' => '^m',
 
-       'a' => ["create alias", 'mi'], # create-alias
-       'b' => ["bounce", 'mo'], # bounce-message
-       '^b'=> ["url$sign{_}view", 'ci'],
-       '+b'=> ["search bodies"], # M <search>~b
-       'c' => ["open folder", 'mv'], # change-folder
-       'C' => ["copy messag$sign{_}e", 'mi'], # copy-message
-       '+c'=> ["open reado$sign{_}nly", 'mv'], # change-folder-readonly
-       '+C'=> ["make plain copy"], # decode-copy
-       'd' => ["delete", 'co'], # delete-message
-       'D' => ["delete patt$sign{_}er$sign{_}n", 'co arg'], # delete-pattern
-       '^d'=> ["delete thread", 'co'], # delete-thread
-       '+d'=> ["delete subthread", 'co'], # delete-subthread
-       'e' => ["edit", 'co'], # edit
-       '^e'=> ["edit con$sign{_}tent type", 'co'], # edit-type
-       '+e'=> ["edit+send copy"], # resend-message
-       'f' => ["forward", 'mo modem'], # forward-message
-       'F' => ["toggle important", 'co'], # flag-message
-       '^f'=> ["forget pass$sign{_}phras$sign{_}e", 'mi'], # forget-passphrase
-       'g' => ["reply to all", 'mo modem', 'Group reply'], # group-reply
-       'G' => ["fetch POP", 'mi', 'Gather new mail'], # fetch-mail
-       'h' => ["toggle headers", 'me'], # display-toggle-weed
-       '^i'=> ["unread msg $sign{down}", 'po'], # next-new-then-unread
-       '+^i'=> ["unread msg $sign{up}"], # previous-new-then-unread
-       'j' => ["messag$sign{_}e $sign{down}", 'pm'], # next-undeleted
-       'k' => ["messag$sign{_}e $sign{up}", 'pm'], # previous-undeleted
-       'J' => ["any $sign{down}", 'po'], # next-entry
-       'K' => ["any $sign{up}", 'po'], # previous-entry
-       '^k'=> ["extract pub keys", 'ci'], # extract-keys
-       '+k'=> ["send public key", 'mo modem'], # mail-key
-       'l' => ["limit pattern", 'me'], # limit
-       'L' => ["reply to list", 'mo modem'], # list-reply
-       '+l'=> ["show current limit", 'ci'], # show-limit
-       'm' => ["compo$sign{_}s$sign{_}e mail", 'mo modem'], # mail
-       'N' => ["toggle new", 'co'], # toggle-new
-       '^n'=> ["thread $sign{down}", 'po'], # next-thread
-       '+n'=> ["subthr$sign{_}ead $sign{down}", 'po'], # next-subthread
-       'o' => ["sort", 'me modeo'], # sort-mailbox
-       'O' => ["sort reverse", 'me modeo'], # sort-reverse
-       'p' => ["print", 'ci'], # print-message
-       'P' => ["to parent", 'po'], # parent-message
-       '^p'=> ["thread $sign{up}", 'po'], # previous-thread
-       '+p'=> ["subthr$sign{_}ead $sign{up}", 'po'], # previous-subthread
-       '+P'=> ["check for pgp"], # check-traditional-pgp
-       'q' => ["quit", 'mv'], # quit
-       'Q' => ["query addr$sign{_}ess$sign{_}es", 'ci arg'], # query
-       'r' => ["reply to sender", 'mo modem'], # reply
-       'R' => ["recall postpon$sign{_}e$sign{_}d", 'mo modem'], # recall-message
-       '^r'=> ["mark thread read", 'co'], # read-thread
-       '+r'=> ["mark sub$sign{_}thread r$sign{_}ead", 'co'], # read-subthread
-       's' => ["move", 'co'], # save-message
-       '+s'=> ["save and delete", 'co'], # decode-save
-       'T' => ["tag patt$sign{_}er$sign{_}n", 'co arg'], # tag-pattern
-       '^t'=> ["untag pattern", 'co'], # untag-pattern
-       '+t'=> ["tag thread", 'co'], # tag-thread
-       'u' => ["undo delete", 'co'], # undelete-message
-       'U' => ["res$sign{_}tore pat$sign{_}t$sign{_}er$sign{_}n", 'co arg'], # undelete-pattern
-       '^u'=> ["restore thread", 'co'], # undelete-thread
-       '+u'=> ["restore subthread", 'co'], # undelete-subthread
-       'v' => ["attach$sign{_}ments", 'ci'], # view-attachments
-       'V' => ["version", 'ci'], # show-version
-       '+v'=> ["(un)collapse thread", 'me'], # collapse-thread
-       '+V'=> ["(un)collapse threads", 'me'], # collapse-all
-       'w' => ["set flag", 'co arg modew'], # set-flag
-       'W' => ["clear flag", 'co arg modew'], # clear-flag
-       'x' => ["abort", 'mv'], # exit
-       'y' => ["list incoming mailboxes", 'mv'], # M <change-folder>?<toggle-mailboxes>
+       'a' => ['mi'], # create-alias
+       'b' => ['mo'], # bounce-message
+       '^b'=> ['ci'],
+       '+b'=> [undef], # M <search>~b
+       'c' => ['mv'], # change-folder
+       'C' => ['mi'], # copy-message
+       '+c'=> ['mv'], # change-folder-readonly
+       '+C'=> [undef], # decode-copy
+       'd' => ['co'], # delete-message
+       'D' => ['co arg'], # delete-pattern
+       '^d'=> ['co'], # delete-thread
+       '+d'=> ['co'], # delete-subthread
+       'e' => ['co'], # edit
+       '^e'=> ['co'], # edit-type
+       '+e'=> [undef], # resend-message
+       'f' => ['mo modem'], # forward-message
+       'F' => ['co'], # flag-message
+       '^f'=> ['mi'], # forget-passphrase
+       'g' => ['mo modem'], # group-reply
+       'G' => ['mi'], # fetch-mail
+       'h' => ['me'], # display-toggle-weed
+       '^i'=> ['po'], # next-new-then-unread
+       '+^i'=> [undef], # previous-new-then-unread
+       'j' => ['pm'], # next-undeleted
+       'k' => ['pm'], # previous-undeleted
+       'J' => ['po'], # next-entry
+       'K' => ['po'], # previous-entry
+       '^k'=> ['ci'], # extract-keys
+       '+k'=> ['mo modem'], # mail-key
+       'l' => ['me'], # limit
+       'L' => ['mo modem'], # list-reply
+       '+l'=> ['ci'], # show-limit
+       'm' => ['mo modem'], # mail
+       'N' => ['co'], # toggle-new
+       '^n'=> ['po'], # next-thread
+       '+n'=> ['po'], # next-subthread
+       'o' => ['me modeo'], # sort-mailbox
+       'O' => ['me modeo'], # sort-reverse
+       'p' => ['ci'], # print-message
+       'P' => ['po'], # parent-message
+       '^p'=> ['po'], # previous-thread
+       '+p'=> ['po'], # previous-subthread
+       '+P'=> [undef], # check-traditional-pgp
+       'q' => ['mv'], # quit
+       'Q' => ['ci arg'], # query
+       'r' => ['mo modem'], # reply
+       'R' => ['mo modem'], # recall-message
+       '^r'=> ['co'], # read-thread
+       '+r'=> ['co'], # read-subthread
+       's' => ['co'], # save-message
+       '+s'=> ['co'], # decode-save
+       'T' => ['co arg'], # tag-pattern
+       '^t'=> ['co'], # untag-pattern
+       '+t'=> ['co'], # tag-thread
+       'u' => ['co'], # undelete-message
+       'U' => ['co arg'], # undelete-pattern
+       '^u'=> ['co'], # undelete-thread
+       '+u'=> ['co'], # undelete-subthread
+       'v' => ['ci'], # view-attachments
+       'V' => ['ci'], # show-version
+       '+v'=> ['me'], # collapse-thread
+       '+V'=> ['me'], # collapse-all
+       'w' => ['co arg modew'], # set-flag
+       'W' => ['co arg modew'], # clear-flag
+       'x' => ['mv'], # exit
+       'y' => ['mv'], # M <change-folder>?<toggle-mailboxes>
 }, # index
 
 'm' => {
-       desc => 'compose (m)',
-
        %common,
 
-       '|' => ["pipe attach$sign{_}m$sign{_}ent", 'co'],
-       'a' => ["attach file", 'mi'],
-       'A' => ["attach messag$sign{_}e", 'mi'],
-       'b' => ["edit bcc", 'co'],
-       'c' => ["edit cc", 'co'],
-       'C' => ["copy file", 'mi'],
-       'd' => ["desc$sign{_}ribe attach$sign{_}m$sign{_}ent", 'co'],
-       'D' => ["delete attach$sign{_}m$sign{_}ent", 'co'],
-       '^d'=> ["dispo$sign{_}sition tog$sign{_}gle", 'co'],
-       'e' => ["edit body", 'co linkvi'],
-       'E' => ["edit all", 'co linkvi'],
-       '^e'=> ["edit encoding", 'co'],
-       'f' => ["edit fcc", 'co'],
-       '^f'=> ["forget pass$sign{_}phrase", 'mi'],
-       '+f'=> ["edit from", 'co'],
-       'F' => ["filter attach$sign{_}m$sign{_}ent", 'co'],
-       'G' => ["get attach$sign{_}m$sign{_}ent", 'ci'],
-       'h' => ["display message", 'ci'],
-       'i' => ["run ispell", 'mi'],
-       'l' => ["print attach$sign{_}m$sign{_}ent", 'ci'],
-       'm' => ["edit attach$sign{_}m$sign{_}ent", 'co', 'Mime-appropriate open'],
-       'M' => ["edit mix", 'co'],
-       '^m'=> ["view attach$sign{_}m$sign{_}ent", 'ci'],
-       'n' => ["new attach$sign{_}m$sign{_}ent", 'mi'],
-       'P' => ["post$sign{_}pone", 'mv mode'],
-       'r' => ["edit reply$sign{_}-to", 'co'],
-       'R' => ["rename attach$sign{_}m$sign{_}ent", 'co'],
-       's' => ["edit subject", 'co'],
-       'S' => ["s/mime options", 'co menumS'],
-       't' => ["edit to", 'co'],
-       '^t'=> ["ctype attach$sign{_}m$sign{_}ent", 'co'],
-       'w' => ["copy to folder", 'mi'],
-       'u' => ["unlink toggle", 'mi'],
-       'U' => ["encode attach$sign{_}m$sign{_}ent", 'co'],
-       'y' => ["send", 'mo'],
+       '|' => ['co'],
+       'a' => ['mi'],
+       'A' => ['mi'],
+       'b' => ['co'],
+       'c' => ['co'],
+       'C' => ['mi'],
+       'd' => ['co'],
+       'D' => ['co'],
+       '^d'=> ['co'],
+       'e' => ['co linkvi'],
+       'E' => ['co linkvi'],
+       '^e'=> ['co'],
+       'f' => ['co'],
+       '^f'=> ['mi'],
+       '+f'=> ['co'],
+       'F' => ['co'],
+       'G' => ['ci'],
+       'h' => ['ci'],
+       'i' => ['mi'],
+       'l' => ['ci'],
+       'm' => ['co'],
+       'M' => ['co'],
+       '^m'=> ['ci'],
+       'n' => ['mi'],
+       'P' => ['mv mode'],
+       'r' => ['co'],
+       'R' => ['co'],
+       's' => ['co'],
+       'S' => ['co menumS'],
+       't' => ['co'],
+       '^t'=> ['co'],
+       'w' => ['mi'],
+       'u' => ['mi'],
+       'U' => ['co'],
+       'y' => ['mo'],
 }, # compose
 
 w => {
-       desc => 'message flags (w)',
-
-       'D' => ["deleted", 'co'],
+       'D' => ['co'],
        'd' => 'wD',
-       'N' => ["new", 'co'],
+       'N' => ['co'],
        'n' => 'wN',
-       'O' => ["old", 'co'],
+       'O' => ['co'],
        'o' => 'wO',
-       'r' => ["replied", 'co'],
+       'r' => ['co'],
        'R' => 'wr',
-       '*' => ["tagged", 'co'],
-       '!' => ["flagged", 'co'],
+       '*' => ['co'],
+       '!' => ['co'],
 }, # flag
 
 '/~' => {
-       desc => 'search flags (/~)',
-
-       A => ["all"],
-       b => ["msg body", 'X arg'],
-       B => ["whole msg", 'arg'],
-       c => ["cc address", 'arg'],
-       C => ["to or cc address", 'arg'],
-       d => ["date sent ran$sign{_}g$sign{_}e", 'arg'],
-       D => ["deleted"],
-       e => ["sender", 'arg'],
-       E => ["expired"],
-       f => ["from", 'arg'],
-       F => ["flagged"],
-       g => ["signed"],
-       G => ["encryp$sign{_}ted"],
-       h => ["header", 'arg'],
-       H => ["spam attr$sign{_}ib$sign{_}ute", 'arg'],
-       i => ["msg id", 'arg'],
-       k => ["pgp key"],
-       L => ["receiv$sign{_}d by", 'arg'],
-       l => ["mailing list"],
-       m => ["num$sign{_}ber ran$sign{_}g$sign{_}e", 'arg'],
-       n => ["score range", 'arg'],
-       N => ["new"],
-       O => ["old"],
-       p => ["to you"],
-       P => ["by you"],
-       Q => ["replies"],
-       r => ["receive date ran$sign{_}ge", 'arg'],
-       R => ["read"],
-       s => ["subject"],
-       S => ["super$sign{_}seded"],
-       t => ["to address", 'arg'],
-       T => ["tagged"],
-       u => ["subscr$sign{_}ibed list"],
-       U => ["unread"],
-       v => ["collapsed thread"],
-       V => ["verified"],
-       x => ["refer$sign{_}ence", 'arg'],
-       X => ["attach$sign{_}ments", 'arg'],
-       y => ["x-label", 'arg'],
-       z => ["size range", 'arg'],
-       '=' => ["dupli$sign{_}cate"],
-       '$' => ["unrefer$sign{_}enced"],
-       '(' => ["in thread", 'arg'],
+       A => [undef],
+       b => ['X arg'],
+       B => ['arg'],
+       c => ['arg'],
+       C => ['arg'],
+       d => ['arg'],
+       D => [undef],
+       e => ['arg'],
+       E => [undef],
+       f => ['arg'],
+       F => [undef],
+       g => [undef],
+       G => [undef],
+       h => ['arg'],
+       H => ['arg'],
+       i => ['arg'],
+       k => [undef],
+       L => ['arg'],
+       l => [undef],
+       m => ['arg'],
+       n => ['arg'],
+       N => [undef],
+       O => [undef],
+       p => [undef],
+       P => [undef],
+       Q => [undef],
+       r => ['arg'],
+       R => [undef],
+       s => [undef],
+       S => [undef],
+       t => ['arg'],
+       T => [undef],
+       u => [undef],
+       U => [undef],
+       v => [undef],
+       V => [undef],
+       x => ['arg'],
+       X => ['arg'],
+       y => ['arg'],
+       z => ['arg'],
+       '=' => [undef],
+       '$' => [undef],
+       '(' => ['arg'],
 }, # search option
 
+}
index ec4d0a2..f3909fe 100644 (file)
--- a/mutt.plp
+++ b/mutt.plp
@@ -2,7 +2,7 @@
 
 Html({
        title => 'mutt cheat sheet',
-       version => 'v1.0',
+       version => 'v1.1',
        description => [
                "Cheat sheet for the Mutt e-mail client,",
                "showing the default binding for each key.",
@@ -30,8 +30,10 @@ Html({
 </li>
 
 <:
-use Shiar_Sheet::Keyboard;
-my $keys = Shiar_Sheet::Keyboard->new({do 'mutt.inc.pl'});
+use Shiar_Sheet::Keyboard 2;
+my $info = do 'mutt.eng.inc.pl' or die $@;
+$info->{def} = do 'mutt.inc.pl';
+my $keys = Shiar_Sheet::Keyboard->new($info);
 $keys->map($get{map}) or undef $get{map};
 $keys->print_rows($get{rows});
 :>
diff --git a/nethack.eng.inc.pl b/nethack.eng.inc.pl
new file mode 100644 (file)
index 0000000..be69164
--- /dev/null
@@ -0,0 +1,142 @@
+use utf8;
+{
+
+key => {
+       'b' => ["step left down",  'numpad 1'],
+       'j' => ["step down",       'numpad 2'],
+       'n' => ["step right down", 'numpad 3'],
+       'h' => ["step left",       'numpad 4'],
+       'l' => ["step right",      'numpad 6'],
+       'y' => ["step left up",    'numpad 7'],
+       'k' => ["step up",         'numpad 8'],
+       'u' => ["step right up",   'numpad 9'],
+
+       'B' => ["go left down",    'shift numpad 1'],
+       'J' => ["go down",         'shift numpad 2'],
+       'N' => ["go right down",   'shift numpad 3'],
+       'H' => ["go left",         'shift numpad 4'],
+       'L' => ["go right",        'shift numpad 6'],
+       'Y' => ["go left up",      'shift numpad 7'],
+       'K' => ["go up",           'shift numpad 8'],
+       'U' => ["go right up",     'shift numpad 9'],
+
+       '^b'=> ["run left down",   'numpad 5 1'],
+       '^j'=> ["run down",        'numpad 5 2'],
+       '^n'=> ["run right down",  'numpad 5 3'],
+       '^h'=> ["run left",        'numpad 5 4'],
+       '^l'=> ["run right",       'numpad 5 6'],
+       '^y'=> ["run left up",     'numpad 5 7'],
+       '^k'=> ["run up",          'numpad 5 8'],
+       '^u'=> ["run right up",    'numpad 5 9'],
+
+       'g' => ["run until interest"],
+       'm' => ["m$sign{_}ove blind", 'no pickup'],
+       'G' => ["g any$sign{_}where", "follow branches"],
+
+       '?' => ["help menu"],
+       '+?'=> ["more help"],
+       '/' => ["explain symbol"],
+       '&' => ["tell com$sign{_}m$sign{_}and"],
+       '<' => ["climb up ladder"],
+       '>' => ["desc$sign{_}ent ladder"],
+       '.' => ["rest (noop)"],
+       '_' => ["travel to"],
+
+       '+2'=> ["two$sign{_}weapon toggle"],
+       'a' => ["apply tool"],
+       'A' => ["remove all armor"],
+       '^a'=> ["redo comm$sign{_}and", 'Again'],
+       '+a'=> ["adjust inv$sign{_}ent$sign{_}ory"],
+       'c' => ["close door"],
+       'C' => ["call monster"],
+       '+c'=> ["chat"],
+       'd' => ["drop item"],
+       'D' => ["drop items"],
+       '^d'=> ["kick"],
+       '+d'=> ["dip"],
+       'e' => ["eat food"],
+       'E' => ["en$sign{_}grave"],
+       '+e'=> ["weapon skills", 'Enhance'],
+       'f' => ["fire quiver"],
+       'F' => ["fight monster"],
+       '+f'=> ["force lock"],
+       'i' => ["invent$sign{_}ory"],
+       'I' => ["invent$sign{_}ory part"],
+       '+i'=> ["invoke object"],
+       '+j'=> ["jump"],
+       '+l'=> ["loot"],
+       '+m'=> ["mons$sign{_}ter abil$sign{_}ity"],
+       '+n'=> ["name item$sign{_}(s)"],
+       'o' => ["open door"],
+       'O' => ["options"],
+       '+o'=> ["offer sacrifice"],
+       'p' => ["pay bill"],
+       'P' => ["put on"],
+       '^p'=> ["repeat message"],
+       '+p'=> ["pray"],
+       'q' => ["drink", 'Quaff'],
+       'Q' => ["quiver ammo"],
+       '+q'=> ["exit game", 'Quit'],
+       'r' => ["read scroll"],
+       'R' => ["put off", 'Remove accessory'],
+       '^r'=> ["redraw"],
+       '+r'=> ["rub object"],
+       's' => ["search secrets"],
+       'S' => ["save game"],
+       '+s'=> ["sit down"],
+       't' => ["throw$sign{_}/shoot"],
+       'T' => ["remove armor"],
+       '^t'=> ["teleport"],
+       '+t'=> ["turn undead"],
+       '+u'=> ["untrap"],
+       'v' => ["version"],
+       'V' => ["verbose version"],
+       '+v'=> ["compile details"],
+       'w' => ["wield weap$sign{_}on"],
+       'W' => ["wear armor"],
+       '+w'=> ["wipe face"],
+       'x' => ["swap weapons", 'Xchange'],
+       'X' => ["explore mode"],
+       '^x'=> ["show stats"],
+       'z' => ["zap wand"],
+       'Z' => ["cast spell"],
+       '^z'=> ["suspend game"],
+
+       ':' => ["look here"],
+       ';' => ["look else$sign{_}where"],
+       ',' => ["pick up"],
+       '@' => ["toggle pick$sign{_}up"],
+       '^' => ["show trap"],
+       ')' => ["show weapon"],
+       '[' => ["show armor"],
+       '=' => ["show rings"],
+       '"' => ["show amulet"],
+       '(' => ["show tools"],
+       '*' => ["show equip$sign{_}ment"],
+       '$' => ["count gold"],
+       '+' => ["list spells"],
+       '\\'=> ["discover$sign{_}ed obj$sign{_}ects"],
+       '!' => ["shell escape"],
+       '#' => ["more comm$sign{_}ands"],
+
+       'DB' => ['drop blessed'],
+       'DU' => ['drop uncursed'],
+       'DC' => ['drop cursed'],
+       'DX' => ['drop unknown'],
+       'Da' => ['drop all'],
+       'Di' => ["invent$sign{_}ory"],
+       'Du' => ['drop unpaid'],
+       'Dm' => ['drop any'],
+       'D%' => ['drop more'],
+
+       'I*' => ['list gems'],
+       'Iu' => ['list unpaid'],
+       'Ix' => ['list billed'],
+       'I$' => ['count money'],
+},
+
+mode => {
+       '' => 'normal gameplay',
+},
+
+}
index 3162e92..f26ad00 100644 (file)
 use utf8;
+{
 
 '' => {
-       desc => 'normal gameplay',
+       'b' => ['pm'],
+       'j' => ['pm'],
+       'n' => ['pm'],
+       'h' => ['pm'],
+       'l' => ['pm'],
+       'y' => ['pm'],
+       'k' => ['pm'],
+       'u' => ['pm'],
 
-       'b' => ["step left down",  'pm', 'numpad 1'],
-       'j' => ["step down",       'pm', 'numpad 2'],
-       'n' => ["step right down", 'pm', 'numpad 3'],
-       'h' => ["step left",       'pm', 'numpad 4'],
-       'l' => ["step right",      'pm', 'numpad 6'],
-       'y' => ["step left up",    'pm', 'numpad 7'],
-       'k' => ["step up",         'pm', 'numpad 8'],
-       'u' => ["step right up",   'pm', 'numpad 9'],
+       'B' => ['po'],
+       'J' => ['po'],
+       'N' => ['po'],
+       'H' => ['po'],
+       'L' => ['po'],
+       'Y' => ['po'],
+       'K' => ['po'],
+       'U' => ['po'],
 
-       'B' => ["go left down",    'po', 'shift numpad 1'],
-       'J' => ["go down",         'po', 'shift numpad 2'],
-       'N' => ["go right down",   'po', 'shift numpad 3'],
-       'H' => ["go left",         'po', 'shift numpad 4'],
-       'L' => ["go right",        'po', 'shift numpad 6'],
-       'Y' => ["go left up",      'po', 'shift numpad 7'],
-       'K' => ["go up",           'po', 'shift numpad 8'],
-       'U' => ["go right up",     'po', 'shift numpad 9'],
+       '^b'=> ['po'],
+       '^j'=> ['po'],
+       '^n'=> ['po'],
+       '^h'=> ['po'],
+       '^l'=> ['po'],
+       '^y'=> ['po'],
+       '^k'=> ['po'],
+       '^u'=> ['po'],
 
-       '^b'=> ["run left down",   'po', 'numpad 5 1'],
-       '^j'=> ["run down",        'po', 'numpad 5 2'],
-       '^n'=> ["run right down",  'po', 'numpad 5 3'],
-       '^h'=> ["run left",        'po', 'numpad 5 4'],
-       '^l'=> ["run right",       'po', 'numpad 5 6'],
-       '^y'=> ["run left up",     'po', 'numpad 5 7'],
-       '^k'=> ["run up",          'po', 'numpad 5 8'],
-       '^u'=> ["run right up",    'po', 'numpad 5 9'],
+       'g' => ['po argm'],
+       'm' => ['po argm'],
+       'G' => ['po argm'],
 
-       'g' => ["run until interest", 'po argm'],
-       'm' => ["m$sign{_}ove blind", 'po argm', 'no pickup'],
-       'G' => ["g any$sign{_}where", 'po argm', "follow branches"],
+       '?' => ['mv mode?'], #help
+       '+?'=> ['mv'],
+       '/' => ['mi arg mode/'], #whatis
+       '&' => ['mi arg'],
+       '<' => ['pm'], #up
+       '>' => ['pm'], #down
+       '.' => ['pm'], #rest
+       '_' => ['po argM'], #travel
 
-       '?' => ["help menu", 'mv mode?'], #help
-       '+?'=> ["more help", 'mv'],
-       '/' => ["explain symbol", 'mi arg mode/'], #whatis
-       '&' => ["tell com$sign{_}m$sign{_}and", 'mi arg'],
-       '<' => ["climb up ladder", 'pm'], #up
-       '>' => ["desc$sign{_}ent ladder", 'pm'], #down
-       '.' => ["rest (noop)", 'pm'], #rest
-       '_' => ["travel to", 'po argM'], #travel
+       '+2'=> ['co'], #twoweapon
+       'a' => ['co argi'], #apply
+       'A' => ['co'], #armor
+       '^a'=> ['co'], #again
+       '+a'=> ['mi'], #adjust
+       'c' => ['co argm'], #close
+       'C' => ['co arg'], #call
+       '+c'=> ['co arg'], #chat
+       'd' => ['co argi'], #drop
+       'D' => ['co arg modeD'], #Drop
+       '^d'=> ['co argm'], #kick
+       '+d'=> ['co argi'], #dip
+       'e' => ['co argi'], #eat
+       'E' => ['co argi'], #engrave
+       '+e'=> ['co'], #enhance
+       'f' => ['co argm'], #fire
+       'F' => ['co argm'], #fight
+       '+f'=> ['co'], #force
+       'i' => ['mo'], #invent
+       'I' => ['mo arg modeI'], #Invent
+       '+i'=> ['co argi'], #invoke
+       '+j'=> ['co'], #jump
+       '+l'=> ['co'], #loot
+       '+m'=> ['co'], #monster
+       '+n'=> ['mo arg'], #name
+       'o' => ['co argm'], #open
+       'O' => ['mv modeO'], #options
+       '+o'=> ['co argi'], #offer
+       'p' => ['co'], #pay
+       'P' => ['co argi'], #puton
+       '^p'=> ['mi'], #prevmsg
+       '+p'=> ['co arg'], #pray
+       'q' => ['co argi'], #quaff
+       'Q' => ['co argi'], #quiver
+       '+q'=> ['mi'], #quit
+       'r' => ['co argi'], #read
+       'R' => ['co argi'], #remove
+       '^r'=> ['mi'], #redraw
+       '+r'=> ['co argi'], #rub
+       's' => ['co'], #search
+       'S' => ['mi'], #save
+       '+s'=> ['co'], #sit
+       't' => ['co argm'], #throw
+       'T' => ['co argi'], #takeoff
+       '^t'=> ['co'], #'port
+       '+t'=> ['co'], #turn
+       '+u'=> ['co'], #untrap
+       'v' => ['mi'],
+       'V' => ['mi'], #history
+       '+v'=> ['mi'], #version
+       'w' => ['co argi'], #wield
+       'W' => ['co argi'], #wear
+       '+w'=> ['co'], #wipe
+       'x' => ['co'], #xchange
+       'X' => ['mi'], #explore
+       '^x'=> ['mi'], #show
+       'z' => ['co argm'], #zap
+       'Z' => ['co argi'], #Zap
+       '^z'=> ['mi'], #suspend
 
-       '+2'=> ["two$sign{_}weapon toggle", 'co'], #twoweapon
-       'a' => ["apply tool", 'co argi'], #apply
-       'A' => ["remove all armor", 'co'], #armor
-       '^a'=> ["redo comm$sign{_}and", 'co', 'Again'], #again
-       '+a'=> ["adjust inv$sign{_}ent$sign{_}ory", 'mi'], #adjust
-       'c' => ["close door", 'co argm'], #close
-       'C' => ["call monster", 'co arg'], #call
-       '+c'=> ["chat", 'co arg'], #chat
-       'd' => ["drop item", 'co argi'], #drop
-       'D' => ["drop items", 'co arg modeD'], #Drop
-       '^d'=> ["kick", 'co argm'], #kick
-       '+d'=> ["dip", 'co argi'], #dip
-       'e' => ["eat food", 'co argi'], #eat
-       'E' => ["en$sign{_}grave", 'co argi'], #engrave
-       '+e'=> ["weapon skills", 'co', 'Enhance'], #enhance
-       'f' => ["fire quiver", 'co argm'], #fire
-       'F' => ["fight monster", 'co argm'], #fight
-       '+f'=> ["force lock", 'co'], #force
-       'i' => ["invent$sign{_}ory", 'mo'], #invent
-       'I' => ["invent$sign{_}ory part", 'mo arg modeI'], #Invent
-       '+i'=> ["invoke object", 'co argi'], #invoke
-       '+j'=> ["jump", 'co'], #jump
-       '+l'=> ["loot", 'co'], #loot
-       '+m'=> ["mons$sign{_}ter abil$sign{_}ity", 'co'], #monster
-       '+n'=> ["name item$sign{_}(s)", 'mo arg'], #name
-       'o' => ["open door", 'co argm'], #open
-       'O' => ["options", 'mv modeO'], #options
-       '+o'=> ["offer sacrifice", 'co argi'], #offer
-       'p' => ["pay bill", 'co'], #pay
-       'P' => ["put on", 'co argi'], #puton
-       '^p'=> ["repeat message", 'mi'], #prevmsg
-       '+p'=> ["pray", 'co arg'], #pray
-       'q' => ["drink", 'co argi', 'Quaff'], #quaff
-       'Q' => ["quiver ammo", 'co argi'], #quiver
-       '+q'=> ["exit game", 'mi', 'Quit'], #quit
-       'r' => ["read scroll", 'co argi'], #read
-       'R' => ["put off", 'co argi', 'Remove accessory'], #remove
-       '^r'=> ["redraw", 'mi'], #redraw
-       '+r'=> ["rub object", 'co argi'], #rub
-       's' => ["search secrets", 'co'], #search
-       'S' => ["save game", 'mi'], #save
-       '+s'=> ["sit down", 'co'], #sit
-       't' => ["throw$sign{_}/shoot", 'co argm'], #throw
-       'T' => ["remove armor", 'co argi'], #takeoff
-       '^t'=> ["teleport", 'co'], #'port
-       '+t'=> ["turn undead", 'co'], #turn
-       '+u'=> ["untrap", 'co'], #untrap
-       'v' => ["version", 'mi'],
-       'V' => ["verbose version", 'mi'], #history
-       '+v'=> ["compile details", 'mi'], #version
-       'w' => ["wield weap$sign{_}on", 'co argi'], #wield
-       'W' => ["wear armor", 'co argi'], #wear
-       '+w'=> ["wipe face", 'co'], #wipe
-       'x' => ["swap weapons", 'co', 'Xchange'], #xchange
-       'X' => ["explore mode", 'mi'], #explore
-       '^x'=> ["show stats", 'mi'], #show
-       'z' => ["zap wand", 'co argm'], #zap
-       'Z' => ["cast spell", 'co argi'], #Zap
-       '^z'=> ["suspend game", 'mi'], #suspend
-
-       ':' => ["look here", 'mi'], #look
-       ';' => ["look else$sign{_}where", 'mi argM'], #farlook
-       ',' => ["pick up", 'co'], #pickup
-       '@' => ["toggle pick$sign{_}up", 'mi'],
-       '^' => ["show trap", 'mi argm'], #trap_id
-       ')' => ["show weapon", 'mo'],
-       '[' => ["show armor", 'mo'],
-       '=' => ["show rings", 'mo'],
-       '"' => ["show amulet", 'mo'],
-       '(' => ["show tools", 'mo'],
-       '*' => ["show equip$sign{_}ment", 'mo'],
-       '$' => ["count gold", 'mi'], #gold
-       '+' => ["list spells", 'mo'], #spells
-       '\\'=> ["discover$sign{_}ed obj$sign{_}ects", 'mo'], #known
-       '!' => ["shell escape", 'mi'], #sh
-       '#' => ["more comm$sign{_}ands", 'mv'],
+       ':' => ['mi'], #look
+       ';' => ['mi argM'], #farlook
+       ',' => ['co'], #pickup
+       '@' => ['mi'],
+       '^' => ['mi argm'], #trap_id
+       ')' => ['mo'],
+       '[' => ['mo'],
+       '=' => ['mo'],
+       '"' => ['mo'],
+       '(' => ['mo'],
+       '*' => ['mo'],
+       '$' => ['mi'], #gold
+       '+' => ['mo'], #spells
+       '\\'=> ['mo'], #known
+       '!' => ['mi'], #sh
+       '#' => ['mv'],
 },
 
 'D' => {
-       'B' => ['drop blessed', 'co'],
-       'U' => ['drop uncursed', 'co'],
-       'C' => ['drop cursed', 'co'],
-       'X' => ['drop unknown', 'co'],
-       'a' => ['drop all', 'co'],
-       'i' => ["invent$sign{_}ory", 'mi'],
-       'u' => ['drop unpaid', 'co'],
-       'm' => ['drop any', 'co argi'],
-       '%' => ['drop more', 'co arg'],
+       'B' => ['co'],
+       'U' => ['co'],
+       'C' => ['co'],
+       'X' => ['co'],
+       'a' => ['co'],
+       'i' => ['mi'],
+       'u' => ['co'],
+       'm' => ['co argi'],
+       '%' => ['co arg'],
 },
 
 'I' => {
-       '*' => ['list gems', 'mi'],
-       'u' => ['list unpaid', 'mi'],
-       'x' => ['list billed', 'mi'],
-       '$' => ['count money', 'mi'],
+       '*' => ['mi'],
+       'u' => ['mi'],
+       'x' => ['mi'],
+       '$' => ['mi'],
 },
 
+}
index eaea76c..3115e28 100644 (file)
@@ -2,7 +2,7 @@
 
 Html({
        title => 'nethack cheat sheet',
-       version => 'v1.0',
+       version => 'v1.1',
        description => [
                "Keyboard overview sheet for the Nethack console RPG game,",
                "describing the default controls.",
@@ -30,8 +30,10 @@ Html({
 </li>
 
 <:
-use Shiar_Sheet::Keyboard;
-my $keys = Shiar_Sheet::Keyboard->new({do 'nethack.inc.pl'});
+use Shiar_Sheet::Keyboard 2;
+my $info = do 'nethack.eng.inc.pl' or die $@;
+$info->{def} = do 'nethack.inc.pl';
+my $keys = Shiar_Sheet::Keyboard->new($info);
 $keys->map($get{map}) or undef $get{map};
 $keys->print_rows($get{rows} || '4321-421', [3,2,1,0]);
 :>
diff --git a/readline.eng.inc.pl b/readline.eng.inc.pl
new file mode 100644 (file)
index 0000000..da03370
--- /dev/null
@@ -0,0 +1,83 @@
+use utf8;
+{
+
+key => {
+       '+<' => ["history start"],
+       '+>' => ["history end"],
+       '+?' => ["list complet$sign{_}ion$sign{_}s"],
+       '^@' => ["set mark"],
+
+       '+#' => ["prefix comm$sign{_}en$sign{_}t"],
+       '+&' => ["tilde expand"],
+       '+*' => ["complet$sign{_}e all"],
+       '+.' => ["insert last"],
+
+       '^[' => ["meta"],
+       '+\\'=> ["delete whitesp$sign{_}ace"],
+       '^]' => ["find char"],
+       '^+]'=> ["rev find char"],
+       '^_' => ["undo"],
+
+       '+~' => ["user$sign{_}name exp$sign{_}and"],
+       '+!' => ["cmd expand"],
+       '+@' => ["host$sign{_}name exp$sign{_}and"],
+       '+$' => ["variable expand"],
+       '+^' => ["history expand"],
+       '+/' => ["filename expand"],
+
+       '^a' => ["begin of line"],
+       '^b' => ["char back$sign{_}w$sign{_}ard$sign{_}s"],
+       '+b' => ["word back$sign{_}w$sign{_}ard$sign{_}s"],
+       '^c' => ["cancel comm$sign{_}and"],
+       '+c' => ["capital$sign{_}ise word"],
+       '^d' => ["delete char"],
+       '+d' => ["delete word rem$sign{_}ain$sign{_}der"],
+#      '^e' => ["emacs mode"],
+       '^e' => ["end of line"],
+       '^f' => ["char forward"],
+       '+f' => ["word forward"],
+       '^g' => ["abort cmd, bell"],
+       '^h' => ["back$sign{_}space"],
+       '^+h'=> ["delete bound word"],
+       '^i' => ["auto$sign{_}complet$sign{_}e", '(tab)'],
+       '^+j'=> ["vim mode"],
+       '^k' => ["delete till eol"],
+       '^l' => ["clear screen"],
+       '+l' => ["lowcase word"],
+       '^m' => ["enter line", '(enter)'],
+       '^n' => ["history next"],
+       '+n' => ["match history"],
+       '^o' => ["enter and next"],
+       '^p' => ["history back"],
+       '+p' => ["rev match history"],
+       '^q' => [undef, 'Quote'],
+       '^r' => ["reverse history"],
+       '+r' => ["full undo", 'Revert'],
+       '^s' => ["search history"],
+       '^t' => ["move char forw$sign{_}ard", 'Transpose char'],
+       '+t' => ["move word forw$sign{_}ard", 'Transpose word'],
+       '^u' => ["delete till bol"], # unix
+       '+u' => ["upcase word"],
+       '^v' => ["verbatim char"],
+       '^w' => ["delete word"], # unix
+       '^x' => ["extend$sign{_}ed"],
+       '^y' => ["yank top"],
+       '+y' => ["rotate yank"],
+       '^+y'=> ["yank arg"],
+       '^z' => ["back$sign{_}ground"],
+
+       '^x('  => ["start macro"],
+       '^x)'  => ["end macro"],
+       '^xe'  => ["run macro", 'Execute'],
+       '^x^e' => ["editor"],
+       '^x^r' => ["reload inputrc"],
+       '^x^x' => ["swap cursor", 'eXchange'],
+       '^x^v' => ["shell version"],
+},
+
+mode => {
+       ''   => "emacs mode",
+       '^x' => 'emacs ctrl-x bindings',
+},
+
+}
index 70f6227..ea94799 100644 (file)
@@ -1,97 +1,96 @@
 use utf8;
+{
 
 '' => {
-       desc => "emacs mode",
-
-       '+<' => ["history start", 'co'],
+       '+<' => ['co'],
        '+=' => '+?', #TODO: new # emacs, not in v2.0
-       '+>' => ["history end", 'co'],
+       '+>' => ['co'],
        '^?' => '^h',
-       '+?' => ["list complet$sign{_}ion$sign{_}s", 'ci'],
-       '^@' => ["set mark", 'mv new'], # not in v2.0
+       '+?' => ['ci'],
+       '^@' => ['mv new'], # not in v2.0
 
-       '+#' => ["prefix comm$sign{_}en$sign{_}t", 'mi new'], # not in v2.0
-       '+&' => ["tilde expand", 'mi'],
-       '+*' => ["complet$sign{_}e all", 'mi new'], # not in v2.0
-       '+.' => ["insert last", 'co'],
+       '+#' => ['mi new'], # not in v2.0
+       '+&' => ['mi'],
+       '+*' => ['mi new'], # not in v2.0
+       '+.' => ['co'],
        '+~' => '+&amp;', # emacs
 
-       '^[' => ["meta", 'mv'],
+       '^[' => ['mv'],
        '^+['=> '^i',
-       '+\\'=> ["delete whitesp$sign{_}ace", 'mo'],
-       '^]' => ["find char", 'pm arg new'], # not in v2.0
-       '^+]'=> ["rev find char", 'pm arg new'], # not in v2.0
-       '^_' => ["undo", 'co'],
+       '+\\'=> ['mo'],
+       '^]' => ['pm arg new'], # not in v2.0
+       '^+]'=> ['pm arg new'], # not in v2.0
+       '^_' => ['co'],
        '+_' => '+.',
 
-       '+~' => ["user$sign{_}name exp$sign{_}and", 'mi ext'], # common emacs => '+&'
-       '+!' => ["cmd expand", 'mi ext'],
-       '+@' => ["host$sign{_}name exp$sign{_}and", 'mi ext'],
-       '+$' => ["variable expand", 'mi ext'],
-       '+^' => ["history expand", 'co ext'],
-       '+/' => ["filename expand", 'ci ext'],
+       '+~' => ['mi ext'], # common emacs => '+&'
+       '+!' => ['mi ext'],
+       '+@' => ['mi ext'],
+       '+$' => ['mi ext'],
+       '+^' => ['co ext'],
+       '+/' => ['ci ext'],
 
-       '^a' => ["begin of line", 'pm'],
-       '^b' => ["char back$sign{_}w$sign{_}ard$sign{_}s", 'pm'],
-       '+b' => ["word back$sign{_}w$sign{_}ard$sign{_}s", 'pm'],
-       '^c' => ["cancel comm$sign{_}and", 'mv ext'],
-       '+c' => ["capital$sign{_}ise word", 'mi'],
-       '^d' => ["delete char", 'mo'],
-       '+d' => ["delete word rem$sign{_}ain$sign{_}der", 'mo ring'],
-#      '^e' => ["emacs mode", 'me'],
-       '^e' => ["end of line", 'pm'],
-       '^f' => ["char forward", 'pm'],
-       '+f' => ["word forward", 'pm'],
-       '^g' => ["abort cmd, bell", 'mv'],
+       '^a' => ['pm'],
+       '^b' => ['pm'],
+       '+b' => ['pm'],
+       '^c' => ['mv ext'],
+       '+c' => ['mi'],
+       '^d' => ['mo'],
+       '+d' => ['mo ring'],
+#      '^e' => ['me'],
+       '^e' => ['pm'],
+       '^f' => ['pm'],
+       '+f' => ['pm'],
+       '^g' => ['mv'],
        '^+g'=> '^g',
-       '^h' => ["back$sign{_}space", 'mo'],
-       '^+h'=> ["delete bound word", 'mo ring'], #TODO
-       '^i' => ["auto$sign{_}complet$sign{_}e", 'mi', '(tab)'],
+       '^h' => ['mo'],
+       '^+h'=> ['mo ring'], #TODO
+       '^i' => ['mi'],
        '^+i'=> '^v^i',
        '^j' => '^m',
-       '^+j'=> ["vim mode", 'me'], #TODO: mode^+j
-       '^k' => ["delete till eol", 'mo ring'],
-       '^l' => ["clear screen", 'ci'],
-       '+l' => ["lowcase word", 'mi'],
-       '^m' => ["enter line", 'co', '(enter)'],
+       '^+j'=> ['me'], #TODO: mode^+j
+       '^k' => ['mo ring'],
+       '^l' => ['ci'],
+       '+l' => ['mi'],
+       '^m' => ['co'],
        '^+m'=> '^+j',
-       '^n' => ["history next", 'co'],
-       '+n' => ["match history", 'co'],
-       '^o' => ["enter and next", 'co ext'],
-       '^p' => ["history back", 'co'],
-       '+p' => ["rev match history", 'co'],
-       '^q' => '^v', # Quote
-       '^r' => ["reverse history", 'co'],
-       '+r' => ["full undo", 'co', 'Revert'],
+       '^n' => ['co'],
+       '+n' => ['co'],
+       '^o' => ['co ext'],
+       '^p' => ['co'],
+       '+p' => ['co'],
+       '^q' => '^v',
+       '^r' => ['co'],
+       '+r' => ['co'],
        '^+r'=> '+r',
-       '^s' => ["search history", 'co'],
-       '^t' => ["move char forw$sign{_}ard", 'mi', 'Transpose char'],
-       '+t' => ["move word forw$sign{_}ard", 'mi', 'Transpose word'],
-       '^u' => ["delete till bol", 'mo ring'], # unix
-       '+u' => ["upcase word", 'mi'],
-       '^v' => ["verbatim char", 'mv'],
-       '^w' => ["delete word", 'mo ring'], # unix
-       '^x' => ["extend$sign{_}ed", 'me arg mode^x'],
-       '^y' => ["yank top", 'co'],
-       '+y' => ["rotate yank", 'co ring'],
+       '^s' => ['co'],
+       '^t' => ['mi'],
+       '+t' => ['mi'],
+       '^u' => ['mo ring'],
+       '+u' => ['mi'],
+       '^v' => ['mv'],
+       '^w' => ['mo ring'],
+       '^x' => ['me arg mode^x'],
+       '^y' => ['co'],
+       '+y' => ['co ring'],
        '^+y'=> ["yank arg"],
-       '^z' => ["back$sign{_}ground", 'mv ext'],
+       '^z' => ['mv ext'],
 },
 
 '^x' => {
        lead => $ascii ? "'x"  : "x̂",
-       desc => 'emacs ctrl-x bindings',
 
-       '('  => ["start macro", 'mv'],
-       ')'  => ["end macro", 'mv'],
-       'e'  => ["run macro", 'mv', 'Execute'],
-       '^e' => ["editor", 'mi ext linkvi'],
+       '('  => ['mv'],
+       ')'  => ['mv'],
+       'e'  => ['mv'],
+       '^e' => ['mi ext linkvi'],
        '^g' => '^g',
        '^h' => '^u',
-       '^r' => ["reload inputrc", 'mv'],
+       '^r' => ['mv'],
        '^u' => '^_',
-       '^x' => ["swap cursor", 'pm new', 'eXchange'], # not in v2.0
-       '^v' => ["shell version", 'ci ext'],
+       '^x' => ['pm new'], # not in v2.0
+       '^v' => ['ci ext'],
        '^?' => '^x^h',
 },
 
+}
index 0488d87..a7be846 100644 (file)
@@ -2,7 +2,7 @@
 
 Html({
        title => 'readline cheat sheet',
-       version => 'v1.0',
+       version => 'v1.1',
        description => [
                "Reference sheet of default key bindings for GNU readline,",
                "used for line-editing in most Unix software, notably Emacs and Bash.",
@@ -29,8 +29,10 @@ Html({
 </li>
 
 <:
-use Shiar_Sheet::Keyboard;
-my $keys = Shiar_Sheet::Keyboard->new({do 'readline.inc.pl'});
+use Shiar_Sheet::Keyboard 2;
+my $info = do 'readline.eng.inc.pl' or die $@;
+$info->{def} = do 'readline.inc.pl';
+my $keys = Shiar_Sheet::Keyboard->new($info);
 $keys->map($get{map}) or undef $get{map};
 $keys->print_rows($get{rows} || '^x=213', [4,3,2]);
 :>
diff --git a/starcraft.eng.inc.pl b/starcraft.eng.inc.pl
new file mode 100644 (file)
index 0000000..ae231ea
--- /dev/null
@@ -0,0 +1,203 @@
+use utf8;
+
+my %CONS = (
+       r => ["rally point"],
+);
+my %UNIT = (
+       m => ["move"],
+       s => ["stop"],
+       p => ["patrol"],
+       h => ["hold"],
+       a => ["attack"],
+       b => ["burrow"],
+       g => ["gather"],
+       c => ["return cargo"],
+);
+
+{
+
+key => {
+       (map { 'P'.$_ => $UNIT{$_} } qw'm s a g c'),
+       Pb => ["build structure"],
+       Pv => ["build adv$sign{_}anced structure"],
+
+       Pbn => ["nexus"],
+       Pbp => ["pylon"],
+       Pba => ["assimi$sign{_}lator"],
+       Pbg => ["gate$sign{_}way"],
+       Pbf => ["forge"],
+       Pbc => ["photon cannon"],
+       Pby => ["cyber$sign{_}netics core"],
+       Pbb => ["shield batt$sign{_}ery"],
+
+       (map { 'Pbn'.$_ => $CONS{$_} } 'r'),
+       Pbnp => ["probe"],
+
+       (map { 'Pbg'.$_ => $CONS{$_} } 'r'),
+       Pbgz => ["zealot"],
+       Pbgd => ["dragoon"],
+       Pbgt => ["high templar"],
+       Pbgk => ["dark templar"],
+
+       (map { 'Pbgt'.$_ => $UNIT{$_} } qw'm s p h'),
+       t => ["psionic storm"],
+       l => ["halluci$sign{_}nation"],
+       r => ["archon warp"],
+
+       (map { 'Pbgk'.$_ => $UNIT{$_} } qw'm s p h a'),
+       Pbgkr => ["dark archon meld"],
+
+       (map { 'Pbgkr'.$_ => $UNIT{$_} } qw'm s p h'),
+       Pbgkrf => ["feed$sign{_}back"],
+       Pbgkrc => ["mind control"],
+       Pbgkre => ["mael$sign{_}strom"],
+
+       Pbfw => ["ground weap$sign{_}on$sign{_}s"],
+       Pbfa => ["ground armor"],
+       Pbfs => ["plasma shields"],
+
+       Pbyw => ["air weap$sign{_}on$sign{_}s"],
+       Pbya => ["air armor"],
+       Pbys => ["dragoon range"],
+
+       Pbbr => ["recharge shields"],
+
+       Pvr => ["robotics facility"],
+       Pvs => ["stargate"],
+       Pvc => ["citadel of adun"],
+       Pvb => ["support bay"],
+       Pvf => ["fleet beacon"],
+       Pvt => ["templar archives"],
+       Pvo => ["observa$sign{_}tory"],
+       Pva => ["arbiter tribunal"],
+
+       (map { 'Pvr'.$_ => $CONS{$_} } 'r'),
+       Pvrs => ["shuttle"],
+       Pvro => ["observer"],
+       Pvrv => ["reaver"],
+
+       (map { 'Pvrv'.$_ => $UNIT{$_} } qw'm s p h a'),
+       Pvrvr => ["scarab"],
+
+       (map { 'Pvs'.$_ => $CONS{$_} } 'r'),
+       Pvss => ["scout"],
+       Pvsc => ["carrier"],
+       Pvsa => ["arbiter"],
+       Pvso => ["corsair"],
+
+       (map { 'Pvsc'.$_ => $UNIT{$_} } qw'm s p h a'),
+       Pvsci => ["inter$sign{_}ceptor"],
+
+       (map { 'Pvsa'.$_ => $UNIT{$_} } qw'm s p h a'),
+       Pvsar => ["recall"],
+       Pvsat => ["statis field"],
+
+       (map { 'Pvso'.$_ => $UNIT{$_} } qw'm s p h a'),
+       Pvsod => ["disrup$sign{_}tion web"],
+
+       Pvcl => ["leg en$sign{_}hancem$sign{_}ent$sign{_}s"],
+
+       Pvbs => ["scarab damage"],
+       Pvbc => ["reaver capacity"],
+       Pvbg => ["gravitic drive"],
+
+       Pvfa => ["apial sensors"],
+       Pvfg => ["gravitic thrust$sign{_}ers"],
+       Pvfc => ["carrier capacity"],
+       Pvfd => ["disrup$sign{_}tion web"],
+       Pvfj => ["argus jewel"],
+
+       Pvtt => ["psionic storm"],
+       Pvth => ["halluci$sign{_}nation"],
+       Pvtk => ["khayda$sign{_}rin amul$sign{_}et"],
+#      Pvtc => ["mind control?"], #TODO
+       Pvte => ["mael$sign{_}strom"],
+       Pvtt => ["argus talisman"],
+
+       Pvog => ["gravitic booster"],
+       Pvos => ["sensor array"],
+
+       Pvar => ["recall"],
+       Pvas => ["stasis field"],
+       Pvak => ["khayda$sign{_}rin core"],
+
+       Zd => ["drone"],
+       Zz => ["zergling"],
+       Zo => ["overlord"],
+       Zh => ["hydra$sign{_}lisk"],
+       Zq => ["queen"],
+
+       (map { 'Zd'.$_ => $UNIT{$_} } qw'm s a g c b'),
+       Zdb => ["basic mutat$sign{_}ion"],
+       Zdv => ["advance$sign{_}d mutat$sign{_}ion"],
+
+       Zdbh => ["hatche$sign{_}ry"],
+       Zdbc => ["creep colony"],
+       Zdbe => ["extrac$sign{_}tor"],
+       Zdbs => ["spawning pool"],
+       Zdbv => ["evolution chamber"],
+       Zdbd => ["hydra$sign{_}lisk den"],
+
+       (map { 'Zdbh'.$_ => $CONS{$_} } 'r'),
+       Zdbhb => ["burrow"],
+       Zdbhs => ["select larvae"],
+       Zdbhl => ["lair"],
+
+       (map { 'Zdbhl'.$_ => $CONS{$_} } 'r'),
+       Zdbhlb => ["burrow"],
+       Zdbhlv => ["ventral sacs"],
+       Zdbhla => ["antennae"],
+       Zdbhlp => ["pneumatized carapace"],
+       Zdbhlh => ["hive"],
+
+       (map { 'Zdbhlh'.$_ => $CONS{$_} } 'r'),
+       Zdbhlhb => ["burrow"],
+       Zdbhlhv => ["ventral sacs"],
+       Zdbhlha => ["antennae"],
+       Zdbhlhp => ["pneumatized carapace"],
+
+       Zdbsm => ["metabol boost"],
+       Zdbsa => ["adrenal glands"],
+
+       Zdbvm => ["melee attack$sign{_}s"],
+       Zdbva => ["missile attack$sign{_}s"],
+       Zdbvc => ["carapace"],
+       Zdbdm => ["muscular augments"],
+       Zdbdg => ["grooved spines"],
+       Zdbdl => ["lurker aspect"],
+},
+
+mode => {
+       P => 'Protoss Probe',
+       Pb => 'Protoss Probe build',
+       Pbn => 'Protoss Nexus',
+       Pbg => 'Protoss Gateway',
+       Pbgt => 'Protoss High Templar',
+       Pbgk => 'Protoss Dark Templar',
+       Pbgkr => 'Protoss Dark Archon',
+       Pbf => 'Protoss Forge',
+       Pby => 'Protoss Cybernetics Core',
+       Pbb => 'Protoss Shield Battery',
+       Pv => 'Protoss Probe advanced build',
+       Pvr => 'Protoss Robotics facility',
+       Pvrv => 'Protoss Reaver',
+       Pvs => 'Protoss Stargate',
+       Pvsc => 'Protoss Carrier',
+       Pvsa => 'Protoss Arbiter',
+       Pvso => 'Protoss Corsair',
+       Pvt => 'Protoss Templar Archives',
+       Pvo => 'Protoss Observatory',
+       Pva => 'Protoss Arbiter Tribunal',
+
+       Z => 'Zerg Larva',
+       Zd => 'Zerg Drone',
+       Zdb => 'Zerg basic Drone mutation',
+       Zdbh => 'Zerg Hatchery',
+       Zdbhl => 'Zerg Lair',
+       Zdbhlh => 'Zerg Hive',
+       Zdbs => 'Zerg Spawning Pool',
+       Zdbd => 'Zerg Hydralisk Den',
+       Zdv => 'Zerg advanced Drone mutation',
+},
+
+}
index 8c4af9c..b18542b 100644 (file)
 use utf8;
 
 my %CONS = ( # producing building
-       r => ["rally point", 'pm'],
+       r => ['pm'],
 );
 my %UNIT = ( # any unit
-       m => ["move", 'pm'],
-       s => ["stop", 'pm'],
+       m => ['pm'],
+       s => ['pm'],
 );
 my %UNITF = ( # fighter
-       p => ["patrol", 'pm'],
-       h => ["hold", 'pm'],
+       p => ['pm'],
+       h => ['pm'],
 );
 my %UNITA = (
-       a => ["attack", 'pm'],
+       a => ['pm'],
 );
 my %UNITB = (
-       b => ["burrow", 'ci'],
+       b => ['ci'],
 );
 my %UNITH = (
        %UNITA,
-       g => ["gather", 'pm'],
-       c => ["return cargo", 'pm'],
+       g => ['pm'],
+       c => ['pm'],
 );
 
+{
+
 '' => {
 },
 
 P => {
-       desc => 'Protoss Probe',
        %UNIT, %UNITH,
-       b => ["build structure", 'me modePb'],
-       v => ["build adv$sign{_}anced structure", 'me modePv'],
+       b => ['me modePb'],
+       v => ['me modePv'],
 },
 Pb => {
-       desc => 'Protoss Probe build',
-       n => ["nexus", 'mo modePbn'],
-       p => ["pylon", 'me'],
-       a => ["assimi$sign{_}lator", 'me'],
-       g => ["gate$sign{_}way", 'mo modePbg'],
-       f => ["forge", 'mv modePbf'],
-       c => ["photon cannon", 'me'],
-       y => ["cyber$sign{_}netics core", 'mv modePby'],
-       b => ["shield batt$sign{_}ery", 'me modePbb'],
+       n => ['mo modePbn'],
+       p => ['me'],
+       a => ['me'],
+       g => ['mo modePbg'],
+       f => ['mv modePbf'],
+       c => ['me'],
+       y => ['mv modePby'],
+       b => ['me modePbb'],
 },
 Pbn => {
-       desc => 'Protoss Nexus',
        %CONS,
-       p => ["probe", 'co modeP'],
+       p => ['co modeP'],
 },
 Pbg => {
-       desc => 'Protoss Gateway',
        %CONS,
-       z => ["zealot", 'co'],
-       d => ["dragoon", 'cp'],
-       t => ["high templar", 'cp modePbgt'],
-       k => ["dark templar", 'cp modePbgk'],
+       z => ['co'],
+       d => ['cp'],
+       t => ['cp modePbgt'],
+       k => ['cp modePbgk'],
 },
 Pbgt => {
-       desc => 'Protoss High Templar',
        %UNIT, %UNITF,
-       t => ["psionic storm", 'ci'],
-       l => ["halluci$sign{_}nation", 'ci'],
-       r => ["archon warp", 'cp'],
+       t => ['ci'],
+       l => ['ci'],
+       r => ['cp'],
 },
 Pbgk => {
-       desc => 'Protoss Dark Templar',
        %UNIT, %UNITF, %UNITA,
-       r => ["dark archon meld", 'cp modePbgkr'],
+       r => ['cp modePbgkr'],
 },
 Pbgkr => {
-       desc => 'Protoss Dark Archon',
        %UNIT, %UNITF,
-       f => ["feed$sign{_}back", 'pm'],
-       c => ["mind control", 'ci'],
-       e => ["mael$sign{_}strom", 'ci'],
+       f => ['pm'],
+       c => ['ci'],
+       e => ['ci'],
 },
 Pbf => {
-       desc => 'Protoss Forge',
-       w => ["ground weap$sign{_}on$sign{_}s", 'mv'],
-       a => ["ground armor", 'mv'],
-       s => ["plasma shields", 'mv'],
+       w => ['mv'],
+       a => ['mv'],
+       s => ['mv'],
 },
 Pby => {
-       desc => 'Protoss Cybernetics Core',
-       w => ["air weap$sign{_}on$sign{_}s", 'mv'],
-       a => ["air armor", 'mv'],
-       s => ["dragoon range", 'mv'],
+       w => ['mv'],
+       a => ['mv'],
+       s => ['mv'],
 },
 Pbb => {
-       desc => 'Protoss Shield Battery',
-       r => ["recharge shields", 'pm'],
+       r => ['pm'],
 },
 Pv => {
-       desc => 'Protoss Probe advanced build',
-       r => ["robotics facility", 'mo modePvr'],
-       s => ["stargate", 'mo modePvs'],
-       c => ["citadel of adun", 'mv modePvc'],
-       b => ["support bay", 'mv modePvb'],
-       f => ["fleet beacon", 'mv modePvf'],
-       t => ["templar archives", 'mv modePvt'],
-       o => ["observa$sign{_}tory", 'mv modePvo'],
-       a => ["arbiter tribunal", 'mv modePva'],
+       r => ['mo modePvr'],
+       s => ['mo modePvs'],
+       c => ['mv modePvc'],
+       b => ['mv modePvb'],
+       f => ['mv modePvf'],
+       t => ['mv modePvt'],
+       o => ['mv modePvo'],
+       a => ['mv modePva'],
 },
 Pvr => {
-       desc => 'Protoss Robotics facility',
        %CONS,
-       s => ["shuttle", 'co'],
-       o => ["observer", 'cp'],
-       v => ["reaver", 'cp modePvrv'],
+       s => ['co'],
+       o => ['cp'],
+       v => ['cp modePvrv'],
 },
 Pvrv => {
-       desc => 'Protoss Reaver',
        %UNIT, %UNITF, %UNITA,
-       r => ["scarab", 'co'],
+       r => ['co'],
 },
 Pvs => {
-       desc => 'Protoss Stargate',
        %CONS,
-       s => ["scout", 'co'],
-       c => ["carrier", 'cp modePvsc'],
-       a => ["arbiter", 'cp modePvsa'],
-       o => ["corsair", 'co modePvso ext'],
+       s => ['co'],
+       c => ['cp modePvsc'],
+       a => ['cp modePvsa'],
+       o => ['co modePvso ext'],
 },
 Pvsc => {
-       desc => 'Protoss Carrier',
        %UNIT, %UNITF, %UNITA,
-       i => ["inter$sign{_}ceptor", 'co'],
+       i => ['co'],
 },
 Pvsa => {
-       desc => 'Protoss Arbiter',
        %UNIT, %UNITF, %UNITA,
-       r => ["recall"],
-       t => ["statis field"],
+       r => [undef],
+       t => [undef],
 },
 Pvso => {
-       desc => 'Protoss Corsair',
        %UNIT, %UNITF, %UNITA,
-       d => ["disrup$sign{_}tion web", 'ci'],
+       d => ['ci'],
 },
 Pvc => {
-       l => ["leg en$sign{_}hancem$sign{_}ent$sign{_}s", 'mv'],
+       l => ['mv'],
 },
 Pvb => {
-       s => ["scarab damage", 'mv'],
-       c => ["reaver capacity", 'mv'],
-       g => ["gravitic drive", 'mv'],
+       s => ['mv'],
+       c => ['mv'],
+       g => ['mv'],
 },
 Pvf => {
-       a => ["apial sensors", 'mv'],
-       g => ["gravitic thrust$sign{_}ers", 'mv'],
-       c => ["carrier capacity", 'mv'],
-       d => ["disrup$sign{_}tion web", 'mv ext'],
-       j => ["argus jewel", 'mv'],
+       a => ['mv'],
+       g => ['mv'],
+       c => ['mv'],
+       d => ['mv ext'],
+       j => ['mv'],
 },
 Pvt => {
-       desc => 'Protoss Templar Archives',
-       t => ["psionic storm", 'mv'],
-       h => ["halluci$sign{_}nation", 'mv'],
-       k => ["khayda$sign{_}rin amul$sign{_}et", 'mv'],
-#      c => ["mind control?", 'mv'], #TODO
-       e => ["mael$sign{_}strom", 'mv'],
-       t => ["argus talisman", 'mv'],
+       t => ['mv'],
+       h => ['mv'],
+       k => ['mv'],
+#      c => ['mv'], #TODO
+       e => ['mv'],
+       t => ['mv'],
 },
 Pvo => {
-       desc => 'Protoss Observatory',
-       g => ["gravitic booster", 'mv'],
-       s => ["sensor array", 'mv'],
+       g => ['mv'],
+       s => ['mv'],
 },
 Pva => {
-       desc => 'Protoss Arbiter Tribunal',
-       r => ["recall", 'mv'],
-       s => ["stasis field", 'mv'],
-       k => ["khayda$sign{_}rin core", 'mv'],
+       r => ['mv'],
+       s => ['mv'],
+       k => ['mv'],
 },
 
 Z => {
-       desc => 'Zerg Larva',
-       d => ["drone", 'co modeZd'],
-       z => ["zergling", 'cp'],
-       o => ["overlord", 'co modeZo'],
-       h => ["hydra$sign{_}lisk", 'cp modeZh'],
-       q => ["queen", 'mv modeZq'],
+       d => ['co modeZd'],
+       z => ['cp'],
+       o => ['co modeZo'],
+       h => ['cp modeZh'],
+       q => ['mv modeZq'],
 },
 Zd => {
-       desc => 'Zerg Drone',
        %UNIT, %UNITH, %UNITB,
-       b => ["basic mutat$sign{_}ion", 'me modeZdb'],
-       v => ["advance$sign{_}d mutat$sign{_}ion", 'me modeZdv'],
+       b => ['me modeZdb'],
+       v => ['me modeZdv'],
 },
 Zdb => {
-       desc => 'Zerg basic Drone mutation',
-       h => ["hatche$sign{_}ry", 'mo modeZdbh'],
-       c => ["creep colony", 'mo modeZdbc'],
-       e => ["extrac$sign{_}tor", 'me'],
-       s => ["spawning pool", 'mv modeZdbs'],
-       v => ["evolution chamber", 'mv modeZdbv'],
-       d => ["hydra$sign{_}lisk den", 'mv modeZdbd'],
+       h => ['mo modeZdbh'],
+       c => ['mo modeZdbc'],
+       e => ['me'],
+       s => ['mv modeZdbs'],
+       v => ['mv modeZdbv'],
+       d => ['mv modeZdbd'],
 },
 Zdbh => {
-       desc => 'Zerg Hatchery',
        %CONS,
-       b => ["burrow", 'me'],
-       s => ["select larvae", 'pm modeZ'],
-       l => ["lair", 'mo modeZdbhl'],
+       b => ['me'],
+       s => ['pm modeZ'],
+       l => ['mo modeZdbhl'],
 },
 Zdbhl => {
-       desc => 'Zerg Lair',
        %CONS,
-       b => ["burrow", 'me'],
-       v => ["ventral sacs", 'mv'],
-       a => ["antennae", 'mv'],
-       p => ["pneumatized carapace", 'mv'],
-       h => ["hive", 'mo modeZdbhlh'],
+       b => ['me'],
+       v => ['mv'],
+       a => ['mv'],
+       p => ['mv'],
+       h => ['mo modeZdbhlh'],
 },
 modeZdbhlh => {
-       desc => 'Zerg Hive',
        %CONS,
-       b => ["burrow", 'me'],
-       v => ["ventral sacs", 'mv'],
-       a => ["antennae", 'mv'],
-       p => ["pneumatized carapace", 'mv'],
+       b => ['me'],
+       v => ['mv'],
+       a => ['mv'],
+       p => ['mv'],
 },
 Zdbs => {
-       desc => 'Zerg Spawning Pool',
-       m => ["metabol boost", 'mv'],
-       a => ["adrenal glands", 'mv'],
+       m => ['mv'],
+       a => ['mv'],
 },
 Zdbv => {
-       m => ["melee attack$sign{_}s", 'mv'],
-       a => ["missile attack$sign{_}s", 'mv'],
-       c => ["carapace", 'mv'],
+       m => ['mv'],
+       a => ['mv'],
+       c => ['mv'],
 },
 Zdbd => {
-       desc => 'Zerg Hydralisk Den',
-       m => ["muscular augments", 'mv'],
-       g => ["grooved spines", 'mv'],
-       l => ["lurker aspect", 'mv'],
+       m => ['mv'],
+       g => ['mv'],
+       l => ['mv'],
 },
 Zdv => {
-       desc => 'Zerg advanced Drone mutation',
 },
 
+}
index 8279df3..386bf40 100644 (file)
@@ -50,8 +50,10 @@ $header{content_type} = "text/html; charset=$sign{charset}";
 </li>
 
 <:
-use Shiar_Sheet::Keyboard;
-my $keys = Shiar_Sheet::Keyboard->new({do 'starcraft.inc.pl'});
+use Shiar_Sheet::Keyboard 2;
+my $info = do 'starcraft.eng.inc.pl' or die $@;
+$info->{def} = do 'starcraft.inc.pl';
+my $keys = Shiar_Sheet::Keyboard->new($info);
 $keys->map($get{map}) or undef $get{map};
 $keys->print_rows($get{rows} || '1 =P1 Z1', [0]);
 :>
diff --git a/vi.eng.inc.pl b/vi.eng.inc.pl
new file mode 100644 (file)
index 0000000..9a4f6f1
--- /dev/null
@@ -0,0 +1,462 @@
+use utf8;
+
+{
+key => {
+
+'~' => ["case toggle"],
+'!' => ["filt$sign{_}er lines"],
+'@' => ["play macro"],
+'#' => ["rev. find word"],
+'$' => ["eol"],
+'%' => ["goto match"],
+'^' => ['"soft" bol'],
+'&' => [":s rep$sign{_}eat"],
+'*' => ["find word"],
+'(' => ["begin senten$sign{_}ce"],
+')' => ["end senten$sign{_}ce"],
+'_' => ['"soft" bol down'],
+'+' => ["next line"],
+'`' => ["goto mark"],
+'0' => ['"hard" bol'],
+'^^'=> ["edit alt. file"],
+'-' => ["prev line"],
+'=' => ["re$sign{_}ind$sign{_}ent"],
+'?' => ["find rev."],
+';' => ["repeat t/f/T/F"],
+':' => ["ex cmd line"],
+"'" => ["goto mark bol"],
+'"' => ["use reg$sign{_}ister"],
+'\\' => ["reser$sign{_}ved"],
+'^\\' => ["to mode/$sign{_}ext$sign{_}ens$sign{_}ion$sign{_}s"],
+',' => ["reverse t/T/f/F"],
+'<' => ["un$sign{_}ind$sign{_}ent"],
+'.' => ["repeat last cmd"],
+'>' => ["ind$sign{_}ent"],
+'/' => ["find"],
+'[' => ["move back$sign{_}ward$sign{_}s"],
+'{' => ["begin parag."],
+']' => ["move forw$sign{_}ard"],
+'}' => ["end parag."],
+'^]'=> ["go to tag"],
+'|' => ["goto (1st) col"],
+
+'a' => ["app$sign{_}end"],
+'A' => ["app$sign{_}end to eol"],
+'^a'=> ["incr$sign{_}ement", "Add one"],
+'b' => ["prev word", "Back"],
+'B' => ['prev <span style="font-variant:small-caps">word</span>'],
+'^b'=> ["page up"],
+'c' => ["chan$sign{_}ge"],
+'C' => ["chan$sign{_}ge to eol"],
+'^c'=> ["abort"],
+'d' => ["del$sign{_}ete"],
+'D' => ["delete to eol"],
+'^d'=> ["scroll down"],
+'e' => ["end word"],
+'E' => ['end <span style="font-variant:small-caps">word</span>'],
+'^e'=> ["window down", "Extra line"],
+'f' => ["fwd to char"],
+'F' => ["back$sign{_}wd to char"],
+'^f'=> ["page down", "page Forward"],
+'g' => ["extra cmds"],
+'G' => ["eof/$sign{_}goto ln"],
+'^g'=> [":file (info)"],
+'h' => [$sign{left}],
+'H' => ["screen top", 'Home row'],
+'i' => ["insert mode"],
+'I' => ["insert at bol"],
+'^i'=> ["jump to newer", 'Increase position'],
+'j' => [$sign{down}],
+'J' => ["join lines"],
+'k' => [$sign{up}],
+'K' => ["help", "looKup Keyword"],
+'l' => [$sign{right}],
+'L' => ["screen bottom", "Lowermost Line"],
+'^l'=> ["redraw"],
+'m' => ["set mark"],
+'M' => ["screen mid$sign{_}dle"],
+'n' => ["next find"],
+'N' => ["prev find"],
+'o' => ["line below", 'Open'],
+'O' => ["line above"],
+'^o'=> ["jump to older"],
+'p' => ["paste after"],
+'P' => ["paste before"],
+'q' => ["rec$sign{_}ord macro", "Queue seQuence"],
+'Q' => ["ex mode"],
+'^q'=> ["(xon)", 'Qome back'],
+'r' => ["repl$sign{_}ace char"],
+'R' => ["repl$sign{_}ace mode"],
+'^r'=> ["redo"],
+'s' => ["subst char"],
+'S' => ["subst line"],
+'^s'=> ["(xoff)", 'Stop'],
+'t' => ["till char"],
+'T' => ["back till char"],
+'^t'=> ["back tag"], # backtrag :P
+'u' => ["undo"],
+'U' => ["undo line"],
+'^u'=> ["scroll up"],
+'v' => ["visual mode"],
+'V' => ["visual lines"],
+'^v'=> ["visual block"],
+'w' => ["next word"],
+'W' => ['next <span style="font-variant:small-caps">word</span>'],
+'^w'=> ["win$sign{_}dow cmds"],
+'x' => ["delete char"],
+'X' => ["back$sign{_}space"],
+'^x'=> ["subs$sign{_}tract"],
+'y' => ["yank", '(copy)'],
+'Y' => ["yank line"],
+'^y'=> ["window up", 'Yield'],
+'z' => ["extra cmds"],
+'Z' => ["quit"],
+'^z'=> [":sus$sign{_}pend", 'zzz (as in sleep)'],
+
+'g~' => ["case toggl$sign{_}e"],
+'g@' => ["oper$sign{_}at$sign{_}or$sign{_}func"],
+'g#' => ["rev. find string"],
+'g$' => ["virt$sign{_}ual eol"],
+'g^' => [qq'"soft" bol v$sign{_}irt$sign{_}ual'],
+'g&' => [":s rep$sign{_}eat glob$sign{_}al$sign{_}ly", "Global substitute"],
+'g*' => ["find string"],
+'g_' => [qq'"soft" eol'],
+'g+' => ["later undo"],
+'g`' => ["to mark keepj$sign{_}umps"],
+'g8' => ["char hex val$sign{_}ue$sign{_}s"],
+'g0' => ["virtual bol"],
+'g-' => ["earlier undo"],
+'g^['=> ["esc"],
+'g]' => ["go to tselect"],
+'g^]'=> ["go to tjump"],
+'g;' => ["to prev change pos"],
+"g'" => ["to mark keepj$sign{_}umps"],
+'g<' => ["see prev cmd output"],
+'g?' => ["rot13 encode"],
+'g,' => ["to next change pos"],
+
+'ga' => ["char value", "Get Ascii value"],
+'g^a'=> ["mem usage stats"],
+'gd' => ["local declar$sign{_}ation"],
+'gD' => ["global declar$sign{_}ation"],
+'ge' => ["back to word end"],
+'gE' => [qq'back to <span style="font-variant:small-caps">word</span> end'],
+'gf' => ["edit file at cur$sign{_}sor", "Goto File"],
+'gF' => ["edit file + jump"],
+'gg' => ["first line"],
+'g^g'=> ["cur$sign{_}sor pos info"],
+'gh' => ["select mode", "Get Highlighted"],
+'gH' => ["select lines", "Get Highlighted"],
+'g^h'=> ["select block", "Get Highlighted"],
+'gi' => ["insert at last pos"],
+'gI' => ["insert at soft bol"],
+'gj' => ["$sign{down} screen"],
+'gJ' => ["join leave spac$sign{_}ing"],
+'gk' => ["$sign{up} screen"],
+'gm' => ["cen$sign{_}ter screen"],
+'go' => [":goto (byte)"],
+'gp' => ["paste still"],
+'gP' => ["paste before still"],
+'gq' => ["for$sign{_}mat"],
+'gQ' => ["ex mode manual :"],
+'gr' => ["virt. repl$sign{_}ace char"],
+'gR' => ["virt. repl$sign{_}ace mode"],
+'gs' => ["sleep", "Go to Sleep"],
+'gt' => ["next tab", "Goto Tab"],
+'gT' => ["tab back"],
+'gu' => ["lower$sign{_}case"],
+'gU' => ["up$sign{_}per$sign{_}case"],
+'gv' => ["prev$sign{_}ious highl$sign{_}ight", 'precedinG Visual'],
+'gV' => ["avoid resel$sign{_}ect$sign{_}ion"],
+'gw' => ["for$sign{_}mat still"],
+'gx' => ["Netrw$sign{_}BrowseX"],
+
+'Z^['=> ["esc"],
+'ZQ' => [" :q! (force)"],
+'ZZ' => [" :wq (write)"],
+
+'z^' => ["page above"],
+'z+' => ["page below"],
+'z-' => ["line at bottom bol", "don't (-) see any further"],
+'z=' => ["sug$sign{_}gest spell$sign{_}ing"],
+'z.' => ["line at center bol"],
+'z^['=> ["esc"],
+
+'za' => ["toggle fold"],
+'zA' => ["toggle fold rec$sign{_}urs$sign{_}ive$sign{_}ly"],
+'zb' => ["line at bot. bol"],
+'zc' => ["close fold"],
+'zC' => ["close folds rec$sign{_}curs$sign{_}ive$sign{_}ly"],
+'zd' => ["delete fold"],
+'zD' => ["delete folds rec$sign{_}urs$sign{_}ive"],
+'ze' => ["cursor at right side"],
+'zE' => ["elimi$sign{_}nate f$sign{_}olds"],
+'zf' => ["create fold"],
+'zF' => ["fold lines"],
+'zg' => ["add spell$sign{_}ing", 'Good word'],
+'zG' => ["temp spell$sign{_}ing"],
+'zh' => ["scroll $sign{right}"],
+'zH' => ["scroll $sign{right} half scr$sign{_}een"],
+'zi' => ["toggle all folds"],
+'zj' => ["next fold start"],
+'zk' => ["prev fold end"],
+'zl' => ["scroll $sign{left}"],
+'zL' => ["scroll $sign{left} half scr$sign{_}een"],
+'z^m'=> ["line at top bol"],
+'zm' => ["fold more"],
+'zM' => ["close all folds"],
+'zn' => ["fold none"],
+'zN' => ["fold norm$sign{_}al"],
+'zo' => ["open fold"],
+'zO' => ["open folds rec$sign{_}urs$sign{_}ive$sign{_}ly"],
+'zr' => ["reduce folding"],
+'zR' => ["open all folds"],
+'zs' => ["cursor at left side"],
+'zt' => ["line at top"],
+'zu' => ["undo spell$sign{_}ing"],
+'zv' => ["unfold cursor line"],
+'zw' => ["add missp$sign{_}ell$sign{_}ing", "Wrong word"],
+'zW' => ["temp missp$sign{_}ell$sign{_}ing"],
+'zx' => ["update folds"],
+'zX' => ["re$sign{_}apply f$sign{_}olds"],
+'zz' => ["line at center", "Zee Zenter (with a funny accent)"],
+
+"[`" => ["previous lc mark"],
+'[#' => ["previous open #if$sign{_}/#else"],
+'[(' => ["previous open ("],
+'[/' => ["start of C com$sign{_}m$sign{_}ent"],
+'[{' => ["previous open {"],
+'[[' => ["section back$sign{_}ward$sign{_}s"],
+'[^['=> ["esc"],
+'[]' => [qq'<span style="font-variant:small-caps">section</span> back$sign{_}ward$sign{_}s'],
+
+'[c' => ["start of change backw$sign{_}ards"],
+'[d' => ["define line"],
+'[D' => ["defin$sign{_}ition"],
+'[^d'=> ["to defin$sign{_}it$sign{_}ion"],
+'[i' => ["first occur$sign{_}renc$sign{_}e line"],
+'[I' => ["first occur$sign{_}renc$sign{_}e"],
+'[^i'=> ["to first occur$sign{_}renc$sign{_}e"],
+'[m' => ["start of funct$sign{_}ion"],
+'[p' => ["P reind$sign{_}ent$sign{_}ed"],
+'[P' => ["[p"],
+'[s' => ["last missp$sign{_}ell$sign{_}ing"],
+'[S' => ["last bad word"],
+'[z' => ["start of open fold"],
+
+"]`" => ["next lc mark"],
+']#' => ["next open #endif$sign{_}/#else"],
+'])' => ["next open )"],
+']/' => ["end of C com$sign{_}m$sign{_}ent"],
+'][' => [qq'<span style="font-variant:small-caps">section</span> forw$sign{_}ard'],
+']^['=> ["esc"],
+']]' => ["section forw$sign{_}ard"],
+']}' => ["next open }"],
+
+']c' => ["start of change forw$sign{_}ards"],
+']d' => ["next define line"],
+']D' => ["next define"],
+']^d'=> ["to next define"],
+']i' => ["next occur$sign{_}renc$sign{_}e line"],
+']I' => ["next occur$sign{_}renc$sign{_}e"],
+']^i'=> ["to occur$sign{_}renc$sign{_}e"],
+']m' => ["end of funct$sign{_}ion"],
+']p' => ["p reind$sign{_}ent$sign{_}ed"],
+']s' => ["next missp$sign{_}ell$sign{_}ing"],
+']S' => ["next bad word"],
+']z' => ["end of open fold"],
+
+'^w<' => ["width decr$sign{_}ease"],
+'^w>' => ["width incr$sign{_}ease"],
+'^w^' => ["split, edit alt file"],
+'^w_' => ["set height"],
+'^w+' => ["height incr$sign{_}ease"],
+'^w-' => ["height decr$sign{_}ease"],
+'^w=' => ["same height"],
+'^w^['=> ["esc"],
+'^w]' => ["split, to tag"],
+'^w}' => ["pre$sign{_}view tag"],
+'^w|' => ["set width"],
+
+'^wb' => ["go to bot$sign{_}tom"],
+'^wc' => [":close"],
+'^w^c'=> ["abort"],
+'^wd' => ["split, to def$sign{_}inition"],
+'^wf' => ["split, file edit"],
+'^wF' => ["^wf, jump to line"],
+'^wg' => ["extra cmds"],
+'^wh' => ["go left"],
+'^wH' => ["move far left"],
+'^wi' => ["split, to decl of id$sign{_}ent$sign{_}ifier"],
+'^wj' => ["go down"],
+'^wJ' => ["move to bottom"],
+'^wk' => ["go up"],
+'^wK' => ["move to top"],
+'^wl' => ["go right"],
+'^wL' => ["move far right"],
+'^wn' => ["open new"],
+'^wo' => [":only current"],
+'^wp' => ["go to prev$sign{_}ious"],
+'^wP' => ["go to pre$sign{_}view"],
+'^wq' => [":quit current"],
+'^wr' => ["rotate down$sign{_}ward$sign{_}s"],
+'^wR' => ["rotate up$sign{_}ward$sign{_}s"],
+'^ws' => ["split horiz$sign{_}ont$sign{_}al$sign{_}ly"],
+'^wt' => ["go to top"],
+'^wv' => ["split vert$sign{_}ic$sign{_}al$sign{_}ly"],
+'^ww' => ["go to next", "Wrap around"],
+'^wW' => ["go above$sign{_}/left"],
+'^wx' => ["ex$sign{_}chan$sign{_}ge"],
+'^wz' => ["close pre$sign{_}view"],
+
+'^wg^['=> ["esc"],
+'^wg]' => ["split, :ts$sign{_}elect"],
+'^wg}' => [":ptj$sign{_}ump to tag"],
+'^wg^]'=> ["split, :tj$sign{_}ump"],
+'^wgf' => ["file in tab"],
+'^wgF' => ["^wgf, to line$sign{_}nr"],
+
+'v!' => ["external filter"],
+'v:' => ["cmd on range"],
+'v<' => ["un$sign{_}indent"],
+'v=' => ["re$sign{_}ind$sign{_}ent"],
+'v>' => ["ind$sign{_}ent"],
+'v~' => ["toggle case"],
+'v^['=> ["esc"],
+'v^]'=> ["jump to tag"],
+
+'va' => ["ex$sign{_}tend area"],
+'vA' => ["ap$sign{_}pend to block"], # block
+'vc' => ["repl$sign{_}ace area"],
+'vC' => ["repl$sign{_}ace full lines"], # like vS, but blocks are extended until eol
+'v^c'=> ["abort"],
+'vd' => ["delete area"],
+'vD' => ["delete lines"],
+'vg' => ["extra cmds"],
+'v^g'=> ["select mode"],
+'v^h'=> ["back$sign{_}space"], # delete in select mode, left otherwise
+'vi' => ["extend inner a$sign{_}r$sign{_}ea"],
+'vI' => ["insert to block"], # block
+'vJ' => ["join lines"],
+'vK' => ["help sel$sign{_}ect$sign{_}ion"],
+'vo' => ["to other corner"],
+'vO' => ["to other side"],
+'v^o'=> ["visual once"], # select
+'vp' => ["repl$sign{_}ace w/ paste"],
+'vP' => ["repl$sign{_}ace w/ paste"],
+'vr' => ["fill up w/ ch$sign{_}ar"],
+'vS' => ["repl$sign{_}ace lines"],
+'vu' => ["lower$sign{_}case"],
+'vU' => ["upper$sign{_}case"],
+'vv' => ["char$sign{_}wise"],
+'vV' => ["line$sign{_}wise"],
+'v^v'=> ["block$sign{_}wise"],
+'vy' => ["yank area"],
+'vY' => ["yank lines"],
+
+'vg^['=> ["esc"],
+'vg?' => ["rot13 encode"],
+'vgJ' => ["join literal$sign{_}ly"],
+'vgq' => ["for$sign{_}mat"],
+'vgw' => ["for$sign{_}mat still"],
+
+"va'" => ["quoted string"],
+'va<' => ["&lt;&gt; block"],
+'va[' => ["[] block"],
+'va^['=> ["esc"],
+
+'vab' => ["() block"],
+'vaB' => ["{} Block"],
+'vap' => ["para$sign{_}graph"],
+'vas' => ["senten$sign{_}ce"],
+'vat' => ["xml tag block"],
+'vaw' => ["word"],
+'vaW' => ['<span style="font-variant:small-caps">word</span>'],
+
+#'c^a' => ["complete"], #todo
+#'c^b' => ["bol"],
+#'c^d' => ["complete"], #todo
+#'c^e' => ["eol"],
+#'c^j' => ["execute cmd"],
+#'c^l' => ["complete"], #todo
+#'c^n' => ["complete"], #todo
+#'c^p' => ["complete"], #todo
+#'c^r' => 'i^r', # and then some...
+#      ## ["insert register"],
+#'c^y' => ["selec$sign{_}tion to clip$sign{_}b$sign{_}oard"],
+
+'i^@' => ["last insert"],
+'i^^' => ["toggle :lmap usag$sign{_}e"],
+'i^[' => ["esc"],
+'i^]' => ["abbrev$sign{_}iate"],
+'i^_' => ["toggle lang$sign{_}uage"],
+
+'i^a' => ["insert prev$sign{_}ious"],
+'i^b' => ["former i^_"],
+'i^c' => ["abort, no abbr"],
+'i^d' => ["un$sign{_}ind$sign{_}ent"],
+'i^e' => ["ins char below"],
+'i^f' => ["set indent$sign{_}ation"],
+'i^g' => ["extra cmds"],
+'i^h' => ["back$sign{_}space"],
+'i^i' => ["tab"],
+'i^j' => ["enter"],
+'i^k' => ["di$sign{_}graph", "Key code"],
+'i^l' => ["<em>im</em> leave ins mode"],
+'i^m' => ["enter"],
+'i^n' => ["find next keyword"],
+'i^o' => ["exec$sign{_}ute cmd"],
+'i^p' => ["find prev keyword"],
+'i^r' => ["insert reg$sign{_}ister"],
+'i^t' => ["indent"],
+'i^u' => ["delete line"],
+'i^v' => ["literal or ch$sign{_}ar$sign{_}cod$sign{_}e", "Verbatim or by Value"],
+'i^w' => ["delete word back"],
+'i^x' => ["ex$sign{_}pand mode"],
+'i^y' => ["ins char above"],
+'i^z' => [":sus$sign{_}pend in <em>im</em>"],
+
+'i^gk' => ["$sign{up} start col$sign{_}umn"],
+'i^gj' => ["$sign{down} start col$sign{_}umn"],
+'i^gu' => ["break undo seq$sign{_}uence"],
+# other i^g keys (even esc) are not recognized
+
+'i^x^[' => ["esc"],
+'i^x^]' => ["tag comp$sign{_}l$sign{_}et$sign{_}e"],
+'i^x^d' => ["def$sign{_}ine compl$sign{_}et$sign{_}e"],
+'i^x^e' => ["window up"],
+'i^x^f' => ["file comp$sign{_}l$sign{_}et$sign{_}e"],
+'i^x^i' => ["ident comp$sign{_}l$sign{_}et$sign{_}e"],
+'i^x^k' => ["dict comp$sign{_}l$sign{_}et$sign{_}e"],
+'i^x^l' => ["line comp$sign{_}l$sign{_}et$sign{_}e"],
+'i^x^n' => ["next comp$sign{_}l$sign{_}et$sign{_}e"],
+'i^x^o' => ["omni comp$sign{_}l$sign{_}et$sign{_}e"],
+'i^x^p' => ["prev comp$sign{_}l$sign{_}ete"],
+'i^x^s' => ["spell sugg$sign{_}est"],
+'i^x^t' => ["thes$sign{_}aur$sign{_}us compl$sign{_}et$sign{_}e"],
+'i^x^u' => ["cus$sign{_}tom comp$sign{_}l$sign{_}et$sign{_}e"],
+'i^x^v' => ["ex cmd compl$sign{_}et$sign{_}e"],
+'i^x^y' => ["window down"],
+
+# XXX ex mode if you want to go completely wild
+},
+
+mode => {
+       ''    => "normal mode",
+        g    => "extended commands (g)",
+        Z    => "quit commands",
+        z    => "additional commands (z)",
+       '['   => "backward search commands ([)",
+       ']'   => "forward search commands (])",
+       '^w'  => "window commands (ctrl-w)",
+       '^wg' => "extended window commands (ctrl-w g)",
+        v    => "visual mode",
+        vg   => "extended visual commands (v g)",
+        va   => 'text object selection (v a/i)',
+#       c    => "command-line mode",
+        i    => "insert mode",
+       'i^g' => "extended insert commands (i ctrl-g)",
+       'i^x' => "insert completion commands (i ctrl-x)",
+},
+
+}
index a4a20e8..bd9db3e 100644 (file)
--- a/vi.inc.pl
+++ b/vi.inc.pl
 use utf8;
+{
 
 '' => {
-       desc => "normal mode",
-
-       '~' => ["case toggle", "co undo"],
-       '!' => ["filt$sign{_}er lines", "co argm undo modec"],
-       '@' => ["play macro", "co arg undo"],
-       '#' => ["rev. find word", "pm ext vim6"],
-       '$' => ["eol", "pm"],
-       '%' => ["goto match", "pm"],
-       '^' => ['"soft" bol', "pm"],
-       '&' => [":s rep$sign{_}eat", "co undo"],
-       '*' => ["find word", "pm ext vim6"],
-       '(' => ["begin senten$sign{_}ce", 'pm'],
-       ')' => ["end senten$sign{_}ce", 'pm'],
-       '_' => ['"soft" bol down', "pm"],
-       '+' => ["next line", "pm"],
-       '`' => ["goto mark", "pm arg"],
-       '0' => ['"hard" bol', "pm"],
-       '^^'=> ["edit alt. file", "co"],
-       '-' => ["prev line", "pm"],
-       '=' => ["re$sign{_}ind$sign{_}ent", 'co argm undo'],
-       '?' => ["find rev.", "pm arg modec"],
-       ';' => ["repeat t/f/T/F", "pm"],
-       ':' => ["ex cmd line", "co modec"],
-       "'" => ["goto mark bol", "pm arg"],
-       '"' => ["use reg$sign{_}ister", 'co arg'],
-       '\\' => ["reser$sign{_}ved", 'me arg'],
-       '^\\' => ["to mode/$sign{_}ext$sign{_}ens$sign{_}ion$sign{_}s", "mo arg"],
-       ',' => ["reverse t/T/f/F", "pm"],
-       '<' => ["un$sign{_}ind$sign{_}ent", "co argm undo"],
-       '.' => ["repeat last cmd", "co undo"],
-       '>' => ["ind$sign{_}ent", "co argm undo"],
-       '/' => ["find", "pm arg modec"],
-       '[' => ["move back$sign{_}ward$sign{_}s", "me arg mode["],
-       '{' => ["begin parag.", "pm"],
-       ']' => ["move forw$sign{_}ard", "me arg mode]"],
-       '}' => ["end parag.", "pm"],
-       '^]'=> ["go to tag", "po"],
-       '|' => ["goto (1st) col", "pm"],
-
-       'a' => ["app$sign{_}end", "mi undo modei"],
-       'A' => ["app$sign{_}end to eol", "mi undo modei"],
-       '^a'=> ["incr$sign{_}ement", "co undo", "Add one"],
-       'b' => ["prev word", "pm", "Back"],
-       'B' => ['prev <span style="font-variant:small-caps">word</span>', "pm"],
-       '^b'=> ["page up", "pm"],
-       'c' => ["chan$sign{_}ge", "mi argm undo modei"],
-       'C' => ["chan$sign{_}ge to eol", "mi undo modei"],
-       '^c'=> ["abort", "co"],
-       'd' => ["del$sign{_}ete", "co argm undo"],
-       'D' => ["delete to eol", "co undo"],
-       '^d'=> ["scroll down", "po"],
-       'e' => ["end word", "pm"],
-       'E' => ['end <span style="font-variant:small-caps">word</span>', "pm"],
-       '^e'=> ["window down", "po", "Extra line"],
-       'f' => ["fwd to char", "pm arg"],
-       'F' => ["back$sign{_}wd to char", "pm arg"],
-       '^f'=> ["page down", "pm", "page Forward"],
-       'g' => ["extra cmds", "me arg modeg"],
-       'G' => ["eof/$sign{_}goto ln", "pm"],
-       '^g'=> [":file (info)", "ci"],
-       'h' => [$sign{left}, "pm"],
-       'H' => ["screen top", "pm", 'Home row'],
+       '~' => ["co undo"],
+       '!' => ["co argm undo modec"],
+       '@' => ["co arg undo"],
+       '#' => ["pm ext vim6"],
+       '$' => ["pm"],
+       '%' => ["pm"],
+       '^' => ["pm"],
+       '&' => ["co undo"],
+       '*' => ["pm ext vim6"],
+       '(' => ['pm'],
+       ')' => ['pm'],
+       '_' => ["pm"],
+       '+' => ["pm"],
+       '`' => ["pm arg"],
+       '0' => ["pm"],
+       '^^'=> ["co"],
+       '-' => ["pm"],
+       '=' => ['co argm undo'],
+       '?' => ["pm arg modec"],
+       ';' => ["pm"],
+       ':' => ["co modec"],
+       "'" => ["pm arg"],
+       '"' => ['co arg'],
+       '\\' => ['me arg'],
+       '^\\' => ["mo arg"],
+       ',' => ["pm"],
+       '<' => ["co argm undo"],
+       '.' => ["co undo"],
+       '>' => ["co argm undo"],
+       '/' => ["pm arg modec"],
+       '[' => ["me arg mode["],
+       '{' => ["pm"],
+       ']' => ["me arg mode]"],
+       '}' => ["pm"],
+       '^]'=> ["po"],
+       '|' => ["pm"],
+
+       'a' => ["mi undo modei"],
+       'A' => ["mi undo modei"],
+       '^a'=> ["co undo"],
+       'b' => ["pm"],
+       'B' => ["pm"],
+       '^b'=> ["pm"],
+       'c' => ["mi argm undo modei"],
+       'C' => ["mi undo modei"],
+       '^c'=> ["co"],
+       'd' => ["co argm undo"],
+       'D' => ["co undo"],
+       '^d'=> ["po"],
+       'e' => ["pm"],
+       'E' => ["pm"],
+       '^e'=> ["po"],
+       'f' => ["pm arg"],
+       'F' => ["pm arg"],
+       '^f'=> ["pm"],
+       'g' => ["me arg modeg"],
+       'G' => ["pm"],
+       '^g'=> ["ci"],
+       'h' => ["pm"],
+       'H' => ["pm"],
        '^h'=> "h",
-       'i' => ["insert mode", "mi undo modei"],
-       'I' => ["insert at bol", "mi undo modei"],
-       '^i'=> ["jump to newer", "pm ext vim6", 'Increase position'],
-       'j' => [$sign{down}, "pm"],
-       'J' => ["join lines", "co undo"],
+       'i' => ["mi undo modei"],
+       'I' => ["mi undo modei"],
+       '^i'=> ["pm ext vim6"],
+       'j' => ["pm"],
+       'J' => ["co undo"],
        '^j'=> "j",
-       'k' => [$sign{up}, "pm"],
-       'K' => ["help", "co", "looKup Keyword"],
-       'l' => [$sign{right}, "pm"],
-       'L' => ["screen bottom", "pm", "Lowermost Line"],
-       '^l'=> ["redraw", "ci"],
-       'm' => ["set mark", "co arg"],
-       'M' => ["screen mid$sign{_}dle", "pm"],
+       'k' => ["pm"],
+       'K' => ["co"],
+       'l' => ["pm"],
+       'L' => ["pm"],
+       '^l'=> ["ci"],
+       'm' => ["co arg"],
+       'M' => ["pm"],
        '^m'=> "+",
-       'n' => ["next find", "pm"],
-       'N' => ["prev find", "pm"],
+       'n' => ["pm"],
+       'N' => ["pm"],
        '^n'=> "j",
-       'o' => ["line below", "mi undo modei", 'Open'],
-       'O' => ["line above", "mi undo modei"],
-       '^o'=> ["jump to older", "pm ext vim6"],
-       'p' => ["paste after", "co undo"],
-       'P' => ["paste before", "co undo"],
+       'o' => ["mi undo modei"],
+       'O' => ["mi undo modei"],
+       '^o'=> ["pm ext vim6"],
+       'p' => ["co undo"],
+       'P' => ["co undo"],
        '^p'=> "k",
-       'q' => ["rec$sign{_}ord macro", "mo arg", "Queue seQuence"],
-       'Q' => ["ex mode", "mo"],
-       '^q'=> ["(xon)", "ci", 'Qome back'], # or ^v
-       'r' => ["repl$sign{_}ace char", "co arg undo"],
-       'R' => ["repl$sign{_}ace mode", "mi undo modei"],
-       '^r'=> ["redo", "co undo ext vim6"],
-       's' => ["subst char", "mi undo modei"],
-       'S' => ["subst line", "mi undo modei"],
-       '^s'=> ["(xoff)", "ci", 'Stop'],
-       't' => ["till char", "pm arg"],
-       'T' => ["back till char", "pm"],
-       '^t'=> ["back tag", "po"], # backtrag :P
-       'u' => ["undo", "co undo"],
-       'U' => ["undo line", "co undo"],
-       '^u'=> ["scroll up", "po"],
-       'v' => ["visual mode", "mv modev"],
-       'V' => ["visual lines", "mv modev"],
-       '^v'=> ["visual block", "mv modev ext vim6"],
-       'w' => ["next word", "pm"],
-       'W' => ['next <span style="font-variant:small-caps">word</span>', "pm"],
-       '^w'=> ["win$sign{_}dow cmds", "me arg mode^w"],
-       'x' => ["delete char", "co undo"],
-       'X' => ["back$sign{_}space", "co undo"],
-       '^x'=> ["subs$sign{_}tract", "co undo"],
-       'y' => ["yank", "co argm", '(copy)'],
-       'Y' => ["yank line", "co"],
-       '^y'=> ["window up", "po", 'Yield'],
-       'z' => ["extra cmds", "me arg modez"],
-       'Z' => ["quit", "me arg modeZ"],
-       '^z'=> [":sus$sign{_}pend", "ci", 'zzz (as in sleep)'],
+       'q' => ["mo arg"],
+       'Q' => ["mo"],
+       '^q'=> ["ci"], # or ^v
+       'r' => ["co arg undo"],
+       'R' => ["mi undo modei"],
+       '^r'=> ["co undo ext vim6"],
+       's' => ["mi undo modei"],
+       'S' => ["mi undo modei"],
+       '^s'=> ["ci"],
+       't' => ["pm arg"],
+       'T' => ["pm"],
+       '^t'=> ["po"],
+       'u' => ["co undo"],
+       'U' => ["co undo"],
+       '^u'=> ["po"],
+       'v' => ["mv modev"],
+       'V' => ["mv modev"],
+       '^v'=> ["mv modev ext vim6"],
+       'w' => ["pm"],
+       'W' => ["pm"],
+       '^w'=> ["me arg mode^w"],
+       'x' => ["co undo"],
+       'X' => ["co undo"],
+       '^x'=> ["co undo"],
+       'y' => ["co argm"],
+       'Y' => ["co"],
+       '^y'=> ["po"],
+       'z' => ["me arg modez"],
+       'Z' => ["me arg modeZ"],
+       '^z'=> ["ci"],
 }, # normal mode
 
 g => {
-       desc => "extended commands (g)",
        lead => "g",
 
-       '~' => ["case toggl$sign{_}e", "co argm ext vim6"],
-       '@' => ["oper$sign{_}at$sign{_}or$sign{_}func", "co ext vim7 new"],
-       '#' => ["rev. find string", "pm ext vim6"],
-       '$' => ["virt$sign{_}ual eol", "pm"],
-       '^' => [qq'"soft" bol v$sign{_}irt$sign{_}ual', "pm ext vim6"],
-       '&' => [":s rep$sign{_}eat glob$sign{_}al$sign{_}ly", "co", "Global substitute"],
-       '*' => ["find string", "pm ext vim6"],
-       '_' => [qq'"soft" eol', "pm ext vim6"],
-       '+' => ["later undo", "co ext vim7 new"],
-       '`' => ["to mark keepj$sign{_}umps", "pm ext vim6 arg"],
-       '8' => ["char hex val$sign{_}ue$sign{_}s", "ci"],
-       '0' => ["virtual bol", "pm ext vim6"],
-       '-' => ["earlier undo", "co ext vim7 new"],
-       '^['=> ["esc", "mo mode"],
-       ']' => ["go to tselect", "po"],
-       '^]'=> ["go to tjump", "po"],
-       ';' => ["to prev change pos", "pm"],
-       "'" => ["to mark keepj$sign{_}umps", "pm ext vim6 arg"],
-       '<' => ["see prev cmd output", "co ext vim7 new"],
-       '?' => ["rot13 encode", "co argm ext vim6"],
-       ',' => ["to next change pos", "pm"],
-
-       'a' => ["char value", "ci", "Get Ascii value"],
-       '^a'=> ["mem usage stats", "ci"],
-       'd' => ["local declar$sign{_}ation", "pm ext vim6"],
-       'D' => ["global declar$sign{_}ation", "pm ext vim6"],
-       'e' => ["back to word end", "pm"],
-       'E' => [qq'back to <span style="font-variant:small-caps">word</span> end', "pm"],
-       'f' => ["edit file at cur$sign{_}sor", "co ext vim6", "Goto File"],
-       'F' => ["edit file + jump", "co ext vim7 new"],
-       'g' => ["first line", "pm"],
-       '^g'=> ["cur$sign{_}sor pos info", "ci"],
-       'h' => ["select mode", "mv modev", "Get Highlighted"],
-       'H' => ["select lines", "mv modev", "Get Highlighted"],
-       '^h'=> ["select block", "mv modev ext vim6", "Get Highlighted"],
-       'i' => ["insert at last pos", "mi undo modei"],
-       'I' => ["insert at soft bol", "mi undo modei"],
-       'j' => ["$sign{down} screen", "pm ext vim6"],
-       'J' => ["join leave spac$sign{_}ing", "co"],
-       'k' => ["$sign{up} screen", "pm ext vim6"],
-       'm' => ["cen$sign{_}ter screen", "pm ext vim6"],
-       'o' => [":goto (byte)", "pm"],
-       'p' => ["paste still", "co undo"],
-       'P' => ["paste before still", "co"],
-       'q' => ["for$sign{_}mat", "co argm"],
-       'Q' => ["ex mode manual :", "mo ext vim6"],
-       'r' => ["virt. repl$sign{_}ace char", "co arg"],
-       'R' => ["virt. repl$sign{_}ace mode", "mi undo modei"],
-       's' => ["sleep", "ci ext vim6", "Go to Sleep"],
-       't' => ["next tab", "po ext vim7 new", "Goto Tab"],
-       'T' => ["tab back", "po ext vim7 new"],
-       'u' => ["lower$sign{_}case", "co argm ext vim6"], # XXX undo?
-       'U' => ["up$sign{_}per$sign{_}case", "co undo argm ext vim6"],
-       'v' => ["prev$sign{_}ious highl$sign{_}ight", 'mv modev', 'precedinG Visual'],
-       'V' => ["avoid resel$sign{_}ect$sign{_}ion", "co"],
-       'w' => ["for$sign{_}mat still", "co argm ext vim7 new"],
-       'x' => ["Netrw$sign{_}BrowseX", "co ext vim7 new"],
+       '~' => ["co argm ext vim6"],
+       '@' => ["co ext vim7 new"],
+       '#' => ["pm ext vim6"],
+       '$' => ["pm"],
+       '^' => ["pm ext vim6"],
+       '&' => ["co"],
+       '*' => ["pm ext vim6"],
+       '_' => ["pm ext vim6"],
+       '+' => ["co ext vim7 new"],
+       '`' => ["pm ext vim6 arg"],
+       '8' => ["ci"],
+       '0' => ["pm ext vim6"],
+       '-' => ["co ext vim7 new"],
+       '^['=> ["mo mode"],
+       ']' => ["po"],
+       '^]'=> ["po"],
+       ';' => ["pm"],
+       "'" => ["pm ext vim6 arg"],
+       '<' => ["co ext vim7 new"],
+       '?' => ["co argm ext vim6"],
+       ',' => ["pm"],
+
+       'a' => ["ci"],
+       '^a'=> ["ci"],
+       'd' => ["pm ext vim6"],
+       'D' => ["pm ext vim6"],
+       'e' => ["pm"],
+       'E' => ["pm"],
+       'f' => ["co ext vim6"],
+       'F' => ["co ext vim7 new"],
+       'g' => ["pm"],
+       '^g'=> ["ci"],
+       'h' => ["mv modev"],
+       'H' => ["mv modev"],
+       '^h'=> ["mv modev ext vim6"],
+       'i' => ["mi undo modei"],
+       'I' => ["mi undo modei"],
+       'j' => ["pm ext vim6"],
+       'J' => ["co"],
+       'k' => ["pm ext vim6"],
+       'm' => ["pm ext vim6"],
+       'o' => ["pm"],
+       'p' => ["co undo"],
+       'P' => ["co"],
+       'q' => ["co argm"],
+       'Q' => ["mo ext vim6"],
+       'r' => ["co arg"],
+       'R' => ["mi undo modei"],
+       's' => ["ci ext vim6"],
+       't' => ["po ext vim7 new"],
+       'T' => ["po ext vim7 new"],
+       'u' => ["co argm ext vim6"], # XXX undo?
+       'U' => ["co undo argm ext vim6"],
+       'v' => ['mv modev'],
+       'V' => ["co"],
+       'w' => ["co argm ext vim7 new"],
+       'x' => ["co ext vim7 new"],
 }, # mode g
 
 Z => {
-       desc => "quit commands",
        lead => "Z",
 
-       '^['=> ["esc", "mo mode"],
+       '^['=> ["mo mode"],
 
-       'Q' => [" :q! (force)", "co ext vim6"],
-       'Z' => [" :wq (write)", "co"],
+       'Q' => ["co ext vim6"],
+       'Z' => ["co"],
 }, # mode Z
 
 z => {
-       desc => "additional commands (z)",
        lead => "z",
 
-       '^' => ["page above", "po"],
-       '+' => ["page below", "po"],
-       '-' => ["line at bottom bol", "po", "don't (-) see any further"],
-       '=' => ["sug$sign{_}gest spell$sign{_}ing", "co ext vim7 new"],
-       '.' => ["line at center bol", "po"],
-       '^['=> ["esc", "mo mode"],
-
-       'a' => ["toggle fold", "co ext vim6 folding"],
-       'A' => ["toggle fold rec$sign{_}urs$sign{_}ive$sign{_}ly", "co ext vim6 folding"],
-       'b' => ["line at bot. bol", "po"],
-       'c' => ["close fold", "co ext vim6 folding"],
-       'C' => ["close folds rec$sign{_}curs$sign{_}ive$sign{_}ly", "co ext vim6 folding"],
-       'd' => ["delete fold", "co ext vim6 folding"],
-       'D' => ["delete folds rec$sign{_}urs$sign{_}ive", "co ext vim6 folding"],
-       'e' => ["cursor at right side", "po"],
-       'E' => ["elimi$sign{_}nate f$sign{_}olds", "co ext vim6 folding"],
-       'f' => ["create fold", "co argm ext vim6 folding"],
-       'F' => ["fold lines", "co ext vim6 folding"],
-       'g' => ["add spell$sign{_}ing", "co ext vim7 new", 'Good word'],
-       'G' => ["temp spell$sign{_}ing", "co ext vim7 new"],
-       'h' => ["scroll $sign{right}", "po"],
-       'H' => ["scroll $sign{right} half scr$sign{_}een", "po"],
-       'i' => ["toggle all folds", "co ext vim6 folding"],
-       'j' => ["next fold start", "pm ext vim6 folding"],
-       'k' => ["prev fold end", "pm ext vim6 folding"],
-       'l' => ["scroll $sign{left}", "po"],
-       'L' => ["scroll $sign{left} half scr$sign{_}een", "po"],
-       '^m'=> ["line at top bol", "po"],
-       'm' => ["fold more", "co ext vim6 folding"],
-       'M' => ["close all folds", "co ext vim6 folding"],
-       'n' => ["fold none", "co ext vim6 folding"],
-       'N' => ["fold norm$sign{_}al", "co ext vim6 folding"],
-       'o' => ["open fold", "co ext vim6 folding"],
-       'O' => ["open folds rec$sign{_}urs$sign{_}ive$sign{_}ly", "co ext vim6 folding"],
-       'r' => ["reduce folding", "co ext vim6 folding"],
-       'R' => ["open all folds", "co ext vim6 folding"],
-       's' => ["cursor at left side", "po"],
-       't' => ["line at top", "po"],
-       'u' => ["undo spell$sign{_}ing", "co arg ext vim7 new"],
-       'v' => ["unfold cursor line", "co ext vim6 folding"],
-       'w' => ["add missp$sign{_}ell$sign{_}ing", "co ext vim7 new", "Wrong word"],
-       'W' => ["temp missp$sign{_}ell$sign{_}ing", "co ext vim7 new"],
-       'x' => ["update folds", "co ext vim6 folding"],
-       'X' => ["re$sign{_}apply f$sign{_}olds", "co ext vim6 folding"],
-       'z' => ["line at center", "po", "Zee Zenter (with a funny accent)"],
+       '^' => ["po"],
+       '+' => ["po"],
+       '-' => ["po"],
+       '=' => ["co ext vim7 new"],
+       '.' => ["po"],
+       '^['=> ["mo mode"],
+
+       'a' => ["co ext vim6 folding"],
+       'A' => ["co ext vim6 folding"],
+       'b' => ["po"],
+       'c' => ["co ext vim6 folding"],
+       'C' => ["co ext vim6 folding"],
+       'd' => ["co ext vim6 folding"],
+       'D' => ["co ext vim6 folding"],
+       'e' => ["po"],
+       'E' => ["co ext vim6 folding"],
+       'f' => ["co argm ext vim6 folding"],
+       'F' => ["co ext vim6 folding"],
+       'g' => ["co ext vim7 new"],
+       'G' => ["co ext vim7 new"],
+       'h' => ["po"],
+       'H' => ["po"],
+       'i' => ["co ext vim6 folding"],
+       'j' => ["pm ext vim6 folding"],
+       'k' => ["pm ext vim6 folding"],
+       'l' => ["po"],
+       'L' => ["po"],
+       '^m'=> ["po"],
+       'm' => ["co ext vim6 folding"],
+       'M' => ["co ext vim6 folding"],
+       'n' => ["co ext vim6 folding"],
+       'N' => ["co ext vim6 folding"],
+       'o' => ["co ext vim6 folding"],
+       'O' => ["co ext vim6 folding"],
+       'r' => ["co ext vim6 folding"],
+       'R' => ["co ext vim6 folding"],
+       's' => ["po"],
+       't' => ["po"],
+       'u' => ["co arg ext vim7 new"],
+       'v' => ["co ext vim6 folding"],
+       'w' => ["co ext vim7 new"],
+       'W' => ["co ext vim7 new"],
+       'x' => ["co ext vim6 folding"],
+       'X' => ["co ext vim6 folding"],
+       'z' => ["po"],
 }, # mode z
 
 '[' => {
-       desc => "backward search commands ([)",
        lead => "[",
 
-       "`" => ["previous lc mark", "pm ext vim6"],
-       '#' => ["previous open #if$sign{_}/#else", "pm"],
-       '(' => ["previous open (", "pm"],
+       "`" => ["pm ext vim6"],
+       '#' => ["pm"],
+       '(' => ["pm"],
        '*' => "[/",
-       '/' => ["start of C com$sign{_}m$sign{_}ent", "pm"],
+       '/' => ["pm"],
        "'" => "[` ^", # ext vim6
-       '{' => ["previous open {", "pm"],
-       '[' => ["section back$sign{_}ward$sign{_}s", "pm"],
-       '^['=> ["esc", "mo mode"],
-       ']' => [qq'<span style="font-variant:small-caps">section</span> back$sign{_}ward$sign{_}s', "pm"],
-
-       'c' => ["start of change backw$sign{_}ards", "pm"],
-       'd' => ["define line", "ci"],
-       'D' => ["defin$sign{_}ition", "co"],
-       '^d'=> ["to defin$sign{_}it$sign{_}ion", "po"],
+       '{' => ["pm"],
+       '[' => ["pm"],
+       '^['=> ["mo mode"],
+       ']' => ["pm"],
+
+       'c' => ["pm"],
+       'd' => ["ci"],
+       'D' => ["co"],
+       '^d'=> ["po"],
        'f' => "gf",  # deprecated
-       'i' => ["first occur$sign{_}renc$sign{_}e line", 'ci'],
-       'I' => ["first occur$sign{_}renc$sign{_}e", 'co'],
-       '^i'=> ["to first occur$sign{_}renc$sign{_}e", 'po'],
-       'm' => ["start of funct$sign{_}ion", "pm"],
-       'p' => ["P reind$sign{_}ent$sign{_}ed", "co"],
-       'P' => ["[p", "co"],
-       's' => ["last missp$sign{_}ell$sign{_}ing", "po ext vim7 new"],
-       'S' => ["last bad word", "po ext vim7 new"],
-       'z' => ["start of open fold", "pm ext vim6 folding"],
+       'i' => ['ci'],
+       'I' => ['co'],
+       '^i'=> ['po'],
+       'm' => ["pm"],
+       'p' => ["co"],
+       'P' => ["co"],
+       's' => ["po ext vim7 new"],
+       'S' => ["po ext vim7 new"],
+       'z' => ["pm ext vim6 folding"],
 }, # mode [
 
 ']' => {
-       desc => "forward search commands (])",
        lead => "]",
 
-       "`" => ["next lc mark", "pm ext vim6"],
-       '#' => ["next open #endif$sign{_}/#else", "pm"],
-       ')' => ["next open )", "pm"],
+       "`" => ["pm ext vim6"],
+       '#' => ["pm"],
+       ')' => ["pm"],
        '*' => "]/",
        "'" => "]` ^", # ext vim6
-       '/' => ["end of C com$sign{_}m$sign{_}ent", "pm"],
-       '[' => [qq'<span style="font-variant:small-caps">section</span> forw$sign{_}ard', "pm"],
-       '^['=> ["esc", "mo mode"],
-       ']' => ["section forw$sign{_}ard", "pm"],
-       '}' => ["next open }", "pm"],
-
-       'c' => ["start of change forw$sign{_}ards", "pm"],
-       'd' => ["next define line", "ci"],
-       'D' => ["next define", "co"],
-       '^d'=> ["to next define", "po"],
+       '/' => ["pm"],
+       '[' => ["pm"],
+       '^['=> ["mo mode"],
+       ']' => ["pm"],
+       '}' => ["pm"],
+
+       'c' => ["pm"],
+       'd' => ["ci"],
+       'D' => ["co"],
+       '^d'=> ["po"],
        'f' => "gf",  # deprecated
-       'i' => ["next occur$sign{_}renc$sign{_}e line", "ci"],
-       'I' => ["next occur$sign{_}renc$sign{_}e", "co"],
-       '^i'=> ["to occur$sign{_}renc$sign{_}e", "po"],
-       'm' => ["end of funct$sign{_}ion", "pm"],
-       'p' => ["p reind$sign{_}ent$sign{_}ed", "co"],
+       'i' => ["ci"],
+       'I' => ["co"],
+       '^i'=> ["po"],
+       'm' => ["pm"],
+       'p' => ["co"],
        'P' => "[p",
-       's' => ["next missp$sign{_}ell$sign{_}ing", "po ext vim7 new"],
-       'S' => ["next bad word", "po ext vim7 new"],
-       'z' => ["end of open fold", "pm ext vim6 folding"],
+       's' => ["po ext vim7 new"],
+       'S' => ["po ext vim7 new"],
+       'z' => ["pm ext vim6 folding"],
 }, # mode ]
 
 '^w' => {
-       desc => "window commands (ctrl-w)",
        lead => $ascii ? "'w"  : "ŵ",
 
-       '<' => ["width decr$sign{_}ease", "po"],
-       '>' => ["width incr$sign{_}ease", "po"],
-       '^' => ["split, edit alt file", "co"],
-       '_' => ["set height", "po"],
-       '+' => ["height incr$sign{_}ease", "po"],
-       '-' => ["height decr$sign{_}ease", "po"],
-       '=' => ["same height", "po"],
-       '^['=> ["esc", "mo mode"],
-       ']' => ["split, to tag", "po"],
-       '}' => ["pre$sign{_}view tag", "po"],
-       '|' => ["set width", "po"],
-
-       'b' => ["go to bot$sign{_}tom", "po"],
-       'c' => [":close", "po"],
-       '^c'=> ["abort", "mo mode"],
-       'd' => ["split, to def$sign{_}inition", "po"],
-       'f' => ["split, file edit", "co"],
-       'F' => ["^wf, jump to line", "co ext vim7 new"],
-       'g' => ["extra cmds", "me arg mode^wg"],
-       'h' => ["go left", "po"],
-       'H' => ["move far left", "po"],
-       'i' => ["split, to decl of id$sign{_}ent$sign{_}ifier", "po"],
-       'j' => ["go down", "po"],
-       'J' => ["move to bottom", "po"],
-       'k' => ["go up", "po"],
-       'K' => ["move to top", "po"],
-       'l' => ["go right", "po"],
-       'L' => ["move far right", "po"],
-       'n' => ["open new", "co"],
-       'o' => [":only current", "po"],
-       'p' => ["go to prev$sign{_}ious", "po"],
-       'P' => ["go to pre$sign{_}view", "po"],
-       'q' => [":quit current", "co"],
-       'r' => ["rotate down$sign{_}ward$sign{_}s", "po"],
-       'R' => ["rotate up$sign{_}ward$sign{_}s", "po"],
-       's' => ["split horiz$sign{_}ont$sign{_}al$sign{_}ly", "po"],
+       '<' => ["po"],
+       '>' => ["po"],
+       '^' => ["co"],
+       '_' => ["po"],
+       '+' => ["po"],
+       '-' => ["po"],
+       '=' => ["po"],
+       '^['=> ["mo mode"],
+       ']' => ["po"],
+       '}' => ["po"],
+       '|' => ["po"],
+
+       'b' => ["po"],
+       'c' => ["po"],
+       '^c'=> ["mo mode"],
+       'd' => ["po"],
+       'f' => ["co"],
+       'F' => ["co ext vim7 new"],
+       'g' => ["me arg mode^wg"],
+       'h' => ["po"],
+       'H' => ["po"],
+       'i' => ["po"],
+       'j' => ["po"],
+       'J' => ["po"],
+       'k' => ["po"],
+       'K' => ["po"],
+       'l' => ["po"],
+       'L' => ["po"],
+       'n' => ["co"],
+       'o' => ["po"],
+       'p' => ["po"],
+       'P' => ["po"],
+       'q' => ["co"],
+       'r' => ["po"],
+       'R' => ["po"],
+       's' => ["po"],
        'S' => "^ws",
-       't' => ["go to top", "po"],
-       'v' => ["split vert$sign{_}ic$sign{_}al$sign{_}ly", "po"],
-       'w' => ["go to next", "po", "Wrap around"],
-       'W' => ["go above$sign{_}/left", "po"],
-       'x' => ["ex$sign{_}chan$sign{_}ge", "po"],
-       'z' => ["close pre$sign{_}view", "po"],
+       't' => ["po"],
+       'v' => ["po"],
+       'w' => ["po"],
+       'W' => ["po"],
+       'x' => ["po"],
+       'z' => ["po"],
 }, # mode ^w
 
 '^wg' => {
-       desc => "extended window commands (ctrl-w g)",
        lead => $ascii ? "'wg" : "ŵg",
 
-       '^['=> ["esc", "mo mode"],
-       ']' => ["split, :ts$sign{_}elect", "po"],
-       '}' => [":ptj$sign{_}ump to tag", "po"],
-       '^]'=> ["split, :tj$sign{_}ump", "po"],
-       'f' => ["file in tab", "co ext vim7 new"],
-       'F' => ["^wgf, to line$sign{_}nr", "co ext vim7 new"],
+       '^['=> ["mo mode"],
+       ']' => ["po"],
+       '}' => ["po"],
+       '^]'=> ["po"],
+       'f' => ["co ext vim7 new"],
+       'F' => ["co ext vim7 new"],
 }, # mode ^w g
 
 v => {
-       desc => "visual mode",
-
-       '!' => ["external filter", "co"],
-       ':' => ["cmd on range", "mo modec"],
-       '<' => ["un$sign{_}indent", "co"],
-       '=' => ["re$sign{_}ind$sign{_}ent", 'co undo'],
-       '>' => ["ind$sign{_}ent", 'co'],
-       '~' => ["toggle case", "co ext vim6"],
-       '^['=> ["esc", "mo mode"],
-       '^]'=> ["jump to tag", "po"],
+       '!' => ["co"],
+       ':' => ["mo modec"],
+       '<' => ["co"],
+       '=' => ['co undo'],
+       '>' => ['co'],
+       '~' => ["co ext vim6"],
+       '^['=> ["mo mode"],
+       '^]'=> ["po"],
        '^\\'=>'^\\',
 
-       'a' => ["ex$sign{_}tend area", 'me modeva arg ext vim6'],
-       'A' => ["ap$sign{_}pend to block", 'mi modei ext vim6'], # block
-       'c' => ["repl$sign{_}ace area", 'mi modei ext vim6'],
-       'C' => ["repl$sign{_}ace full lines", 'mi modei ext vim6'], # like vS, but blocks are extended until eol
-       '^c'=> ["abort", "mo mode"],
-       'd' => ["delete area", "co ext vim6"],
-       'D' => ["delete lines", "co ext vim6"],
-       'g' => ["extra cmds", "me arg modevg"],
-       '^g'=> ["select mode", "mv"],
-       '^h'=> ["back$sign{_}space", 'co'], # delete in select mode, left otherwise
-       'i' => ["extend inner a$sign{_}r$sign{_}ea", "me modeva arg ext vim6"],
-       'I' => ["insert to block", "mi modei ext vim6"], # block
-       'J' => ["join lines", "co"],
-       'K' => ["help sel$sign{_}ect$sign{_}ion", 'co'],
-       'o' => ["to other corner", "pm"],
-       'O' => ["to other side", "pm"],
-       '^o'=> ["visual once", "mv"], # select
-       'p' => ["repl$sign{_}ace w/ paste", 'co'],
-       'P' => ["repl$sign{_}ace w/ paste", 'co'],
+       'a' => ['me modeva arg ext vim6'],
+       'A' => ['mi modei ext vim6'],
+       'c' => ['mi modei ext vim6'],
+       'C' => ['mi modei ext vim6'],
+       '^c'=> ["mo mode"],
+       'd' => ["co ext vim6"],
+       'D' => ["co ext vim6"],
+       'g' => ["me arg modevg"],
+       '^g'=> ["mv"],
+       '^h'=> ['co'],
+       'i' => ["me modeva arg ext vim6"],
+       'I' => ["mi modei ext vim6"], # block
+       'J' => ["co"],
+       'K' => ['co'],
+       'o' => ["pm"],
+       'O' => ["pm"],
+       '^o'=> ["mv"],
+       'p' => ['co'],
+       'P' => ['co'],
        '^q'=> "^q",
-       'r' => ["fill up w/ ch$sign{_}ar", 'co arg'],
+       'r' => ['co arg'],
        'R' => "vS",  # "might change in future"
        '^s'=> "^s",
        's' => "vc",
-       'S' => ["repl$sign{_}ace lines", 'mi modei ext vim6'],
-       'u' => ["lower$sign{_}case", "co ext vim6"],
-       'U' => ["upper$sign{_}case", "co ext vim6"],
-       'v' => ["char$sign{_}wise", "mv"],
-       'V' => ["line$sign{_}wise", "mv"],
-       '^v'=> ["block$sign{_}wise", "mv ext vim6"],
+       'S' => ['mi modei ext vim6'],
+       'u' => ["co ext vim6"],
+       'U' => ["co ext vim6"],
+       'v' => ["mv"],
+       'V' => ["mv"],
+       '^v'=> ["mv ext vim6"],
        'x' => "vd",
        'X' => "vD",
-       'y' => ["yank area", "co"],
-       'Y' => ["yank lines", "co"],
+       'y' => ["co"],
+       'Y' => ["co"],
 
        map {$_ => $_} qw(
                b B ^b ^d e E ^e f F ^f G h H ^i j ^j k l L m M ^m
@@ -422,40 +412,37 @@ v => {
 }, # mode v
 
 vg => {
-       desc => "extended visual commands (v g)",
        lead => "g",
 
-       '^['=> ["esc", "mv modev"],
-       '?' => ["rot13 encode", "co ext vim6"],
-       'J' => ["join literal$sign{_}ly", 'co ext vim6'],
-       'q' => ["for$sign{_}mat", "co ext vim6"],
+       '^['=> ["mv modev"],
+       '?' => ["co ext vim6"],
+       'J' => ['co ext vim6'],
+       'q' => ["co ext vim6"],
        'v' => 'gv',
-       'w' => ["for$sign{_}mat still", 'co ext vim7 new'],
+       'w' => ['co ext vim7 new'],
 }, # mode v g
 
 va => {
-       desc => 'text object selection (v a/i)',
-
        '(' => 'vab',
        ')' => 'vab',
        '`' => "va'",
-       "'" => ["quoted string", 'pm ext vim7 new'],
+       "'" => ['pm ext vim7 new'],
        '"' => "va'",
-       '<' => ["&lt;&gt; block", 'pm ext vim6'],
+       '<' => ['pm ext vim6'],
        '>' => 'va&lt;',
-       '[' => ["[] block", 'pm ext vim6'],
+       '[' => ['pm ext vim6'],
        '{' => 'vaB',
-       '^['=> ["esc", 'mv modev'],
+       '^['=> ['mv modev'],
        ']' => 'va[',
        '}' => 'vaB',
 
-       'b' => ["() block", 'pm ext vim6'],
-       'B' => ["{} Block", 'pm ext vim6'],
-       'p' => ["para$sign{_}graph", 'pm ext vim6'],
-       's' => ["senten$sign{_}ce", 'pm ext vim6'],
-       't' => ["xml tag block", 'pm ext vim7 new'],
-       'w' => ["word", 'pm ext vim6'],
-       'W' => ['<span style="font-variant:small-caps">word</span>', 'pm ext vim6'],
+       'b' => ['pm ext vim6'],
+       'B' => ['pm ext vim6'],
+       'p' => ['pm ext vim6'],
+       's' => ['pm ext vim6'],
+       't' => ['pm ext vim7 new'],
+       'w' => ['pm ext vim6'],
+       'W' => ['pm ext vim6'],
 }, # mode v a
 
 #c => {
@@ -464,96 +451,92 @@ va => {
 #      '^_' => 'i^_',
 #      '^^' => 'i^^',
 #      '^\\'=>'^\\',
-#      '^a' => ["complete", ""], #todo
-#      '^b' => ["bol", "po"],
+#      '^a' => [""], #todo
+#      '^b' => ["po"],
 #      '^c' => 'i^c',
-#      '^d' => ["complete", ""], #todo
-#      '^e' => ["eol", "po"],
+#      '^d' => [""], #todo
+#      '^e' => ["po"],
 #      '^h' => 'i^h',
-#      '^j' => ["execute cmd", "co"],
+#      '^j' => ["co"],
 #      '^k' => 'i^k',
-#      '^l' => ["complete", ""], #todo
-#      '^n' => ["complete", ""], #todo
-#      '^p' => ["complete", ""], #todo
+#      '^l' => [""], #todo
+#      '^n' => [""], #todo
+#      '^p' => [""], #todo
 #      '^r' => 'i^r', # and then some...
-#           ## ["insert register", "co arg ext vim6"],
+#           ## ["co arg ext vim6"],
 #      '^q' => '^q',
 #      '^u' => 'i^u',
 #      '^v' => 'i^v',
 #      '^w' => 'i^w',
-#      '^y' => ["selec$sign{_}tion to clip$sign{_}b$sign{_}oard", "co"],
+#      '^y' => ["co"],
 #}, # mode c
 
 i => {
-       desc => "insert mode",
-
-       '^@' => ["last insert", "co"],
-       '^^' => ["toggle :lmap usag$sign{_}e", "co ext vim6"],
-       '^[' => ["esc", "mo mode"],
-       '^]' => ["abbrev$sign{_}iate", "co ext vim6"],
-       '^_' => ["toggle lang$sign{_}uage", "co ext vim6"],
+       '^@' => ["co"],
+       '^^' => ["co ext vim6"],
+       '^[' => ["mo mode"],
+       '^]' => ["co ext vim6"],
+       '^_' => ["co ext vim6"],
        '^\\'=>'^\\',
 
-       '^a' => ["insert prev$sign{_}ious", "co ext vim6"],
-       '^b' => ["former i^_", "no ext vim6"],
-       '^c' => ["abort, no abbr", "mo mode"],
-       '^d' => ["un$sign{_}ind$sign{_}ent", 'co'],
-       '^e' => ["ins char below", "co ext vim6"],
-       '^f' => ["set indent$sign{_}ation", 'co'],
-       '^g' => ["extra cmds", "me modei^g arg"],
-       '^h' => ["back$sign{_}space", "co"],
-       '^i' => ["tab", "co"],
-       '^j' => ["enter", "co"],
-       '^k' => ["di$sign{_}graph", 'co arg arg ext vim6 linkdigraphs', "Key code"],
-       '^l' => ["<em>im</em> leave ins mode", "mo mode ext vim6"],  # insertmode only
-       '^m' => ["enter", "co"],
-       '^n' => ["find next keyword", "pm ext vim6"],
-       '^o' => ["exec$sign{_}ute cmd", 'co'],
-       '^p' => ["find prev keyword", "pm ext vim6"],
+       '^a' => ["co ext vim6"],
+       '^b' => ["no ext vim6"],
+       '^c' => ["mo mode"],
+       '^d' => ['co'],
+       '^e' => ["co ext vim6"],
+       '^f' => ['co'],
+       '^g' => ["me modei^g arg"],
+       '^h' => ["co"],
+       '^i' => ["co"],
+       '^j' => ["co"],
+       '^k' => ['co arg arg ext vim6 linkdigraphs'],
+       '^l' => ["mo mode ext vim6"],  # insertmode only
+       '^m' => ["co"],
+       '^n' => ["pm ext vim6"],
+       '^o' => ['co'],
+       '^p' => ["pm ext vim6"],
        '^q' => "^q",  # or i^v
-       '^r' => ["insert reg$sign{_}ister", 'co arg ext vim6'],
+       '^r' => ['co arg ext vim6'],
        '^s' => "^s",
-       '^t' => ["indent", "co"],
-       '^u' => ["delete line", "co"],
-       '^v' => ["literal or ch$sign{_}ar$sign{_}cod$sign{_}e", 'co linkcharset', "Verbatim or by Value"],
-       '^w' => ["delete word back", "co"],
-       '^x' => ["ex$sign{_}pand mode", 'me arg modei^x ext vim6'],
-       '^y' => ["ins char above", "co ext vim6"],
-       '^z' => [":sus$sign{_}pend in <em>im</em>", "ci ext vim6"],  # insertmode only
+       '^t' => ["co"],
+       '^u' => ["co"],
+       '^v' => ['co linkcharset'],
+       '^w' => ["co"],
+       '^x' => ['me arg modei^x ext vim6'],
+       '^y' => ["co ext vim6"],
+       '^z' => ["ci ext vim6"],  # insertmode only
 }, # modei
 
 'i^g' => {
-       desc => "extended insert commands (i ctrl-g)",
        lead => $ascii ? "'g"  : "ĝ",
 
-       'k' => ["$sign{up} start col$sign{_}umn", 'pm'],
-       'j' => ["$sign{down} start col$sign{_}umn", 'pm'],
-       'u' => ["break undo seq$sign{_}uence", 'co'],
+       'k' => ['pm'],
+       'j' => ['pm'],
+       'u' => ['co'],
        # other keys (even esc) are not recognized
 }, # mode i ^g
 
 'i^x' => {
-       desc => "insert completion commands (i ctrl-x)",
        lead => $ascii ? "'x"  : "x̂",
 
-       '^[' => ["esc", "mo mode"], # yes, it really leaves insert mode
-       '^]' => ["tag comp$sign{_}l$sign{_}et$sign{_}e", 'co'],
-       '^d' => ["def$sign{_}ine compl$sign{_}et$sign{_}e", 'co'],
-       '^e' => ["window up", "po"],
-       '^f' => ["file comp$sign{_}l$sign{_}et$sign{_}e", 'co'],
-       '^i' => ["ident comp$sign{_}l$sign{_}et$sign{_}e", 'co'],
-       '^k' => ["dict comp$sign{_}l$sign{_}et$sign{_}e", 'co'],
-       '^l' => ["line comp$sign{_}l$sign{_}et$sign{_}e", 'co'],
-       '^n' => ["next comp$sign{_}l$sign{_}et$sign{_}e", 'co'],
-       '^o' => ["omni comp$sign{_}l$sign{_}et$sign{_}e", 'co ext vim7 new'],
-       '^p' => ["prev comp$sign{_}l$sign{_}ete", 'co'],
-       '^s' => ["spell sugg$sign{_}est", 'co'],
+       '^[' => ["mo mode"], # yes, it really leaves insert mode
+       '^]' => ['co'],
+       '^d' => ['co'],
+       '^e' => ["po"],
+       '^f' => ['co'],
+       '^i' => ['co'],
+       '^k' => ['co'],
+       '^l' => ['co'],
+       '^n' => ['co'],
+       '^o' => ['co ext vim7 new'],
+       '^p' => ['co'],
+       '^s' => ['co'],
         's' => 'i^x^s',
-       '^t' => ["thes$sign{_}aur$sign{_}us compl$sign{_}et$sign{_}e", 'co'],
-       '^u' => ["cus$sign{_}tom comp$sign{_}l$sign{_}et$sign{_}e", 'co ext vim7 new'],
-       '^v' => ["ex cmd compl$sign{_}et$sign{_}e", 'co'],
-       '^y' => ["window down", "po"],
+       '^t' => ['co'],
+       '^u' => ['co ext vim7 new'],
+       '^v' => ['co'],
+       '^y' => ["po"],
 }, # mode i ^x
 
 # XXX ex mode if you want to go completely wild
-
+}
diff --git a/vi.plp b/vi.plp
index 67326cb..f5820f1 100644 (file)
--- a/vi.plp
+++ b/vi.plp
@@ -2,7 +2,7 @@
 
 Html({
        title => 'vi cheat sheet',
-       version => 'v1.2',
+       version => 'v1.3',
        description => [
                "Interactive cheat sheet for vi text editors, notably Vim,",
                "describing each key in various modes.",
@@ -30,8 +30,10 @@ Html({
 </li>
 
 <:
-use Shiar_Sheet::Keyboard;
-my $keys = Shiar_Sheet::Keyboard->new({do 'vi.inc.pl'});
+use Shiar_Sheet::Keyboard 2;
+my $info = do 'vi.eng.inc.pl' or die $@;
+$info->{def} = do 'vi.inc.pl';
+my $keys = Shiar_Sheet::Keyboard->new($info);
 $keys->map($get{map}) or undef $get{map};
 $keys->print_rows($get{rows});
 :>
diff --git a/vimperator.eng.inc.pl b/vimperator.eng.inc.pl
new file mode 100644 (file)
index 0000000..70fde80
--- /dev/null
@@ -0,0 +1,139 @@
+use utf8;
+{
+
+key => {
+       '~' => ["open home$sign{_}dir"],
+       '@' => ["play macro"],
+       '^' => ["left of page"],
+       '$' => ["right of page"],
+       '#' => ["rev. find word"],
+       '*' => ["find word"],
+       '^^'=> ["last tab"],
+       '?' => ["find rev."],
+       '/' => ["find"],
+       '[' => ["focus forw$sign{_}ard"],
+       ']' => ["focus back"],
+       ':' => ["comm$sign{_}and line mode"],
+       ';' => ["extend$sign{_}ed hint$sign{_}s mode"],
+       "'" => ["jump to mark"],
+       '|' => ["toggle source"],
+
+       'a' => ["add bookm$sign{_}ark"],
+       'A' => ["toggle bookm$sign{_}ark$sign{_}ed"],
+       '^a'=> ["incr$sign{_}em$sign{_}ent url nr"],
+       'b' => ["to buffer"],
+       'B' => ["list buffers"],
+       '^b'=> ["page up"],
+       '^c'=> ["stop loading"],
+       '^d'=> ["scroll down"],
+       'd' => ["close tab"],
+       'D' => ["close tab left$sign{_}ward$sign{_}s"],
+       'i' => ["caret mode"],
+       'f' => ["quick$sign{_}hint mode"],
+       'F' => ["f in tab"],
+       '^f'=> ["page down"],
+       'g' => ["extra cmds"],
+       'G' => ["last/% line"],
+       '^g'=> ["file name"],
+       'h' => [$sign{left}],
+       'H' => ["page back"],
+       'j' => [$sign{down}],
+       'k' => [$sign{up}],
+       'l' => [$sign{right}],
+       'L' => ["page forw$sign{_}ard"],
+       'M' => ["mark url"],
+       'm' => ["mark line"],
+       'n' => ["find next"],
+       'N' => ["find prev$sign{_}ious"],
+       '^n'=> ["next tab"],
+       'o' => ["open"],
+       'O' => ["alter url"],
+       'p' => ["open pasted url"],
+       'P' => ["p in tab"],
+       'q' => ["record macro"],
+       'r' => ["reload page"],
+       'R' => ["reload uncach$sign{_}e$sign{_}d"],
+       't' => ["tab open new"],
+       'T' => ["tab open curr$sign{_}ent"],
+       '^v'=> ["pass single"],
+       '^u'=> ["scroll up"],
+       'u' => ["restore closed tab"],
+       '^x'=> ["decr$sign{_}em$sign{_}ent url nr"],
+       'y' => ["copy url"],
+       'Y' => ["copy select$sign{_}ion"],
+       'z' => ["zoom"],
+       'Z' => ["quit"],
+       '^z'=> ["pass throu$sign{_}gh"],
+
+       'g0' => ["first tab"],
+       'g$' => ["last tab"],
+
+       'gb' => ["repeat buffer cmd"],
+       'gB' => ["reverse gb"],
+       'gf' => ["view source"],
+       'gF' => ["source extern$sign{_}al"],
+       'g^g'=> ["file details"],
+       'gg' => ["first line"],
+       'gh' => ["open home$sign{_}page"],
+       'gH' => ["tab with home$sign{_}page"],
+       'gi' => ["last input field"],
+       'gn' => ["tabopen url mark", 'Go in New tab'],
+       'go' => ["open url mark"],
+       'gP' => ["$sign{alias}P inactive"],
+       'gt' => ["switch tab"],
+       'gT' => ["tab back"],
+       'gu' => ["parent dir$sign{_}ectory"],
+       'gU' => ["site root"],
+
+       ';;' => ["focus"],
+       ';?' => ["element details"],
+       ';a' => ["save prompt"],
+       ';b' => ["open bg tab"],
+       ';c' => ["context menu"],
+       ';f' => ["frame focus"],
+       ';F' => ["multiple bg tabs"],
+       ';i' => ["image"],
+       ';I' => ["image in tab"],
+       ';o' => ["open"],
+       ';O' => ["open prompt"],
+       ';s' => ["save"],
+       ';t' => ["open in tab"],
+       ';T' => ["tab prompt"],
+       ';v' => ["view source"],
+       ';w' => ["open in wind$sign{_}ow"],
+       ';W' => ["wind$sign{_}ow prompt"],
+       ';y' => ["copy url"],
+       ';Y' => ["copy text"],
+
+       ']f' => ["next frame$sign{_}set"],
+       ']]' => ["open <q>next</q>"],
+
+       '[f' => ["previous frame$sign{_}set"],
+       '[[' => ["open <q>prev</q>"],
+
+       'zi' => ["en$sign{_}large text", 'Zoom In'],
+       'zm' => ["en$sign{_}large more", 'Zoom More'],
+       'zo' => ["shrink text", 'Zoom Out'],
+       'zr' => ["tinier text", 'Zoom Reduce'],
+       'zz' => ["reset text size", 'Zoom Zero'],
+       'zI' => ["zoom in"],
+       'zM' => ["zoom more"],
+       'zO' => ["zoom out"],
+       'zR' => ["zoom out more", 'Zoom Reduce'],
+       'zZ' => ["zoom reset", 'Zoom Zero'],
+
+       'ZQ' => ["quit no save"],
+       'ZZ' => ["quit save ses$sign{_}s$sign{_}ion"],
+},
+
+mode => {
+       ''  => 'normal mode',
+       'g' => 'extended commands (g)',
+       ';' => 'extended hints (;)',
+       ']' => '(])',
+       '[' => '([)',
+       'z' => 'zoom commands (z)',
+       'Z' => 'quit commands (Z)',
+},
+
+}
index 07f7a32..c696edd 100644 (file)
 use utf8;
+{
 
 '' => {
-       desc => 'normal mode',
-
-       '~' => ["open home$sign{_}dir", 'cp'],
-       '@' => ["play macro", 'mo arg'],
-       '^' => ["left of page", 'pm'],
+       '~' => ['cp'],
+       '@' => ['mo arg'],
+       '^' => ['pm'],
        '0' => '^',
-       '$' => ["right of page", 'pm'],
-       '#' => ["rev. find word", 'pm'],
-       '*' => ["find word", 'pm'],
+       '$' => ['pm'],
+       '#' => ['pm'],
+       '*' => ['pm'],
        '+' => 'zi',
        '-' => 'zo',
-       '^^'=> ["last tab", 'po'],
-       '?' => ["find rev.", 'pm args modec'],
-       '/' => ["find", 'pm args modec'],
-       '[' => ["focus forw$sign{_}ard", 'me arg mode['],
-       ']' => ["focus back", 'me arg mode]'],
-       ':' => ["comm$sign{_}and line mode", 'mo args'],
-       ';' => ["extend$sign{_}ed hint$sign{_}s mode", 'me arg args mode;'],
-       "'" => ["jump to mark", 'pm'],
+       '^^'=> ['po'],
+       '?' => ['pm args modec'],
+       '/' => ['pm args modec'],
+       '[' => ['me arg mode['],
+       ']' => ['me arg mode]'],
+       ':' => ['mo args'],
+       ';' => ['me arg args mode;'],
+       "'" => ['pm'],
        '`' => "'",
-       '|' => ["toggle source", 'cp v2 v2.2'],
-
-       'a' => ["add bookm$sign{_}ark", 'mo args'],
-       'A' => ["toggle bookm$sign{_}ark$sign{_}ed", 'mo'],
-       '^a'=> ["incr$sign{_}em$sign{_}ent url nr", 'cp'],
-       'b' => ["to buffer", 'po args'],
-       'B' => ["list buffers", 'ci'],
-       '^b'=> ["page up", 'pm'],
-       '^c'=> ["stop loading", 'co'],
-       '^d'=> ["scroll down", 'pm'],
-       'd' => ["close tab", 'co'],
-       'D' => ["close tab left$sign{_}ward$sign{_}s", 'co'],
-       'i' => ["caret mode", 'mv'],
+       '|' => ['cp v2 v2.2'],
+
+       'a' => ['mo args'],
+       'A' => ['mo'],
+       '^a'=> ['cp'],
+       'b' => ['po args'],
+       'B' => ['ci'],
+       '^b'=> ['pm'],
+       '^c'=> ['co'],
+       '^d'=> ['pm'],
+       'd' => ['co'],
+       'D' => ['co'],
+       'i' => ['mv'],
        '^i'=> 'L',
        '^e'=> 'j',
-       'f' => ["quick$sign{_}hint mode", 'cp args'],
-       'F' => ["f in tab", 'mi args'],
-       '^f'=> ["page down", 'pm'], # spacebar
-       'g' => ["extra cmds", 'me modeg arg'],
-       'G' => ["last/% line", 'pm'],
-       '^g'=> ["file name", 'ci'],
-       'h' => [$sign{left}, 'pm'],
-       'H' => ["page back", 'cp'],
-       'j' => [$sign{down}, 'pm'],
-       'k' => [$sign{up}, 'pm'],
-       'l' => [$sign{right}, 'pm'],
-       'L' => ["page forw$sign{_}ard", 'cp'],
-       'M' => ["mark url", 'mo arg'],
-       'm' => ["mark line", 'mo arg'],
-       'n' => ["find next", 'pm'],
-       'N' => ["find prev$sign{_}ious", 'pm'],
-       '^n'=> ["next tab", 'po'],
-       'o' => ["open", 'cp'],
-       'O' => ["alter url", 'cp'],
+       'f' => ['cp args'],
+       'F' => ['mi args'],
+       '^f'=> ['pm'], # spacebar
+       'g' => ['me modeg arg'],
+       'G' => ['pm'],
+       '^g'=> ['ci'],
+       'h' => ['pm'],
+       'H' => ['cp'],
+       'j' => ['pm'],
+       'k' => ['pm'],
+       'l' => ['pm'],
+       'L' => ['cp'],
+       'M' => ['mo arg'],
+       'm' => ['mo arg'],
+       'n' => ['pm'],
+       'N' => ['pm'],
+       '^n'=> ['po'],
+       'o' => ['cp'],
+       'O' => ['cp'],
        '^o'=> 'H',
-       'p' => ["open pasted url", 'cp'],
-       'P' => ["p in tab", 'mi'],
+       'p' => ['cp'],
+       'P' => ['mi'],
        '^p'=> 'gT',
-       'q' => ["record macro", 'mv arg'],
-       'r' => ["reload page", 'co'],
-       'R' => ["reload uncach$sign{_}e$sign{_}d", 'cp'],
-       't' => ["tab open new", 'mi'],
-       'T' => ["tab open curr$sign{_}ent", 'mi'],
-       '^v'=> ["pass single", 'co arg'],
-       '^u'=> ["scroll up", 'pm'],
-       'u' => ["restore closed tab", 'mi'],
-       '^x'=> ["decr$sign{_}em$sign{_}ent url nr", 'cp'],
-       'y' => ["copy url", 'mo'],
-       'Y' => ["copy select$sign{_}ion", 'mo'],
+       'q' => ['mv arg'],
+       'r' => ['co'],
+       'R' => ['cp'],
+       't' => ['mi'],
+       'T' => ['mi'],
+       '^v'=> ['co arg'],
+       '^u'=> ['pm'],
+       'u' => ['mi'],
+       '^x'=> ['cp'],
+       'y' => ['mo'],
+       'Y' => ['mo'],
        '^y'=> 'k',
-       'z' => ["zoom", 'ci modez arg'],
-       'Z' => ["quit", 'me modeZ arg'],
-       '^z'=> ["pass throu$sign{_}gh", 'mv'],
+       'z' => ['ci modez arg'],
+       'Z' => ['me modeZ arg'],
+       '^z'=> ['mv'],
 }, # normal mode
 
 g => {
-       desc => 'extended commands (g)',
        lead => 'g',
 
-       '0' => ["first tab", 'po'],
-       '$' => ["last tab", 'po'],
+       '0' => ['po'],
+       '$' => ['po'],
        '^' => 'g0',
 
-       'b' => ["repeat buffer cmd", 'po'],
-       'B' => ["reverse gb", 'po'],
-       'f' => ["view source", 'cp'],
-       'F' => ["source extern$sign{_}al", 'mo'],
-       '^g'=> ["file details", 'ci'],
-       'g' => ["first line", 'pm'],
-       'h' => ["open home$sign{_}page", 'cp'],
-       'H' => ["tab with home$sign{_}page", 'mi'],
-       'i' => ["last input field", 'pm'],
-       'n' => ["tabopen url mark", 'mi arg', 'Go in New tab'],
-       'o' => ["open url mark", 'cp arg'],
-       'P' => ["$sign{alias}P inactive", 'mi'],
-       't' => ["switch tab", 'po'],
-       'T' => ["tab back", 'po'],
-       'u' => ["parent dir$sign{_}ectory", 'cp'],
-       'U' => ["site root", 'cp'],
+       'b' => ['po'],
+       'B' => ['po'],
+       'f' => ['cp'],
+       'F' => ['mo'],
+       '^g'=> ['ci'],
+       'g' => ['pm'],
+       'h' => ['cp'],
+       'H' => ['mi'],
+       'i' => ['pm'],
+       'n' => ['mi arg'],
+       'o' => ['cp arg'],
+       'P' => ['mi'],
+       't' => ['po'],
+       'T' => ['po'],
+       'u' => ['cp'],
+       'U' => ['cp'],
 }, # mode g
 
 ';' => {
-       desc => 'extended hints (;)',
        lead => ';',
 
-       ';' => ["focus", 'pm'],
-       '?' => ["element details", 'ci'],
-       'a' => ["save prompt", 'mo args'],
-       'b' => ["open bg tab", 'mi v2'],
-       'c' => ["context menu", 'v2 v2.2'],
-       'f' => ["frame focus", 'pm v2'], # previously ';o'
-       'F' => ["multiple bg tabs", 'mi v2'], # previously ';t'
-       'i' => ["image", 'cp v2 v2.2'],
-       'I' => ["image in tab", 'mi v2 v2.2'],
-       'o' => ["open", 'cp'],
-       'O' => ["open prompt", 'cp args'],
-       's' => ["save", 'mo'],
-       't' => ["open in tab", 'mi'],
-       'T' => ["tab prompt", 'mi args'],
-       'v' => ["view source", 'cp'],
-       'w' => ["open in wind$sign{_}ow", 'mi'],
-       'W' => ["wind$sign{_}ow prompt", 'mi args'],
-       'y' => ["copy url", 'mo'],
-       'Y' => ["copy text", 'mo'],
+       ';' => ['pm'],
+       '?' => ['ci'],
+       'a' => ['mo args'],
+       'b' => ['mi v2'],
+       'c' => ['v2 v2.2'],
+       'f' => ['pm v2'], # previously ';o'
+       'F' => ['mi v2'], # previously ';t'
+       'i' => ['cp v2 v2.2'],
+       'I' => ['mi v2 v2.2'],
+       'o' => ['cp'],
+       'O' => ['cp args'],
+       's' => ['mo'],
+       't' => ['mi'],
+       'T' => ['mi args'],
+       'v' => ['cp'],
+       'w' => ['mi'],
+       'W' => ['mi args'],
+       'y' => ['mo'],
+       'Y' => ['mo'],
 }, # mode ;
+
 ']' => {
-       desc => '(])',
        lead => ']',
 
-       'f' => ["next frame$sign{_}set", 'pm'],
-       ']' => ["open <q>next</q>", 'cp'],
+       'f' => ['pm'],
+       ']' => ['cp'],
 }, # mode ]
 
 '[' => {
-       desc => '([)',
        lead => '[',
 
-       'f' => ["previous frame$sign{_}set", 'pm'],
-       '[' => ["open <q>prev</q>", 'cp'],
+       'f' => ['pm'],
+       '[' => ['cp'],
 }, # mode [
 
 z => {
-       desc => 'zoom commands (z)',
        lead => 'z',
 
-       'i' => ["en$sign{_}large text", 'ci', 'Zoom In'],
-       'm' => ["en$sign{_}large more", 'ci', 'Zoom More'],
-       'o' => ["shrink text", 'ci', 'Zoom Out'],
-       'r' => ["tinier text", 'ci', 'Zoom Reduce'],
-       'z' => ["reset text size", 'ci', 'Zoom Zero'],
-       'I' => ["zoom in", 'ci'],
-       'M' => ["zoom more", 'ci'],
-       'O' => ["zoom out", 'ci'],
-       'R' => ["zoom out more", 'ci', 'Zoom Reduce'],
-       'Z' => ["zoom reset", 'ci', 'Zoom Zero'],
+       'i' => ['ci'],
+       'm' => ['ci'],
+       'o' => ['ci'],
+       'r' => ['ci'],
+       'z' => ['ci'],
+       'I' => ['ci'],
+       'M' => ['ci'],
+       'O' => ['ci'],
+       'R' => ['ci'],
+       'Z' => ['ci'],
 }, # mode z
 
 Z => {
-       desc => 'quit commands (Z)',
        lead => 'Z',
 
-       'Q' => ["quit no save", 'mo'],
-       'Z' => ["quit save ses$sign{_}s$sign{_}ion", 'mo'],
+       'Q' => ['mo'],
+       'Z' => ['mo'],
 }, # mode Z
 
+}
index 26d58f5..b54417d 100644 (file)
@@ -2,7 +2,7 @@
 
 Html({
        title => 'vimperator cheat sheet',
-       version => 'v1.1',
+       version => 'v1.2',
        description => [
                "Interactive cheat sheet for the Vimperator Firefox extension,",
                "describing the function of each key.",
@@ -31,8 +31,10 @@ Html({
 </li>
 
 <:
-use Shiar_Sheet::Keyboard;
-my $keys = Shiar_Sheet::Keyboard->new({do 'vimperator.inc.pl'});
+use Shiar_Sheet::Keyboard 2;
+my $info = do 'vimperator.eng.inc.pl' or die $@;
+$info->{def} = do 'vimperator.inc.pl';
+my $keys = Shiar_Sheet::Keyboard->new($info);
 $keys->map($get{map}) or undef $get{map};
 $keys->print_rows($get{rows});
 :>