Separate key functions (classes) from (translatable) descriptions.
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);
);
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 {
$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
$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))
);
# 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];
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;
' class="%s"', 'mode mode' . escapeclass($basemode)
);
printf("<h3>%s<small>: %s</small></h3>\n", # XXX insert 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
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";
<:
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(Å ı Ç ð ´ ̉ ˝ ̣ ˆ ½ Þ ¾ ˜ Ø ∏ Œ ‰ / ˇ ¨ ◊ „ ˛ ¼ ¸)],
];
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]);
--- /dev/null
+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',
+},
+
+}
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',
},
#},
':' => {
- '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'],
},
+}
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.",
<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>
</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]);
:>
--- /dev/null
+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",
+},
+
+}
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'],
},
+}
Html({
title => 'mplayer cheat sheet',
- version => 'v1.0',
+ version => 'v1.1',
description => [
"Keyboard cheat sheet for the MPlayer media player,",
"overviewing the default controls."
</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]);
:>
--- /dev/null
+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 (/~)',
+},
+
+}
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
+}
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.",
</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});
:>
--- /dev/null
+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',
+},
+
+}
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'],
},
+}
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.",
</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]);
:>
--- /dev/null
+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',
+},
+
+}
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'],
'+~' => '+&', # 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',
},
+}
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.",
</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]);
:>
--- /dev/null
+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',
+},
+
+}
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',
},
+}
</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]);
:>
--- /dev/null
+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<' => ["<> 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)",
+},
+
+}
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
}, # 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'",
- '<' => ["<> block", 'pm ext vim6'],
+ '<' => ['pm ext vim6'],
'>' => 'va<',
- '[' => ["[] 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 => {
# '^_' => '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
-
+}
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.",
</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});
:>
--- /dev/null
+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)',
+},
+
+}
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
+}
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.",
</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});
:>