From c4ca0bd3e94a7978772dadaa3b941ecc84741407 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Sun, 7 Apr 2024 17:29:40 +0200 Subject: [PATCH] keyboard: recombine translations in include syntax MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Append {key} descriptions to {def} classes to prevent partial declarations and simplify maintenance. Distinct translations did not materialise as expected, and can still be implemented in another way. Undoes the painstaking separation in commit v1.3-0-g2034c72e12 (2010-06-18) [overhaul keyboard module include syntax], already rejoined in commit v1.10-46-g4c43bcbed6 (2017-07-17) [move key definitions into translation includes], now basically completely reverted by some dumb labour helped by this vim macro: :%s/=> '=\([^']\+\)',/=> \\'\1',/ " replace aliases :let @a="^mo\"eyi'[{^\"uyi'gg/\\V'\u\e'\4lf \"iy$dd'o4lf a[\ef,\"ipi]\ej" " └(1)└(2) └(3) └(4) └──────────────┘ └(5) └(6) └─────────┘ (1): Original position before {key} declaration (2): e = single-quoted character (3): u = key character(s) from containing hash (lead) (4): find topmost lead+key match for corresponding {def} (5): i = definition value, then delete definition line (6): wrap Original key in array and add def value --- Shiar_Sheet/Keyboard.pm | 42 +- Shiar_Sheet/KeyboardChars.pm | 8 +- keyboard.plp | 2 +- keyboard/altgr/apl.eng.inc.pl | 2 +- keyboard/altgr/emojiworks.eng.inc.pl | 2 +- keyboard/altgr/index.inc.pl | 4 +- keyboard/altgr/index.inc.plp | 5 +- keyboard/altgr/msx-graph.eng.inc.pl | 6 +- keyboard/altgr/msx.eng.inc.pl | 2 +- keyboard/altgr/spacecadet.eng.inc.pl | 2 +- keyboard/altgr/symbolics.eng.inc.pl | 4 +- keyboard/altgr/unigraph.eng.inc.pl | 4 +- keyboard/altgr/windows.eng.inc.pl | 2 +- keyboard/altgr/zoo.eng.inc.pl | 2 +- keyboard/less.eng.inc.pl | 369 ++---- keyboard/mplayer.eng.inc.pl | 150 +-- keyboard/mpv.eng.inc.pl | 80 +- keyboard/mutt.eng.inc.pl | 634 ++++------ keyboard/nethack.eng.inc.pl | 425 +++---- keyboard/readline.eng.inc.pl | 254 ++-- keyboard/screen.eng.inc.pl | 216 ++-- keyboard/vi.eng.inc.pl | 1728 +++++++++----------------- keyboard/vimperator.eng.inc.pl | 508 +++----- keys.inc.pl | 3 + 24 files changed, 1565 insertions(+), 2889 deletions(-) diff --git a/Shiar_Sheet/Keyboard.pm b/Shiar_Sheet/Keyboard.pm index c7e455b..47c1cf0 100644 --- a/Shiar_Sheet/Keyboard.pm +++ b/Shiar_Sheet/Keyboard.pm @@ -6,7 +6,7 @@ use warnings; no warnings 'uninitialized'; # save some useless checks for more legible code use Carp; -our $VERSION = '2.10'; +our $VERSION = '3.00'; my @casedesc = (undef, qw/shift ctrl meta/, 'shift meta'); my @rowdesc = qw(numeric top home bottom); @@ -80,12 +80,13 @@ sub keyunalias { my $self = shift; my ($key, $ancestry) = @_; - $key =~ s/(\S*?)(\+?\^?\S)($|\s.*)/$2/; + $key =~ s/(\S*?)(\+?\^?\S$)/$2/; my $mode = $1; my $keyinfo = $self->{def}->{$mode}->{$key}; return unless defined $keyinfo; - $keyinfo =~ s/^=// or return $keyinfo; + return $keyinfo unless ref $keyinfo eq 'SCALAR'; + $keyinfo = ${$keyinfo}; return '' if $ancestry->{$key}++; # endless loop failsafe return $self->keyunalias($keyinfo, $ancestry); } @@ -105,20 +106,28 @@ sub print_letter { sub print_key { my $self = shift; - my ($mode, $key, $flags) = @_; - my ($desc, $mnem); + my ($mode, $key, $def) = @_; - if (not defined $flags) { - $flags = $key eq '^0' ? 'ni' : 'no'; + if (not defined $def) { + $def = [$key eq '^0' ? 'ni' : 'no']; } - elsif ($flags =~ s/^=(\S+)\s?//) { # alias - my $ref = $1; - $desc = $self->{sign}->{alias} . ($ref eq "\e" ? 'esc' : $ref); - $flags = join ' ', $self->keyunalias($ref), 'alias', $flags; + elsif (ref $def eq 'SCALAR') { + $def = [undef, $def]; } - if (my $txt = $self->{key}->{$mode.$key}) { - ($desc, $mnem) = split /\n/, $self->escapedesc($txt); + if (ref $def ne 'ARRAY') { + carp "print_key: invalid definition for $mode$key: $def"; + return; } + my ($flags, $txt) = @{$def}; + if (ref $txt eq 'SCALAR') { + my $ref = ${$txt}; + $def = $self->keyunalias($ref); + $ref = 'esc' if $ref eq "\e"; + $flags //= $def->[0] if ref $def eq 'ARRAY'; + $txt = $self->{sign}->{alias} . $ref; + $flags .= ' alias'; + } + my ($desc, $mnem) = split /\n/, $self->escapedesc($txt); my $keytxt = $self->print_letter($key, $mode); $keytxt .= "$self->{sign}->{motion}" if $flags =~ s/ ?\bargm\b//; # motion argument @@ -226,13 +235,10 @@ Shiar_Sheet::Keyboard - Output HTML for key sheets my $keys = Shiar_Sheet::Keyboard({ def => { 'lead' => { - 'A' => '=a', # alias - 'a' => 'classes', + 'A' => \'a', # alias + 'a' => ['classes', 'description', 'hover comments'], }, }, - key => { - 'leada' => ['description', 'comments (on hover)'], - }, mode => { 'lead' => 'mode description', }, diff --git a/Shiar_Sheet/KeyboardChars.pm b/Shiar_Sheet/KeyboardChars.pm index 5301185..7077d3c 100644 --- a/Shiar_Sheet/KeyboardChars.pm +++ b/Shiar_Sheet/KeyboardChars.pm @@ -42,10 +42,10 @@ sub kbmodes ($modes) { ); for my $lead (keys %{$modes}) { if ($lead ne '') { - $info{def}->{''}->{$lead} = "g1 mode$lead"; + $info{def}->{''}->{$lead}[0] = "g1 mode$lead"; $g{g1} = 1; $info{mode}->{$lead} //= "mode $lead"; - $info{def}->{$lead}{$lead} = 'g1 mode'; # back + $info{def}->{$lead}{$lead} = ['g1 mode']; # back } while (my ($k, $v) = each %{ $modes->{$lead} }) { my @class; @@ -55,7 +55,6 @@ sub kbmodes ($modes) { @class = 'ext'; } my ($glyph, $title) = $uc->glyph_html($v); - $info{key}{$lead.$k} = join "\n", $glyph, $title; my $c = $k =~ s/\A[+^](?=.)//r; # trim modifier indicator unshift @class, ( @@ -69,7 +68,8 @@ sub kbmodes ($modes) { : 'g6' ); $g{$_} = 1 for grep { $_ ne 'no' } @class; - $info{def}{$lead}{$k} //= join ' ', @class; + $info{def}{$lead}{$k} //= [join ' ', @class]; + $info{def}{$lead}{$k}[1] = join "\n", $glyph, $title; } } $info{flag} = {%{{ diff --git a/keyboard.plp b/keyboard.plp index fa2aaf2..3a40a4d 100644 --- a/keyboard.plp +++ b/keyboard.plp @@ -48,7 +48,7 @@ say "

$_

" for $info->{intro} // (); say "

", $info->{mode}->{''}, " (default)

" if $info->{mode} and %{ $info->{mode} } > 1; -use Shiar_Sheet::Keyboard 2.08; +use Shiar_Sheet::Keyboard 3.00; my $keys = Shiar_Sheet::Keyboard->new($info); $keys->map($get{map}) or undef $get{map}; $keys->print_rows($get{rows} || $info->{moderows}, $info->{rows}); diff --git a/keyboard/altgr/apl.eng.inc.pl b/keyboard/altgr/apl.eng.inc.pl index c796cb3..d7fbbc7 100644 --- a/keyboard/altgr/apl.eng.inc.pl +++ b/keyboard/altgr/apl.eng.inc.pl @@ -93,7 +93,7 @@ my %rows = ( ); my $groups = kbchars(\%rows); -$groups->{def}{''}{$_} .= ' ext' for keys %dyalogx; +$groups->{def}{''}{$_}[0] .= ' ext' for keys %dyalogx; $groups->{flag}{ext} = ['extended', 'optional operators not available in all variants']; +{ diff --git a/keyboard/altgr/emojiworks.eng.inc.pl b/keyboard/altgr/emojiworks.eng.inc.pl index dca101c..33c35d1 100644 --- a/keyboard/altgr/emojiworks.eng.inc.pl +++ b/keyboard/altgr/emojiworks.eng.inc.pl @@ -59,7 +59,7 @@ my $groups = kbchars(\%rows); while (my ($k, $c) = each %rows) { # override letter-based classes by unicode versions - $groups->{def}{''}{$k} = ( + $groups->{def}{''}{$k}[0] = ( $c =~ /\p{General_Category=Modifier_Symbol}/ ? 'g9' : $c =~ /\p{In=1.1}/ ? 'g2' : $c =~ /\p{In=5.2}/ ? 'g3' : diff --git a/keyboard/altgr/index.inc.pl b/keyboard/altgr/index.inc.pl index a9030e0..30783f7 100644 --- a/keyboard/altgr/index.inc.pl +++ b/keyboard/altgr/index.inc.pl @@ -17,8 +17,8 @@ for my $name (map {@{$_}} values %cat) { $keys->{mode} //= {'' => undef}; for my $mode (keys %{ $keys->{mode} }) { - $row{key}{$_} = $keys->{key}{$_} for $mode || (); - $row{inventory}{$mode}{$_}++ for grep { /^g[2-9]/ } map { s/ (?!ext).*//r } + $row{def}{''}{$_} = $keys->{def}{''}{$_} for $mode || (); + $row{inventory}{$mode}{$_}++ for grep { /^g[2-9]/ } map { s/ (?!ext).*//r } map {$_->[0]} values %{ $keys->{def}{$mode} }; } } diff --git a/keyboard/altgr/index.inc.plp b/keyboard/altgr/index.inc.plp index 74c53dd..e9179c6 100644 --- a/keyboard/altgr/index.inc.plp +++ b/keyboard/altgr/index.inc.plp @@ -120,6 +120,7 @@ push @incs, @{ $idx->{$_} } for @{ $idx->{default} }; my @sample = split /(?VERSION(3.00); use List::Util qw( uniq max sum ); my %caticon = ( @@ -156,7 +157,7 @@ for my $inc (@incs) { print '', "\n\t"; for my $mode ($table->{mode} ? sort keys %{ $table->{mode} } : '') { print ''; - printf '', s/\s.*//r for $table->{key}{$mode} || (); + printf '', s/\s.*//r for $table->{def}{''}{$mode}[1] || (); for my $g (sort keys %{ $table->{inventory}{$mode} }) { printf ' %s', $g, $_/$most*100, $_, @@ -174,7 +175,7 @@ for my $inc (@incs) { my $keydata = Data("$dirbase/$inc.eng"); Shiar_Sheet::Keyboard->new($keydata) }) { - $keys->print_key('', $_, ($keys->{def}{''}{$_} // 'ni') =~ s/ mode\S*//r) + $keys->print_key('', $_, ($keys->{def}{''}{$_} // ['ni']) =~ s/ mode\S*//r) for @sample; } say ''; diff --git a/keyboard/altgr/msx-graph.eng.inc.pl b/keyboard/altgr/msx-graph.eng.inc.pl index 3bcf5d1..1b79678 100644 --- a/keyboard/altgr/msx-graph.eng.inc.pl +++ b/keyboard/altgr/msx-graph.eng.inc.pl @@ -124,13 +124,13 @@ if (exists $get{compat}) { my $groups = kbchars(\%rows); # replace rare punctuation distinctions by symbols -$groups->{def}{''}{$_} =~ s/g[78]/g6/ for keys %rows; +$groups->{def}{''}{$_}[0] =~ s/g[78]/g6/ for keys %rows; -$groups->{def}{''}{$_} = 'g7' +$groups->{def}{''}{$_}[0] = 'g7' for grep { $rows{$_} =~ /[\x{2500}-\x{259F}]/ } keys %rows; $groups->{flag}{g7} = ['drawing', 'box drawing or block elements']; -$groups->{def}{''}{$_} = 'g8' for keys %compat; # mostly U+1FBxx +$groups->{def}{''}{$_}[0] = 'g8' for keys %compat; # mostly U+1FBxx $groups->{flag}{g8} = ['legacy', 'drawing symbols best represented by Unicode 13.0' . (exists $get{compat} && ', converted to compatible equivalents') diff --git a/keyboard/altgr/msx.eng.inc.pl b/keyboard/altgr/msx.eng.inc.pl index a7d8c0b..95ce772 100644 --- a/keyboard/altgr/msx.eng.inc.pl +++ b/keyboard/altgr/msx.eng.inc.pl @@ -91,7 +91,7 @@ my %uc = ( ); my $groups = kbchars({%rows, %uc}); -$groups->{def}{''}{$_} .= ' ext' for keys %uc; +$groups->{def}{''}{$_}[0] .= ' ext' for keys %uc; $groups->{flag}{ext} = ['anachrone', 'expected uppercase variants if allowed by charset']; +{ diff --git a/keyboard/altgr/spacecadet.eng.inc.pl b/keyboard/altgr/spacecadet.eng.inc.pl index 740dd35..de6c232 100644 --- a/keyboard/altgr/spacecadet.eng.inc.pl +++ b/keyboard/altgr/spacecadet.eng.inc.pl @@ -90,7 +90,7 @@ my %rows = ( ); my $groups = kbchars(\%rows); -$rows{$_} =~ /\A\p{Greek}/ and $groups->{def}{''}{$_} =~ s/g6/g5/ for map {"+$_"} 'a'..'z'; +$rows{$_} =~ /\A\p{Greek}/ and $groups->{def}{''}{$_}[0] =~ s/g6/g5/ for map {"+$_"} 'a'..'z'; $groups->{flag}{g4} = ['similar', 'transliterates or transcribes an expected letter']; $groups->{flag}{g5} = ['greek', 'different Greek letters or symbols']; diff --git a/keyboard/altgr/symbolics.eng.inc.pl b/keyboard/altgr/symbolics.eng.inc.pl index b0c3a1e..94407f9 100644 --- a/keyboard/altgr/symbolics.eng.inc.pl +++ b/keyboard/altgr/symbolics.eng.inc.pl @@ -107,11 +107,11 @@ my %rows = ( ); my $groups = kbchars(\%rows); -$groups->{flag}->{g5} = [greek => +$groups->{flag}{g5} = [greek => "a different greek letter not corresponding with latin transcription" ]; while (my ($key, $chr) = each %rows) { - $groups->{def}->{''}->{$key} =~ s/g6/g5/ if $chr =~ /\A\p{Greek}/; + $groups->{def}{''}{$key}[0] =~ s/g6/g5/ if $chr =~ /\A\p{Greek}/; } +{ diff --git a/keyboard/altgr/unigraph.eng.inc.pl b/keyboard/altgr/unigraph.eng.inc.pl index 696b70a..c1d29cd 100644 --- a/keyboard/altgr/unigraph.eng.inc.pl +++ b/keyboard/altgr/unigraph.eng.inc.pl @@ -59,14 +59,14 @@ my %cpcompat = ( ); while (my ($k, $c) = each %rows) { - $groups->{def}{''}{$k} = $cpcompat{$c} // ( + $groups->{def}{''}{$k}[0] = $cpcompat{$c} // ( $c =~ /\p{In=1.1}/ ? 'g5' : $c =~ /\p{In=6.0}/ ? 'g6' : $c =~ /[\x{1FB00}-\x{1FBFF}]/ ? 'g7' : # Age=V13.0 'g0' ); } -$groups->{def}{''}{')'} .= ' linkkeyboard/altgr/zoo'; +$groups->{def}{''}{')'}[0] .= ' linkkeyboard/altgr/zoo'; +{ %{ $groups }, diff --git a/keyboard/altgr/windows.eng.inc.pl b/keyboard/altgr/windows.eng.inc.pl index eb021b7..512b6fb 100644 --- a/keyboard/altgr/windows.eng.inc.pl +++ b/keyboard/altgr/windows.eng.inc.pl @@ -75,7 +75,7 @@ my %rows = ( ); my $groups = kbchars(\%rows); -$groups->{def}{''}{$_} .= ' ext' for keys %xkb; +$groups->{def}{''}{$_}[0] .= ' ext' for keys %xkb; $groups->{flag}{ext} = ['xkb', 'unofficial extensions added in Linux (Gnome, KDE)']; +{ diff --git a/keyboard/altgr/zoo.eng.inc.pl b/keyboard/altgr/zoo.eng.inc.pl index a3ff9c1..be03e0a 100644 --- a/keyboard/altgr/zoo.eng.inc.pl +++ b/keyboard/altgr/zoo.eng.inc.pl @@ -130,7 +130,7 @@ my $groups = kbchars(\%rows); while (my ($k, $c) = each %rows) { $c =~ s/\n.*//; - $groups->{def}{''}{$k} = ( + $groups->{def}{''}{$k}[0] = ( $c =~ /\p{In=1.1}/ ? 'g2' : $c =~ /\p{In=6.0}/ ? 'g3' : $c =~ /\p{In=8.0}/ ? 'g4' : diff --git a/keyboard/less.eng.inc.pl b/keyboard/less.eng.inc.pl index 9000189..b73c34f 100644 --- a/keyboard/less.eng.inc.pl +++ b/keyboard/less.eng.inc.pl @@ -11,113 +11,6 @@ description => [ keywords => [qw' less keys pager more options '], rows => [1, 0], -key => { - "\e"=> "alt<>/meta", - - 'b' => "page up", - 'd' => 'scroll down', - 'f' => "page down", - 'F' => "follow\nForward Forever", - 'g' => "(first) line", - 'G' => "last line", - 'h' => "help", - 'j' => "", - 'k' => "", - 'm' => "mark pos<>ition", - 'n' => "next find", - 'N' => "prev find", - 'p' => "reset position\nbeginning 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<>mand", - '/' => "find", - '?' => "find rev.", - '&' => "filter match<>es", - "'" => "goto mark", - '-' => "toggle option", - '_' => "show option", - '=' => "file name", - '+' => "initial cmd", - - '(' => "closing", - - "^[\e"=> "noop", - '^[n' => "any next find", - '^[N' => "any prev find", - '^[u' => "mark search\nUndo", - '^[(' => "scroll left", - '^[)' => "scroll right", - - ":\e"=> "noop", - ':d' => "drop file", - ':e' => "open file", - ':n' => "next file", - ':p' => "prev file", - ':x' => "first file", - - "-\e"=> "noop", - '-a' => "advance find page", - '-b' => "buffer space", - '-B' => "static buffer for pipes", - '-c' => "clear on scroll", - '-d' => "dumb term<>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<>c<>ase", - '-I' => "ignore case", - '-j' => "top offset", - '-J' => "status column", - '-k' => "key bind<>ing<>s", - '-L' => qq[ignore lesso<>pen filter], - '-m' => "med. promp<>t tog<>gle", - '-M' => "long promp<>t tog<>gle", - '-n' => "count line num<>ber<>s", - '-N' => "show line n<>um<>ber<>s", - '-o' => "stdin to log", - '-O' => "log over<>wr<>ite", - '-p' => "initial search", - '-P' => "status line\nPrompt", - '-q' => "no info bell\nQuiet", - '-Q' => "no warn bell\nQuiet!", - '-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<>own", - '-W' => "hilight forw<>ard", - '-x' => "tab stops", - '-X' => "no termcap init", - '-y' => "scroll limit fw<>d", - '-z' => "page size", - '-"' => "shell quotes", - '-~' => "outside tildes toggle", - '-#' => "col shift", - '--' => "option name", - '-+' => "reset option", -}, - mode => { '' => 'normal pager', '^[' => 'escape keys (hold meta/alt)', @@ -139,150 +32,150 @@ flag => { def => { '' => { - "\e"=> 'g7 mode^[', - - 'b' => 'g2 more', - '^b'=> '=b', - 'd' => 'g2 more', - '^d'=> '=d', - 'e' => '=j', - '^e'=> '=j', - 'f' => 'g2 more', - '^f'=> '=f', - 'F' => 'g7', - 'g' => 'g2', - '^g'=> '==', - 'G' => 'g2', - 'h' => 'g7 more', - 'H' => '=h', - 'j' => 'g2', - 'k' => 'g2', - '^k'=> '=k', - '^l'=> '=r', # more - 'm' => 'g3 arg', - '^m'=> '=j', - 'n' => 'g4 more', - 'N' => 'g4', - '^n'=> '=j', - 'p' => 'g2', - '^p'=> '=k', - 'q' => 'g8 more', - 'Q' => '=q', - 'r' => 'g1', - '^r'=> '=r', - 'R' => 'g1', - 's' => 'g8 arg', - 't' => 'g4', - 'T' => 'g4', - 'u' => 'g2', - '^u'=> '=u', - 'v' => 'g8 linkvi more', - '^v'=> '=f', - 'V' => 'g1', - 'w' => 'g2', - '^x'=> 'g8 arg mode^x', - 'y' => '=k', - '^y'=> '=k', - 'z' => 'g2 more', - - '!' => 'g8 more', - '|' => 'g8 arg', - ':' => 'g8 arg mode:', - '/' => 'g4 arg more', - '?' => 'g4 arg', - '%' => '=p', - '&' => 'g4 arg', - "'" => 'g3 arg', - '-' => 'g8 arg mode-', - '_' => 'g1 arg mode-', - '=' => 'g1 more', - '+' => 'g7', - - '(' => 'g4', - '<' => '=g', - '>' => '=G', + "\e"=> ['g7 mode^[', "alt<>/meta"], + + 'b' => ['g2 more', "page up"], + '^b'=> \'b', + 'd' => ['g2 more', 'scroll down'], + '^d'=> \'d', + 'e' => \'j', + '^e'=> \'j', + 'f' => ['g2 more', "page down"], + '^f'=> \'f', + 'F' => ['g7', "follow\nForward Forever"], + 'g' => ['g2', "(first) line"], + '^g'=> \'=', + 'G' => ['g2', "last line"], + 'h' => ['g7 more', "help"], + 'H' => \'h', + 'j' => ['g2', ""], + 'k' => ['g2', ""], + '^k'=> \'k', + '^l'=> \'r', # more + 'm' => ['g3 arg', "mark pos<>ition"], + '^m'=> \'j', + 'n' => ['g4 more', "next find"], + 'N' => ['g4', "prev find"], + '^n'=> \'j', + 'p' => ['g2', "reset position\nbeginning or Percentage"], + '^p'=> \'k', + 'q' => ['g8 more', "quit"], + 'Q' => \'q', + 'r' => ['g1', "redraw"], + '^r'=> \'r', + 'R' => ['g1', "refresh"], + 's' => ['g8 arg', "save to file"], + 't' => ['g4', "next tag"], + 'T' => ['g4', "prev tag"], + 'u' => ['g2', 'scroll up'], + '^u'=> \'u', + 'v' => ['g8 linkvi more', "edit"], + '^v'=> \'f', + 'V' => ['g1', "version"], + 'w' => ['g2', "page up and set window"], + '^x'=> ['g8 arg mode^x', "emacs aliases"], + 'y' => \'k', + '^y'=> \'k', + 'z' => ['g2 more', "set page down"], + + '!' => ['g8 more', "shell command"], + '|' => ['g8 arg', "pipe till mark"], + ':' => ['g8 arg mode:', "com<>mand"], + '/' => ['g4 arg more', "find"], + '?' => ['g4 arg', "find rev."], + '%' => \'p', + '&' => ['g4 arg', "filter match<>es"], + "'" => ['g3 arg', "goto mark"], + '-' => ['g8 arg mode-', "toggle option"], + '_' => ['g1 arg mode-', "show option"], + '=' => ['g1 more', "file name"], + '+' => ['g7', "initial cmd"], + + '(' => ['g4', "closing"], + '<' => \'g', + '>' => \'G', }, '^[' => { # esc - "\e"=> 'g7 mode', - 'n' => 'g4', - 'N' => 'g4', - 'u' => 'g1', - 'v' => '=b', - '(' => 'g2', - ')' => 'g2', - '<' => '=g', - '>' => '=G', + "\e"=> ['g7 mode', "noop"], + 'n' => ['g4', "any next find"], + 'N' => ['g4', "any prev find"], + 'u' => ['g1', "mark search\nUndo"], + 'v' => \'b', + '(' => ['g2', "scroll left"], + ')' => ['g2', "scroll right"], + '<' => \'g', + '>' => \'G', }, #'^x' => { # "\e"=> 'g7 mode', - # '^x' => "='", - # '^v' => '=:e', + # '^x' => \"'", + # '^v' => \':e', #}, ':' => { - "\e"=> 'g7 mode', - 'd' => 'g7', - 'e' => 'g7', - 'f' => '==', - 'n' => 'g7 more', - 'p' => 'g7 more', - 'q' => '=q', - 'Q' => '=:q', - 'x' => 'g7', + "\e"=> ['g7 mode', "noop"], + 'd' => ['g7', "drop file"], + 'e' => ['g7', "open file"], + 'f' => \'=', + 'n' => ['g7 more', "next file"], + 'p' => ['g7 more', "prev file"], + 'q' => \'q', + 'Q' => \':q', + 'x' => ['g7', "first file"], }, '-' => { - "\e"=> 'g7 mode', - 'a' => 'g4', - 'b' => 'g7 arg', - 'B' => 'g7', - 'c' => 'g2', - 'd' => 'g8', - 'D' => 'g8 arg ext', - 'e' => 'g7', - 'E' => 'g7', - 'f' => 'g7', - 'F' => 'g7', - 'g' => 'g4', - 'h' => 'g2 arg', - 'i' => 'g4', - 'I' => 'g4', - 'j' => 'g3 arg', - 'J' => 'g1', - 'k' => 'g8 arg', - 'L' => 'g8', - 'm' => 'g1', - 'M' => 'g1', - 'n' => 'g8', - 'N' => 'g1', - 'o' => 'g8 arg', - 'O' => 'g8 arg', - 'p' => 'g4 arg', - 'P' => 'g1 arg', - 'q' => 'g8', - 'Q' => 'g8', - 'r' => 'g8', - 'R' => 'g8', - 's' => 'g8', - 'S' => 'g8', - 't' => 'g4 arg', - 'T' => 'g4 arg', - 'u' => 'g8', - 'U' => 'g8', - 'V' => '=V', - 'w' => 'g8', - 'W' => 'g8', - 'x' => 'g8 arg', - 'X' => 'g8', - 'y' => 'g2 arg', - 'z' => 'g2 arg', - '"' => 'g8 arg', - '~' => 'g8', - '#' => 'g2 arg', - '-' => 'g8 arg', - '+' => 'g8 arg', + "\e"=> ['g7 mode', "noop"], + 'a' => ['g4', "advance find page"], + 'b' => ['g7 arg', "buffer space"], + 'B' => ['g7', "static buffer for pipes"], + 'c' => ['g2', "clear on scroll"], + 'd' => ['g8', "dumb term<>inal"], + 'D' => ['g8 arg ext', "dos colours"], + 'e' => ['g7', "exit after eof"], + 'E' => ['g7', "exit at eof"], + 'f' => ['g7', "force open"], + 'F' => ['g7', "exit if 1 page"], + 'g' => ['g4', "hilight last match"], + 'h' => ['g2 arg', "scroll back limit"], + 'i' => ['g4', "ignore lower<>c<>ase"], + 'I' => ['g4', "ignore case"], + 'j' => ['g3 arg', "top offset"], + 'J' => ['g1', "status column"], + 'k' => ['g8 arg', "key bind<>ing<>s"], + 'L' => ['g8', qq[ignore lesso<>pen filter]], + 'm' => ['g1', "med. promp<>t tog<>gle"], + 'M' => ['g1', "long promp<>t tog<>gle"], + 'n' => ['g8', "count line num<>ber<>s"], + 'N' => ['g1', "show line n<>um<>ber<>s"], + 'o' => ['g8 arg', "stdin to log"], + 'O' => ['g8 arg', "log over<>wr<>ite"], + 'p' => ['g4 arg', "initial search"], + 'P' => ['g1 arg', "status line\nPrompt"], + 'q' => ['g8', "no info bell\nQuiet"], + 'Q' => ['g8', "no warn bell\nQuiet!"], + 'r' => ['g8', "raw chars"], + 'R' => ['g8', "ansi chars"], + 's' => ['g8', "squeeze blank lines"], + 'S' => ['g8', "no line wrap"], + 't' => ['g4 arg', "find tag"], + 'T' => ['g4 arg', "tags file"], + 'u' => ['g8', 'parse \b \r'], + 'U' => ['g8', 'escape \t \b \r'], + 'V' => \'V', + 'w' => ['g8', "hilight page d<>own"], + 'W' => ['g8', "hilight forw<>ard"], + 'x' => ['g8 arg', "tab stops"], + 'X' => ['g8', "no termcap init"], + 'y' => ['g2 arg', "scroll limit fw<>d"], + 'z' => ['g2 arg', "page size"], + '"' => ['g8 arg', "shell quotes"], + '~' => ['g8', "outside tildes toggle"], + '#' => ['g2 arg', "col shift"], + '-' => ['g8 arg', "option name"], + '+' => ['g8 arg', "reset option"], }, }, } diff --git a/keyboard/mplayer.eng.inc.pl b/keyboard/mplayer.eng.inc.pl index 9568ed8..c34cd74 100644 --- a/keyboard/mplayer.eng.inc.pl +++ b/keyboard/mplayer.eng.inc.pl @@ -14,56 +14,6 @@ description => [ keywords => [qw'mpv mplayer mplayer2 media player video audio'], rows => [1, 0], -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 +<>.1s", # +ctrl in mpv - '-' => "audio delay -<>.1s", # +ctrl in mpv - '/' => "volume decrease", - '*' => "volume increase", - 'm' => "mute sound", - '#' => "cycle audio tr<>ack<>s", - 'f' => "full<>screen", - 'T' => "stay on top", - 'w' => "pan/sc. decr<>eas<>e", - 'e' => "pan/scan increase", - 'o' => "osd state switch", - 'd' => "frame drop mode", - 'v' => "subtitle visibility", - 'b' => "next sub<>title", - 'j' => "prev<>ious sub<>title", - 'g' => "back in sub<>title<>s list", - 'y' => "forward in sub<>title<>s list", - 'F' => "forced subtitles", - 'a' => "align subtitles", - 'c' => "cycle fs mode", - 'n' => "restore video mode", - 'x' => "subtitle delay +<>.1<>s", - 'z' => "subtitle delay -<>.1<>s", - 'r' => "subtitles up", - 't' => "subtitles down", - 's' => "screen<>shot\n-vf screenshot", - 'S' => "record screen<>shot<>s\n-vf screenshot", - 'I' => "filename", - '!' => "chapter back", # also pgdn in mpv - '@' => "chapter forward", # also pgup in mpv - '1' => "contrast less", - '2' => "contrast more", - '3' => "brighter", - '4' => "darker", - '5' => "hue to red", - '6' => "hue to blue", - '7' => "saturate", - '8' => "de<>saturate", -}, - mode => { '' => "interactive control", }, @@ -82,56 +32,56 @@ flag => { def => { '' => { - "\e"=> 'q', - '[' => 'g7', - ']' => 'g7', - '{' => 'g7', - '}' => 'g7', - '<' => 'g9', - '>' => 'g9', - 'p' => 'g7', - '.' => 'g7', - 'q' => 'g9', - '+' => 'g6', - '-' => 'g6', - '/' => 'g6', - '*' => 'g6', - '9' => '=/', - '0' => '=*', - 'm' => 'g6', - '#' => 'g6', - 'f' => 'g4', - 'T' => 'g4', - 'w' => 'g4', - 'e' => 'g4', - 'o' => 'g1', - 'd' => 'g4', - 'v' => 'g2', - 'b' => 'g2', - 'j' => 'g2', - 'y' => 'g2', - 'g' => 'g2', - 'F' => 'g2', - 'a' => 'g2', - 'c' => 'g4 ext', - 'n' => 'g4 ext', - 'x' => 'g2', - 'z' => 'g2', - 'r' => 'g2', - 't' => 'g2', - 's' => 'g9 ext', - 'S' => 'g9 ext', - 'I' => 'g1', - '!' => 'g7', - '@' => 'g7', - '1' => 'g4 ext', - '2' => 'g4 ext', - '3' => 'g4 ext', - '4' => 'g4 ext', - '5' => 'g4 ext', - '6' => 'g4 ext', - '7' => 'g4 ext', - '8' => 'g4 ext', + "\e"=> \'q', + '[' => ['g7', "slow down 10%"], + ']' => ['g7', "speed up 10%"], + '{' => ['g7', "half speed"], + '}' => ['g7', "double speed"], + '<' => ['g9', "previous file"], + '>' => ['g9', "next file"], + 'p' => ['g7', "pause"], + '.' => ['g7', "step forward"], + 'q' => ['g9', "stop and quit"], + '+' => ['g6', "audio delay +<>.1s"], + '-' => ['g6', "audio delay -<>.1s"], + '/' => ['g6', "volume decrease"], + '*' => ['g6', "volume increase"], + '9' => \'/', + '0' => \'*', + 'm' => ['g6', "mute sound"], + '#' => ['g6', "cycle audio tr<>ack<>s"], + 'f' => ['g4', "full<>screen"], + 'T' => ['g4', "stay on top"], + 'w' => ['g4', "pan/sc. decr<>eas<>e"], + 'e' => ['g4', "pan/scan increase"], + 'o' => ['g1', "osd state switch"], + 'd' => ['g4', "frame drop mode"], + 'v' => ['g2', "subtitle visibility"], + 'b' => ['g2', "next sub<>title"], + 'j' => ['g2', "prev<>ious sub<>title"], + 'y' => ['g2', "forward in sub<>title<>s list"], + 'g' => ['g2', "back in sub<>title<>s list"], + 'F' => ['g2', "forced subtitles"], + 'a' => ['g2', "align subtitles"], + 'c' => ['g4 ext', "cycle fs mode"], + 'n' => ['g4 ext', "restore video mode"], + 'x' => ['g2', "subtitle delay +<>.1<>s"], + 'z' => ['g2', "subtitle delay -<>.1<>s"], + 'r' => ['g2', "subtitles up"], + 't' => ['g2', "subtitles down"], + 's' => ['g9 ext', "screen<>shot\n-vf screenshot"], + 'S' => ['g9 ext', "record screen<>shot<>s\n-vf screenshot"], + 'I' => ['g1', "filename"], + '!' => ['g7', "chapter back"], # also pgdn in mpv + '@' => ['g7', "chapter forward"], # also pgup in mpv + '1' => ['g4 ext', "contrast less"], + '2' => ['g4 ext', "contrast more"], + '3' => ['g4 ext', "brighter"], + '4' => ['g4 ext', "darker"], + '5' => ['g4 ext', "hue to red"], + '6' => ['g4 ext', "hue to blue"], + '7' => ['g4 ext', "saturate"], + '8' => ['g4 ext', "de<>saturate"], }, }, } diff --git a/keyboard/mpv.eng.inc.pl b/keyboard/mpv.eng.inc.pl index 11d4aff..4876764 100644 --- a/keyboard/mpv.eng.inc.pl +++ b/keyboard/mpv.eng.inc.pl @@ -12,34 +12,6 @@ intro => join("\n", keywords => $legacy->{keywords}, rows => [1, 0], -key => { %{ $legacy->{key} }, - ',' => "step backward<>s", - 'Q' => "save and quit", - '_' => "cycle video tr<>ack<>s", - '+' => "audio delay +<>.1s", # +ctrl in mpv - '-' => "audio delay -<>.1s", # +ctrl in mpv - 'o' => "osd state switch", - 'O' => "osd mode toggle", - 'd' => "deint<>erlace", - 'E' => "edition cycle", - 'i' => "stats info", - 'I' => "toggle stats info", - 'j' => "next sub<>title", - 'J' => "prev<>ious sub<>title", - 'A' => "aspect override", - 'u' => "subtitle style", - 'V' => "subtitle aspect", - 'l' => "A-B loop", - 'L' => "infinite looping", - 'S' => "record screen<>shot<>s\n-vf screenshot", # mpv? - '^s'=> "actual screen<>shot", - '5' => "gamma decrease", - '6' => "gamma increase", - 'F' => 'enlarge sub font', - 'G' => 'smaller sub font', - '`' => 'console', -}, - mode => $legacy->{mode}, flag => { %{ $legacy->{flag} }, @@ -48,33 +20,39 @@ flag => { %{ $legacy->{flag} }, def => { '' => { %{ $legacy->{def}->{''} }, - '`' => 'g9 arg new', - 'b' => undef, - 'g' => undef, + 'd' => ['g4 new', "deint<>erlace"], + '5' => ['g4 ext', "gamma decrease"], + '6' => ['g4 ext', "gamma increase"], + 'y' => undef, - 'F' => 'g2 new', - 'G' => 'g2 new', + 'g' => undef, + 'b' => undef, + 'j' => ['g2 new', "next sub<>title"], # was b + 'J' => ['g2 new', "prev<>ious sub<>title"], # was j + + '`' => ['g9 arg new', 'console'], + 'F' => ['g2 new', 'enlarge sub font'], + 'G' => ['g2 new', 'smaller sub font'], 'a' => undef, 'c' => undef, 'n' => undef, - 'i' => 'g1 new', - 'I' => 'g1 new', - ',' => 'g7 new', - '_' => 'g4 new', - 'Q' => 'g9 new', - 'O' => 'g1 new', - 'P' => '=o new', - 'J' => 'g2 new', - 'A' => 'g4 new', - 'u' => 'g2 new', - 'V' => 'g2 new', - 'l' => 'g7 new', - 'L' => 'g7 new', - 'E' => 'g4 new', - '^s'=> 'g9 ext new', - 'R' => '=t new', - 'Z' => '=x new', - 'W' => '=e new', + 'i' => ['g1 new', "stats info"], + 'I' => ['g1 new', "toggle stats info"], + ',' => ['g7 new', "step backward<>s"], + '_' => ['g4 new', "cycle video tr<>ack<>s"], + 'Q' => ['g9 new', "save and quit"], + 'O' => ['g1 new', "osd mode toggle"], + 'P' => [new => \'o'], + 'A' => ['g4 new', "aspect override"], + 'u' => ['g2 new', "subtitle style"], + 'V' => ['g2 new', "subtitle aspect"], + 'l' => ['g7 new', "A-B loop"], + 'L' => ['g7 new', "infinite looping"], + 'E' => ['g4 new', "edition cycle"], + '^s'=> ['g9 ext new', "actual screen<>shot"], + 'R' => [new => \'t'], + 'Z' => [new => \'x'], + 'W' => [new => \'e'], }, }, } diff --git a/keyboard/mutt.eng.inc.pl b/keyboard/mutt.eng.inc.pl index 4c94c09..bbafa6d 100644 --- a/keyboard/mutt.eng.inc.pl +++ b/keyboard/mutt.eng.inc.pl @@ -1,61 +1,35 @@ use utf8; -my %commonkey = ( - 'H' => "screen top", - 'j' => "entry ", - 'k' => "entry ", - 'L' => "screen bottom", - '^l'=> "redraw", - 'M' => "screen middle", - '^m'=> "select", - 'n' => "search ", - 'q' => "exit", - 't' => "tag", - 'z' => "page ", - 'Z' => "page ", - - '*' => "last entry", - '=' => "first entry", - ':' => "enter command", - ';' => "apply to tagged", - '>' => "line ", - '<' => "line ", - ']' => "half page ", - '[' => "half page ", - '?' => "help", - '!' => "invoke shell", - '/' => "search ", - '+/'=> "search ", -); +my $esc = ['g9 mode', '+']; # globally label escape as meta key my %commondef = ( - "\e"=> 'g9 mode', + "\e"=> $esc, - 'H' => 'g2', # top-page - 'j' => 'g2', # next-entry, next-undeleted - 'k' => 'g2', # previous-entry, previous-undeleted - 'L' => 'g2', # bottom-page - '^l'=> 'g1', # refresh - 'M' => 'g2', # middle-page - '^m'=> 'g6 mode^m', # select-entry, display-message - 'n' => 'g3', # search-next - 'q' => 'g8 mode', # exit - 't' => 'g4', # tag-entry - 'z' => 'g2', # next-page - 'Z' => 'g2', # previous-page + 'H' => ['g2', "screen top"], # top-page + 'j' => ['g2', "entry "], # next-entry, next-undeleted + 'k' => ['g2', "entry "], # previous-entry, previous-undeleted + 'L' => ['g2', "screen bottom"], # bottom-page + '^l'=> ['g1', "redraw"], # refresh + 'M' => ['g2', "screen middle"], # middle-page + '^m'=> ['g6 mode^m', "select"], # select-entry, display-message + 'n' => ['g3', "search "], # search-next + 'q' => ['g8 mode', "exit"], # exit + 't' => ['g4', "tag"], # tag-entry + 'z' => ['g2', "page "], # next-page + 'Z' => ['g2', "page "], # previous-page - '*' => 'g2', # last-entry - '=' => 'g2', # first-entry - ':' => 'g6', # enter-command - ';' => 'g6 arg', # tag-prefix - '>' => 'g2', # next-line - '<' => 'g2', # previous-line - ']' => 'g2', # half-down - '[' => 'g2', # half-up - '?' => 'g1', # help - '!' => 'g1 arg', # shell - '/' => 'g3 arg mode/~', # search - '+/'=> 'g3 arg mode/~', # search + '*' => ['g2', "last entry"], # last-entry + '=' => ['g2', "first entry"], # first-entry + ':' => ['g6', "enter command"], # enter-command + ';' => ['g6 arg', "apply to tagged"], # tag-prefix + '>' => ['g2', "line "], # next-line + '<' => ['g2', "line "], # previous-line + ']' => ['g2', "half page "], # half-down + '[' => ['g2', "half page "], # half-up + '?' => ['g1', "help"], # help + '!' => ['g1 arg', "invoke shell"], # shell + '/' => ['g3 arg mode/~', "search "], # search + '+/'=> ['g3 arg mode/~', "search "], # search ); { @@ -67,199 +41,6 @@ description => [ ], keywords => [qw' mutt MUA email client '], -key => { - %commonkey, - - '@' => "display sender", - '.' => "list new mail", - '|' => "pipe to shell", - '$' => "save mailbox", - '#' => "split up thread", - '&' => "thread tagged", - '%' => "toggle reado<>nl<>y", - '-' => "collapse thread", - '_' => "collapse all", - "'" => "marked mes<>sag<>e", - '~' => "save mark", - - 'a' => "create alias", - 'b' => "bounce", - '^b'=> "url<>view", - '+b'=> "search bodies", - 'c' => "open folder", - 'C' => "copy messag<>e", - '+c'=> "open reado<>nly", - '+C'=> "make plain copy", - 'd' => "delete", - 'D' => "delete patt<>er<>n", - '^d'=> "delete thread", - '+d'=> "delete subthread", - 'e' => "edit", - '^e'=> "edit con<>tent type", - '+e'=> "edit+send copy", - 'f' => "forward", - 'F' => "toggle important", - '^f'=> "forget pass<>phras<>e", - 'g' => "reply to all\nGroup reply", - 'G' => "fetch POP\nGather new mail", - 'h' => "toggle headers", - 'i' => "fetch IMAP", - '^i'=> "unread msg ", - '+^i'=> "unread msg ", - 'j' => "messag<>e ", - 'k' => "messag<>e ", - 'J' => "any ", - 'K' => "any ", - '^k'=> "extract pub keys", - '+k'=> "send public key", - 'l' => "limit pattern", - 'L' => "reply to list", - '+l'=> "mlist actions", - #'+l'=> "show current limit", - 'm' => "compo<>s<>e mail", - 'N' => "toggle new", - '^n'=> "thread ", - '+n'=> "subthr<>ead ", - 'o' => "sort", - 'O' => "sort reverse", - 'p' => "print", - 'P' => "to parent", - '^p'=> "thread ", - '+p'=> "subthr<>ead ", - '+P'=> "check for pgp", - 'q' => "quit", - 'Q' => "query addr<>ess<>es", - 'r' => "reply to sender", - 'R' => "recall postpon<>e<>d", - '^r'=> "mark thread read", - '+r'=> "mark sub<>thread r<>ead", - 's' => "move", - '+s'=> "save and delete", - 'T' => "tag patt<>er<>n", - '^t'=> "untag pattern", - '+t'=> "tag thread", - 'u' => "undo delete", - 'U' => "res<>tore pat<>t<>er<>n", - '^u'=> "restore thread", - '+u'=> "restore subthread", - 'v' => "attach<>ments", - 'V' => "version", - '+v'=> "(un)collapse thread", - '+V'=> "(un)collapse threads", - 'w' => "set flag", - 'W' => "clear flag", - 'x' => "abort", - 'y' => "list incoming mailboxes", - 'Y' => "edit label", - - (map { 'm'.$_ => $commonkey{$_} } keys %commonkey), - - 'm|' => "pipe attach<>m<>ent", - 'ma' => "attach file", - 'mA' => "attach messag<>e", - 'm^b'=> "url<>view", - 'mb' => "edit bcc", - 'mc' => "edit cc", - 'mC' => "copy file", - 'md' => "desc<>ribe attach<>m<>ent", - 'mD' => "delete attach<>m<>ent", - 'm^d'=> "dispo<>sition tog<>gle", - 'me' => "edit body", - 'mE' => "edit all", - 'm^e'=> "edit encoding", - 'mf' => "edit fcc", - 'm^f'=> "forget pass<>phrase", - 'm+f'=> "edit from", - 'mF' => "filter attach<>m<>ent", - 'mG' => "get attach<>m<>ent", - 'mh' => "display message", - 'mi' => "run ispell", - 'm+k'=> "attach PGP key", - 'ml' => "print attach<>m<>ent", - 'mm' => "edit attach<>m<>ent\nMime-appropriate open", - 'mM' => "edit mix", - 'm^m'=> "view attach<>m<>ent", - 'mn' => "new attach<>m<>ent", - 'mo' => "autocrypt toggle", #TODO - 'm^o'=> "rename attach<>m<>ent", - 'mp' => "PGP menu", - 'mP' => "post<>pone", - 'mr' => "edit reply<>-to", - 'mR' => "rename attach<>m<>ent", - 'ms' => "edit subject", - 'mS' => "s/mime options", - 'mt' => "edit to", - 'mT' => "enter tags", #TODO - 'm^t'=> "ctype attach<>m<>ent", - 'mu' => "unlink toggle", - 'mv' => "preview alt fil<>t<>er", # m+v mV - 'mV' => "preview mailcap filter", - 'mw' => "copy to folder", - 'mU' => "encode attach<>m<>ent", - 'my' => "send", - # ^xe - - '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<>g<>e", - '/~D' => "deleted", - '/~e' => "sender", - '/~E' => "expired", - '/~f' => "from", - '/~F' => "flagged", - '/~g' => "signed", - '/~G' => "encryp<>ted", - '/~h' => "header", - '/~H' => "spam attr<>ib<>ute", - '/~i' => "msg id", - '/~k' => "pgp key", - '/~L' => "receiv<>d by", - '/~l' => "mailing list", - '/~m' => "num<>ber ran<>g<>e", - '/~M' => "mime type", - '/~n' => "score range", - '/~N' => "new", - '/~O' => "old", - '/~p' => "to you", - '/~P' => "by you", - '/~Q' => "replies", - '/~r' => "receive date ran<>ge", - '/~R' => "read", - '/~s' => "subject", - '/~S' => "super<>seded", - '/~t' => "to address", - '/~T' => "tagged", - '/~u' => "subscr<>ibed list", - '/~U' => "unread", - '/~v' => "collapsed thread", - '/~V' => "verified", - '/~x' => "refer<>ence", - '/~X' => "attach<>ments", - '/~y' => "x-label", - '/~z' => "size range", - '/~=' => "dupli<>cate", - '/~$' => "unrefer<>enced", - '/~(' => "in thread", - '/~<' => "parent match", - '/~>' => "child match", - - # globally label escape as meta key - "\e"=> "+", - "m\e"=> "+", - "w\e"=> "+", - "/~\e"=> "+", -}, - mode => { '' => 'index', 'm' => 'compose (m)', @@ -284,200 +65,201 @@ def => { '' => { %commondef, - '@' => 'g1', # display-address - '.' => 'g8', # buffy-list #TODO - '|' => 'g6', # pipe-message - '$' => 'g4', # sync-mailbox - '#' => 'g4', # break-thread - '&' => 'g4', # link-threads - '%' => 'g4', # toggle-write - '-' => 'g9', - '_' => 'g9', - '~' => 'g4 arg', # mark-message #TODO - "'" => 'g3 arg', - ' ' => '=^m', + '@' => ['g1', "display sender"], # display-address + '.' => ['g8', "list new mail"], # buffy-list #TODO + '|' => ['g6', "pipe to shell"], # pipe-message + '$' => ['g4', "save mailbox"], # sync-mailbox + '#' => ['g4', "split up thread"], # break-thread + '&' => ['g4', "thread tagged"], # link-threads + '%' => ['g4', "toggle reado<>nl<>y"], # toggle-write + '-' => ['g9', "collapse thread"], + '_' => ['g9', "collapse all"], + '~' => ['g4 arg', "save mark"], # mark-message #TODO + "'" => ['g3 arg', "marked mes<>sag<>e"], + ' ' => \'^m', - 'a' => 'g6', # create-alias - 'b' => 'g7', # bounce-message - '^b'=> 'g1', - '+b'=> undef, # M ~b - 'c' => 'g8', # change-folder - 'C' => 'g6', # copy-message - '+c'=> 'g8', # change-folder-readonly - '+C'=> undef, # decode-copy - 'd' => 'g4', # delete-message - 'D' => 'g4 arg mode/~', # delete-pattern - '^d'=> 'g4', # delete-thread - '+d'=> 'g4', # delete-subthread - 'e' => 'g4 linkvi', # edit - '^e'=> 'g4', # edit-type - '+e'=> undef, # resend-message - 'f' => 'g7 modem', # forward-message - 'F' => 'g4', # flag-message - '^f'=> 'g6', # forget-passphrase - 'g' => 'g7 modem', # group-reply - 'G' => 'g6', # fetch-mail - 'h' => 'g9', # display-toggle-weed - 'i' => 'g6', # imap-fetch-mail - '^i'=> 'g3', # next-new-then-unread - '+^i'=> undef, # previous-new-then-unread - 'j' => 'g2', # next-undeleted - 'k' => 'g2', # previous-undeleted - 'J' => 'g3', # next-entry - 'K' => 'g3', # previous-entry - '^k'=> 'g1', # extract-keys - '+k'=> 'g7 modem', # mail-key - 'l' => 'g9 arg mode/~', # limit - 'L' => 'g7 modem', # list-reply - '+l'=> 'g1', # list-actions/show-limit - 'm' => 'g7 modem', # mail - 'N' => 'g4', # toggle-new - '^n'=> 'g3', # next-thread - '+n'=> 'g3', # next-subthread - 'o' => 'g9 modeo', # sort-mailbox - 'O' => 'g9 modeo', # sort-reverse - 'p' => 'g1', # print-message - 'P' => 'g3', # parent-message - '^p'=> 'g3', # previous-thread - '+p'=> 'g3', # previous-subthread - '+P'=> undef, # check-traditional-pgp - 'q' => 'g8', # quit - 'Q' => 'g1 arg', # query - 'r' => 'g7 modem', # reply - 'R' => 'g7 modem', # recall-message - '^r'=> 'g4', # read-thread - '+r'=> 'g4', # read-subthread - 's' => 'g4', # save-message - '+s'=> 'g4', # decode-save - 'T' => 'g4 arg mode/~', # tag-pattern - '^t'=> 'g4 arg mode/~', # untag-pattern - '+t'=> 'g4', # tag-thread - 'u' => 'g4', # undelete-message - 'U' => 'g4 arg mode/~', # undelete-pattern - '^u'=> 'g4', # undelete-thread - '+u'=> 'g4', # undelete-subthread - 'v' => 'g1', # view-attachments - 'V' => 'g1', # show-version - '+v'=> 'g9', # collapse-thread - '+V'=> 'g9', # collapse-all - 'w' => 'g4 arg modew', # set-flag - 'W' => 'g4 arg modew', # clear-flag - 'x' => 'g8', # exit - 'y' => 'g8', # M ? - 'Y' => 'g4 arg', # edit-label + 'a' => ['g6', "create alias"], # create-alias + 'b' => ['g7', "bounce"], # bounce-message + '^b'=> ['g1', "url<>view"], + '+b'=> [undef, "search bodies"], # M ~b + 'c' => ['g8', "open folder"], # change-folder + 'C' => ['g6', "copy messag<>e"], # copy-message + '+c'=> ['g8', "open reado<>nly"], # change-folder-readonly + '+C'=> [undef, "make plain copy"], # decode-copy + 'd' => ['g4', "delete"], # delete-message + 'D' => ['g4 arg mode/~', "delete patt<>er<>n"], # delete-pattern + '^d'=> ['g4', "delete thread"], # delete-thread + '+d'=> ['g4', "delete subthread"], # delete-subthread + 'e' => ['g4 linkvi', "edit"], # edit + '^e'=> ['g4', "edit con<>tent type"], # edit-type + '+e'=> [undef, "edit+send copy"], # resend-message + 'f' => ['g7 modem', "forward"], # forward-message + 'F' => ['g4', "toggle important"], # flag-message + '^f'=> ['g6', "forget pass<>phras<>e"], # forget-passphrase + 'g' => ['g7 modem', "reply to all\nGroup reply"], # group-reply + 'G' => ['g6', "fetch POP\nGather new mail"], # fetch-mail + 'i' => ['g6', "fetch IMAP"], # imap-fetch-mail + '^i'=> ['g3', "unread msg "], # next-new-then-unread + '+^i'=> [undef, "unread msg "], # previous-new-then-unread + 'j' => ['g2', "messag<>e "], # next-undeleted + 'k' => ['g2', "messag<>e "], # previous-undeleted + 'J' => ['g3', "any "], # next-entry + 'K' => ['g3', "any "], # previous-entry + '^k'=> ['g1', "extract pub keys"], # extract-keys + '+k'=> ['g7 modem', "send public key"], # mail-key + 'l' => ['g9 arg mode/~', "limit pattern"], # limit + 'L' => ['g7 modem', "reply to list"], # list-reply + '+l'=> ['g1', "mlist actions"], # list-actions/show-limit + #'+l'=> [, "show current limit"], + 'm' => ['g7 modem', "compo<>s<>e mail"], # mail + 'N' => ['g4', "toggle new"], # toggle-new + '^n'=> ['g3', "thread "], # next-thread + '+n'=> ['g3', "subthr<>ead "], # next-subthread + 'o' => ['g9 modeo', "sort"], # sort-mailbox + 'O' => ['g9 modeo', "sort reverse"], # sort-reverse + 'p' => ['g1', "print"], # print-message + 'P' => ['g3', "to parent"], # parent-message + '^p'=> ['g3', "thread "], # previous-thread + '+p'=> ['g3', "subthr<>ead "], # previous-subthread + '+P'=> [undef, "check for pgp"], # check-traditional-pgp + 'q' => ['g8', "quit"], # quit + 'Q' => ['g1 arg', "query addr<>ess<>es"], # query + 'r' => ['g7 modem', "reply to sender"], # reply + 'R' => ['g7 modem', "recall postpon<>e<>d"], # recall-message + '^r'=> ['g4', "mark thread read"], # read-thread + '+r'=> ['g4', "mark sub<>thread r<>ead"], # read-subthread + 's' => ['g4', "move"], # save-message + '+s'=> ['g4', "save and delete"], # decode-save + 'T' => ['g4 arg mode/~', "tag patt<>er<>n"], # tag-pattern + '^t'=> ['g4 arg mode/~', "untag pattern"], # untag-pattern + '+t'=> ['g4', "tag thread"], # tag-thread + 'u' => ['g4', "undo delete"], # undelete-message + 'U' => ['g4 arg mode/~', "res<>tore pat<>t<>er<>n"], # undelete-pattern + '^u'=> ['g4', "restore thread"], # undelete-thread + '+u'=> ['g4', "restore subthread"], # undelete-subthread + 'v' => ['g1', "attach<>ments"], # view-attachments + 'V' => ['g1', "version"], # show-version + '+v'=> ['g9', "(un)collapse thread"], # collapse-thread + '+V'=> ['g9', "(un)collapse threads"], # collapse-all + 'w' => ['g4 arg modew', "set flag"], # set-flag + 'W' => ['g4 arg modew', "clear flag"], # clear-flag + 'x' => ['g8', "abort"], # exit + 'y' => ['g8', "list incoming mailboxes"], # M ? + 'Y' => ['g4 arg', "edit label"], # edit-label }, # index 'm' => { %commondef, - '|' => 'g4', - 'a' => 'g4', - 'A' => 'g4', - 'b' => 'g4', - '^b'=> 'g1', - 'c' => 'g4', - 'C' => 'g6', - 'd' => 'g4', - 'D' => 'g4', - '^d'=> 'g4', - 'e' => 'g4 linkvi', - 'E' => 'g4 linkvi', - '^e'=> 'g4', - 'f' => 'g4', - '^f'=> 'g6', - '+f'=> 'g4', - 'F' => 'g4', - 'G' => 'g1', - 'h' => 'g1', - 'i' => 'g6', - '+k'=> 'g4', - 'l' => 'g1', - 'm' => 'g4', - 'M' => 'g4', - '^m'=> 'g1', - 'n' => 'g6', - 'o' => 'g4 ext', - '^o'=> 'g4', - 'p' => 'g1', #TODO - 'P' => 'g8 mode', - 'r' => 'g4', - 'R' => 'g4', - 's' => 'g4', - 'S' => 'g4 menumS', - 't' => 'g4', - 'T' => 'g4', - '^t'=> 'g4', - 'w' => 'g6', - 'u' => 'g6', - 'v' => 'g1', + '|' => ['g4', "pipe attach<>m<>ent"], + 'a' => ['g4', "attach file"], + 'A' => ['g4', "attach messag<>e"], + 'b' => ['g4', "edit bcc"], + '^b'=> ['g1', "url<>view"], + 'c' => ['g4', "edit cc"], + 'C' => ['g6', "copy file"], + 'd' => ['g4', "desc<>ribe attach<>m<>ent"], + 'D' => ['g4', "delete attach<>m<>ent"], + '^d'=> ['g4', "dispo<>sition tog<>gle"], + 'e' => ['g4 linkvi', "edit body"], + 'E' => ['g4 linkvi', "edit all"], + '^e'=> ['g4', "edit encoding"], + 'f' => ['g4', "edit fcc"], + '^f'=> ['g6', "forget pass<>phrase"], + '+f'=> ['g4', "edit from"], + 'F' => ['g4', "filter attach<>m<>ent"], + 'G' => ['g1', "get attach<>m<>ent"], + 'h' => ['g1', "display message"], + 'i' => ['g6', "run ispell"], + '+k'=> ['g4', "attach PGP key"], + 'l' => ['g1', "print attach<>m<>ent"], + 'm' => ['g4', "edit attach<>m<>ent\nMime-appropriate open"], + 'M' => ['g4', "edit mix"], + '^m'=> ['g1', "view attach<>m<>ent"], + 'n' => ['g6', "new attach<>m<>ent"], + 'o' => ['g4 ext', "autocrypt toggle"], #TODO + '^o'=> ['g4', "rename attach<>m<>ent"], + 'p' => ['g1', "PGP menu"], #TODO + 'P' => ['g8 mode', "post<>pone"], + 'r' => ['g4', "edit reply<>-to"], + 'R' => ['g4', "rename attach<>m<>ent"], + 's' => ['g4', "edit subject"], + 'S' => ['g4 menumS', "s/mime options"], + 't' => ['g4', "edit to"], + 'T' => ['g4', "enter tags"], #TODO + '^t'=> ['g4', "ctype attach<>m<>ent"], + 'w' => ['g6', "copy to folder"], + 'u' => ['g6', "unlink toggle"], + 'v' => ['g1', "preview alt fil<>t<>er"], # m+v mV '+v'=> 'g1', - 'V' => 'g1', - 'U' => 'g4', - 'y' => 'g7', + 'V' => ['g1', "preview mailcap filter"], + 'U' => ['g4', "encode attach<>m<>ent"], + 'y' => ['g7', "send"], + # ^xe }, # compose w => { - "\e"=> 'g9 mode', - 'D' => 'g4', - 'd' => '=wD', - 'N' => 'g4', - 'n' => '=wN', - 'O' => 'g4', - 'o' => '=wO', - 'r' => 'g4', - 'R' => '=wr', - '*' => 'g4', - '!' => 'g4', + "\e"=> $esc, + 'D' => ['g4', "deleted"], + 'd' => \'wD', + 'N' => ['g4', "new"], + 'n' => \'wN', + 'O' => ['g4', "old"], + 'o' => \'wO', + 'r' => ['g4', "replied"], + 'R' => \'wr', + '*' => ['g4', "tagged"], + '!' => ['g4', "flagged"], }, # flag '/~' => { - "\e"=> 'g9 mode', - A => 'g3', - b => 'g3 arg', - B => 'g3 arg', - c => 'g3 arg', - C => 'g3 arg', - d => 'g3 arg', - D => 'g3', - e => 'g3 arg', - E => 'g3', - f => 'g3 arg', - F => 'g3', - g => 'g3', - G => 'g3', - h => 'g3 arg', - H => 'g3 arg', - i => 'g3 arg', - k => 'g3', - L => 'g3 arg', - l => 'g3', - m => 'g3 arg', - M => 'g3 arg', - n => 'g3 arg', - N => 'g3', - O => 'g3', - p => 'g3', - P => 'g3', - Q => 'g3', - r => 'g3 arg', - R => 'g3', - s => 'g3', - S => 'g3', - t => 'g3 arg', - T => 'g3', - u => 'g3', - U => 'g3', - v => 'g3', - V => 'g3', - x => 'g3 arg', - X => 'g3 arg', - y => 'g3 arg', - z => 'g3 arg', - '=' => 'g3', - '$' => 'g3', - '(' => 'g3 arg', - '<' => 'g3 arg', - '>' => 'g3 arg', + "\e"=> $esc, + 'A' => ['g3', => "all"], + 'b' => ['g3 arg', => "msg body"], + 'B' => ['g3 arg', => "whole msg"], + 'c' => ['g3 arg', => "cc address"], + 'C' => ['g3 arg', => "to or cc address"], + 'd' => ['g3 arg', => "date sent ran<>g<>e"], + 'D' => ['g3', => "deleted"], + 'e' => ['g3 arg', => "sender"], + 'E' => ['g3', => "expired"], + 'f' => ['g3 arg', => "from"], + 'F' => ['g3', => "flagged"], + 'g' => ['g3', => "signed"], + 'G' => ['g3', => "encryp<>ted"], + 'h' => ['g3 arg', => "header"], + 'H' => ['g3 arg', => "spam attr<>ib<>ute"], + 'i' => ['g3 arg', => "msg id"], + 'k' => ['g3', => "pgp key"], + 'L' => ['g3 arg', => "receiv<>d by"], + 'l' => ['g3', => "mailing list"], + 'm' => ['g3 arg', => "num<>ber ran<>g<>e"], + 'M' => ['g3 arg', => "mime type"], + 'n' => ['g3 arg', => "score range"], + 'N' => ['g3', => "new"], + 'O' => ['g3', => "old"], + 'p' => ['g3', => "to you"], + 'P' => ['g3', => "by you"], + 'Q' => ['g3', => "replies"], + 'r' => ['g3 arg', => "receive date ran<>ge"], + 'R' => ['g3', => "read"], + 's' => ['g3', => "subject"], + 'S' => ['g3', => "super<>seded"], + 't' => ['g3 arg', => "to address"], + 'T' => ['g3', => "tagged"], + 'u' => ['g3', => "subscr<>ibed list"], + 'U' => ['g3', => "unread"], + 'v' => ['g3', => "collapsed thread"], + 'V' => ['g3', => "verified"], + 'x' => ['g3 arg', => "refer<>ence"], + 'X' => ['g3 arg', => "attach<>ments"], + 'y' => ['g3 arg', => "x-label"], + 'z' => ['g3 arg', => "size range"], + '=' => ['g3', => "dupli<>cate"], + '$' => ['g3', => "unrefer<>enced"], + '(' => ['g3 arg', => "in thread"], + '<' => ['g3 arg', => "parent match"], + '>' => ['g3 arg', => "child match"], }, # search option }, } diff --git a/keyboard/nethack.eng.inc.pl b/keyboard/nethack.eng.inc.pl index 19aa7a3..d9743e3 100644 --- a/keyboard/nethack.eng.inc.pl +++ b/keyboard/nethack.eng.inc.pl @@ -12,148 +12,6 @@ keywords => [qw' nethack rogue game controls '], rows => [3, 2, 1, 0], moderows => '4321-421', -key => { - 'b' => "step left down\nnumpad 1", - 'j' => "step down\nnumpad 2", - 'n' => "step right down\nnumpad 3", - 'h' => "step left\nnumpad 4", - 'l' => "step right\nnumpad 6", - 'y' => "step left up\nnumpad 7", - 'k' => "step up\nnumpad 8", - 'u' => "step right up\nnumpad 9", - - 'B' => "go left down\nshift numpad 1", - 'J' => "go down\nshift numpad 2", - 'N' => "go right down\nshift numpad 3", - 'H' => "go left\nshift numpad 4", - 'L' => "go right\nshift numpad 6", - 'Y' => "go left up\nshift numpad 7", - 'K' => "go up\nshift numpad 8", - 'U' => "go right up\nshift numpad 9", - - '^b'=> "run left down\nnumpad 5 1", - '^j'=> "run down\nnumpad 5 2", - '^n'=> "run right down\nnumpad 5 3", - '^h'=> "run left\nnumpad 5 4", - '^l'=> "run right\nnumpad 5 6", - '^y'=> "run left up\nnumpad 5 7", - '^k'=> "run up\nnumpad 5 8", - '^u'=> "run right up\nnumpad 5 9", - - 'g' => "run until interest", - 'm' => "m<>ove blind\nno pickup", - 'M' => "go far", - 'G' => "g any<>where\nfollow branches", - - '?' => "help menu", - '+?'=> "more help", - '/' => "explain symbol", - '&' => "tell com<>m<>and", - '<' => "climb up ladder", - '>' => "desc<>ent ladder", - '.' => "rest (noop)", - '_' => "travel to", - - '+2'=> "two<>weapon toggle", - 'a' => "apply tool", - 'A' => "remove all armor", - '^a'=> "redo comm<>and\nAgain", - '+a'=> "adjust inv<>ent<>ory", - 'c' => "close door", - 'C' => "call monster", - '^c'=> "panic quit", - '+c'=> "chat", - 'd' => "drop item", - 'D' => "drop items", - '^d'=> "kick", - '+d'=> "dip", - 'e' => "eat food", - 'E' => "en<>grave", - '+e'=> "weapon skills\nEnhance", - 'f' => "fire quiver", - 'F' => "fight monster", - '+f'=> "force lock", - 'i' => "invent<>ory", - 'I' => "invent<>ory part", - '+i'=> "invoke object", - '+j'=> "jump", - '+l'=> "loot", - '+m'=> "mons<>ter abil<>ity", - '+n'=> "name item<>(s)", - 'o' => "open door", - 'O' => "options", - '^o'=> "overview levels", - '+o'=> "offer sacrifice", - 'p' => "pay bill", - 'P' => "put on", - '^p'=> "repeat message", - '+p'=> "pray", - 'q' => "drink\nQuaff", - 'Q' => "quiver ammo", - '+q'=> "exit game\nQuit", - 'r' => "read scroll", - 'R' => "put off\nRemove accessory", - '^r'=> "redraw", - '+r'=> "rub object", - 's' => "search secrets", - 'S' => "save game", - '+s'=> "sit down", - 't' => "throw<>/shoot", - 'T' => "remove armor", - '^t'=> "teleport", - '+t'=> "turn undead", - '+u'=> "untrap", - 'v' => "version", - 'V' => "verbose version", - '+v'=> "compile details", - 'w' => "wield weap<>on", - 'W' => "wear armor", - '+w'=> "wipe face", - 'x' => "swap weapons\nXchange", - 'X' => "explore mode", - '^x'=> "show stats", - 'z' => "zap wand", - 'Z' => "cast spell", - '^z'=> "suspend game", - - ':' => "look here", - ';' => "look else<>where", - ',' => "pick up", - '@' => "toggle pick<>up", - '^' => "show trap", - ')' => "show weapon", - '[' => "show armor", - '=' => "show rings", - '"' => "show amulet", - '(' => "show tools", - '*' => "show equip<>ment", - '$' => "count gold", - '+' => "list spells", - '\\'=> "discover<>ed obj<>ects", - '`' => "types ident<>if<>ied", - '!' => "shell escape", - '#' => "more comm<>ands", - - 'DB' => 'drop blessed', - 'DU' => 'drop uncursed', - 'DC' => 'drop cursed', - 'DX' => 'drop unknown', - 'Da' => 'drop all', - 'Di' => "invent<>ory", - 'Du' => 'drop unpaid', - 'Dm' => 'drop any', - 'D%' => 'drop more', - - 'I*' => 'list gems', - 'Iu' => 'list unpaid', - 'Ix' => 'list billed', - 'I$' => 'count money', - 'IB' => 'list blessed', - 'IU' => 'list uncurs<>e<>d', - 'IC' => 'list cursed', - 'IX' => 'list un<>know<>n', -}, - mode => { '' => 'normal gameplay', 'I' => 'inventory type', @@ -175,154 +33,153 @@ flag => { def => { '' => { - 'b' => 'g2', - 'j' => 'g2', - 'n' => 'g2', - 'h' => 'g2', - 'l' => 'g2', - 'y' => 'g2', - 'k' => 'g2', - 'u' => 'g2', - - 'B' => 'g3', - 'J' => 'g3', - 'N' => 'g3', - 'H' => 'g3', - 'L' => 'g3', - 'Y' => 'g3', - 'K' => 'g3', - 'U' => 'g3', - - '^b'=> 'g3', - '^j'=> 'g3', - '^n'=> 'g3', - '^h'=> 'g3', - '^l'=> 'g3', - '^y'=> 'g3', - '^k'=> 'g3', - '^u'=> 'g3', - - 'g' => 'g3 argm', - 'm' => 'g3 argm', - 'M' => 'g3 argm', - 'G' => 'g3 argm', - - '?' => 'g8 mode?', #help - '+?'=> 'g8', - '/' => 'g6 arg mode/', #whatis - '&' => 'g6 arg', - '<' => 'g2', #up - '>' => 'g2', #down - '.' => 'g2', #rest - '_' => 'g3 argM', #travel - - '+2'=> 'g4', #twoweapon - 'a' => 'g4 argi', #apply - 'A' => 'g4', #armor - '^a'=> 'g4', #again - '+a'=> 'g6', #adjust - 'c' => 'g4 argm', #close - 'C' => 'g4 arg', #call - '^c'=> 'g6', - '+c'=> 'g4 arg', #chat - 'd' => 'g4 argi', #drop - 'D' => 'g4 arg modeD', #Drop - '^d'=> 'g4 argm', #kick - '+d'=> 'g4 argi', #dip - 'e' => 'g4 argi', #eat - 'E' => 'g4 argi', #engrave - '+e'=> 'g4', #enhance - 'f' => 'g4 argm', #fire - 'F' => 'g4 argm', #fight - '+f'=> 'g4', #force - 'i' => 'g7', #invent - 'I' => 'g7 arg modeI', #Invent - '+i'=> 'g4 argi', #invoke - '+j'=> 'g4', #jump - '+l'=> 'g4', #loot - '+m'=> 'g4', #monster - '+n'=> 'g7 arg', #name - 'o' => 'g4 argm', #open - 'O' => 'g8 modeO', #options - '^o'=> 'g6', - '+o'=> 'g4 argi', #offer - '+O'=> "=^o", #overview - 'p' => 'g4', #pay - 'P' => 'g4 argi', #puton - '^p'=> 'g6', #prevmsg - '+p'=> 'g4 arg', #pray - 'q' => 'g4 argi', #quaff - 'Q' => 'g4 argi', #quiver - '+q'=> 'g6', #quit - 'r' => 'g4 argi', #read - 'R' => 'g4 argi', #remove - '^r'=> 'g6', #redraw - '+r'=> 'g4 argi', #rub - 's' => 'g4', #search - 'S' => 'g6', #save - '+s'=> 'g4', #sit - 't' => 'g4 argm', #throw - 'T' => 'g4 argi', #takeoff - '^t'=> 'g4', #'port - '+t'=> 'g4', #turn - '+u'=> 'g4', #untrap - 'v' => 'g6', - 'V' => 'g6', #history - '+v'=> 'g6', #version - 'w' => 'g4 argi', #wield - 'W' => 'g4 argi', #wear - '+w'=> 'g4', #wipe - 'x' => 'g4', #xchange - 'X' => 'g6', #explore - '^x'=> 'g6', #show - 'z' => 'g4 argm', #zap - 'Z' => 'g4 argi', #Zap - '^z'=> 'g6', #suspend - - ':' => 'g6', #look - ';' => 'g6 argM', #farlook - ',' => 'g4', #pickup - '@' => 'g6', - '^' => 'g6 argm', #trap_id - ')' => 'g7', #seeweapon - '[' => 'g7', #seearmor - '=' => 'g7', #seerings - '"' => 'g7', #seeamulet - '(' => 'g7', #seetools - '*' => 'g7', #seeall - '$' => 'g6', #seegold - '+' => 'g7', #seespells - '\\'=> 'g7', #known - '`' => 'g7', #knownclass - '!' => 'g6', #sh - '#' => 'g8', + 'b' => ['g2', "step left down\nnumpad 1"], + 'j' => ['g2', "step down\nnumpad 2"], + 'n' => ['g2', "step right down\nnumpad 3"], + 'h' => ['g2', "step left\nnumpad 4"], + 'l' => ['g2', "step right\nnumpad 6"], + 'y' => ['g2', "step left up\nnumpad 7"], + 'k' => ['g2', "step up\nnumpad 8"], + 'u' => ['g2', "step right up\nnumpad 9"], + + 'B' => ['g3', "go left down\nshift numpad 1"], + 'J' => ['g3', "go down\nshift numpad 2"], + 'N' => ['g3', "go right down\nshift numpad 3"], + 'H' => ['g3', "go left\nshift numpad 4"], + 'L' => ['g3', "go right\nshift numpad 6"], + 'Y' => ['g3', "go left up\nshift numpad 7"], + 'K' => ['g3', "go up\nshift numpad 8"], + 'U' => ['g3', "go right up\nshift numpad 9"], + + '^b'=> ['g3', "run left down\nnumpad 5 1"], + '^j'=> ['g3', "run down\nnumpad 5 2"], + '^n'=> ['g3', "run right down\nnumpad 5 3"], + '^h'=> ['g3', "run left\nnumpad 5 4"], + '^l'=> ['g3', "run right\nnumpad 5 6"], + '^y'=> ['g3', "run left up\nnumpad 5 7"], + '^k'=> ['g3', "run up\nnumpad 5 8"], + '^u'=> ['g3', "run right up\nnumpad 5 9"], + + 'g' => ['g3 argm', "run until interest"], + 'm' => ['g3 argm', "m<>ove blind\nno pickup"], + 'M' => ['g3 argm', "go far"], + 'G' => ['g3 argm', "g any<>where\nfollow branches"], + + '?' => ['g8 mode?', "help menu"], #help + '+?'=> ['g8', "more help"], + '/' => ['g6 arg mode/', "explain symbol"], #whatis + '&' => ['g6 arg', "tell com<>m<>and"], + '<' => ['g2', "climb up ladder"], #up + '>' => ['g2', "desc<>ent ladder"], #down + '.' => ['g2', "rest (noop)"], #rest + '_' => ['g3 argM', "travel to"], #travel + + '+2'=> ['g4', "two<>weapon toggle"], #twoweapon + 'a' => ['g4 argi', "apply tool"], #apply + 'A' => ['g4', "remove all armor"], #armor + '^a'=> ['g4', "redo comm<>and\nAgain"], #again + '+a'=> ['g6', "adjust inv<>ent<>ory"], #adjust + 'c' => ['g4 argm', "close door"], #close + 'C' => ['g4 arg', "call monster"], #call + '^c'=> ['g6', "panic quit"], + '+c'=> ['g4 arg', "chat"], #chat + 'd' => ['g4 argi', "drop item"], #drop + 'D' => ['g4 arg modeD', "drop items"], #Drop + '^d'=> ['g4 argm', "kick"], #kick + '+d'=> ['g4 argi', "dip"], #dip + 'e' => ['g4 argi', "eat food"], #eat + 'E' => ['g4 argi', "en<>grave"], #engrave + '+e'=> ['g4', "weapon skills\nEnhance"], #enhance + 'f' => ['g4 argm', "fire quiver"], #fire + 'F' => ['g4 argm', "fight monster"], #fight + '+f'=> ['g4', "force lock"], #force + 'i' => ['g7', "invent<>ory"], #invent + 'I' => ['g7 arg modeI', "invent<>ory part"], #Invent + '+i'=> ['g4 argi', "invoke object"], #invoke + '+j'=> ['g4', "jump"], #jump + '+l'=> ['g4', "loot"], #loot + '+m'=> ['g4', "mons<>ter abil<>ity"], #monster + '+n'=> ['g7 arg', "name item<>(s)"], #name + 'o' => ['g4 argm', "open door"], #open + 'O' => ['g8 modeO', "options"], #options + '^o'=> ['g6', "overview levels"], + '+o'=> ['g4 argi', "offer sacrifice"], #offer + 'p' => ['g4', "pay bill"], #pay + 'P' => ['g4 argi', "put on"], #puton + '^p'=> ['g6', "repeat message"], #prevmsg + '+p'=> ['g4 arg', "pray"], #pray + 'q' => ['g4 argi', "drink\nQuaff"], #quaff + 'Q' => ['g4 argi', "quiver ammo"], #quiver + '+q'=> ['g6', "exit game\nQuit"], #quit + 'r' => ['g4 argi', "read scroll"], #read + 'R' => ['g4 argi', "put off\nRemove accessory"], #remove + '^r'=> ['g6', "redraw"], #redraw + '+r'=> ['g4 argi', "rub object"], #rub + 's' => ['g4', "search secrets"], #search + 'S' => ['g6', "save game"], #save + '+s'=> ['g4', "sit down"], #sit + 't' => ['g4 argm', "throw<>/shoot"], #throw + 'T' => ['g4 argi', "remove armor"], #takeoff + '^t'=> ['g4', "teleport"], #'port + '+t'=> ['g4', "turn undead"], #turn + '+u'=> ['g4', "untrap"], #untrap + 'v' => ['g6', "version"], + 'V' => ['g6', "verbose version"], #history + '+v'=> ['g6', "compile details"], #version + 'w' => ['g4 argi', "wield weap<>on"], #wield + 'W' => ['g4 argi', "wear armor"], #wear + '+w'=> ['g4', "wipe face"], #wipe + 'x' => ['g4', "swap weapons\nXchange"], #xchange + 'X' => ['g6', "explore mode"], #explore + '^x'=> ['g6', "show stats"], #show + 'z' => ['g4 argm', "zap wand"], #zap + 'Z' => ['g4 argi', "cast spell"], #Zap + '^z'=> ['g6', "suspend game"], #suspend + + ':' => ['g6', "look here"], #look + ';' => ['g6 argM', "look else<>where"], #farlook + ',' => ['g4', "pick up"], #pickup + '@' => ['g6', "toggle pick<>up"], + '^' => ['g6 argm', "show trap"], #trap_id + ')' => ['g7', "show weapon"], #seeweapon + '[' => ['g7', "show armor"], #seearmor + '=' => ['g7', "show rings"], #seerings + '"' => ['g7', "show amulet"], #seeamulet + '(' => ['g7', "show tools"], #seetools + '*' => ['g7', "show equip<>ment"], #seeall + '$' => ['g6', "count gold"], #seegold + '+' => ['g7', "list spells"], #seespells + '\\'=> ['g7', "discover<>ed obj<>ects"], #known + '`' => ['g7', "types ident<>if<>ied"], #knownclass + '!' => ['g6', "shell escape"], #sh + '#' => ['g8', "more comm<>ands"], }, 'D' => { - "\e" => 'g8 mode', # static reset button, even though it's not (officially) in the game - - 'B' => 'g4', - 'U' => 'g4', - 'C' => 'g4', - 'X' => 'g4', - 'a' => 'g4', - 'i' => 'g6', - 'u' => 'g4', - 'm' => 'g4 argi', - '%' => 'g4 arg', + "\e" => ['g8 mode'], # static reset button, even though it's not (officially) in the game + + 'B' => ['g4', 'drop blessed'], + 'U' => ['g4', 'drop uncursed'], + 'C' => ['g4', 'drop cursed'], + 'X' => ['g4', 'drop unknown'], + 'a' => ['g4', 'drop all'], + 'i' => ['g6', "invent<>ory"], + 'u' => ['g4', 'drop unpaid'], + 'm' => ['g4 argi', 'drop any'], + '%' => ['g4 arg', 'drop more'], }, 'I' => { - "\e" => 'g8 mode', - - '*' => 'g6', - 'u' => 'g6', - 'x' => 'g6', - '$' => 'g6', - 'B' => 'g6', - 'U' => 'g6', - 'C' => 'g6', - 'X' => 'g6', + "\e" => ['g8 mode'], + + '*' => ['g6', 'list gems'], + 'u' => ['g6', 'list unpaid'], + 'x' => ['g6', 'list billed'], + '$' => ['g6', 'count money'], + 'B' => ['g6', 'list blessed'], + 'U' => ['g6', 'list uncurs<>e<>d'], + 'C' => ['g6', 'list cursed'], + 'X' => ['g6', 'list un<>know<>n'], }, }, } diff --git a/keyboard/readline.eng.inc.pl b/keyboard/readline.eng.inc.pl index 5e5b0cd..acdd89d 100644 --- a/keyboard/readline.eng.inc.pl +++ b/keyboard/readline.eng.inc.pl @@ -11,84 +11,6 @@ keywords => [qw( readline gnu bash emacs editing curses )], rows => [4, 3, 2], moderows => '^x=213', -key => { - '+<' => "history start", - '+>' => "history end", - '+?' => "list complet<>ion<>s", - '^@' => "set mark", - - '+#' => "prefix comm<>en<>t", - '+&' => "tilde expand", - '+*' => "complet<>e all", - '+.' => "insert last", - - '^[' => "meta", - '+\\'=> "delete whitesp<>ace", - '^]' => "find char", - '^+]'=> "rev find char", - '^_' => "undo", - - '+~' => "user<>name exp<>and", - '+!' => "cmd expand", - '+@' => "host<>name exp<>and", - '+$' => "variable expand", - '+^' => "history expand", - '+/' => "filename expand", - - '^a' => "begin of line", - '^b' => "char back<>w<>ard<>s", - '+b' => "word back<>w<>ard<>s", - '^c' => "cancel comm<>and", - '+c' => "capital<>ise word", - '^d' => "delete char", - '+d' => "delete word rem<>ain<>der", -# '^e' => "emacs mode", - '^e' => "end of line", - '^f' => "char forward", - '+f' => "word forward", - '^g' => "abort cmd, bell", - '^h' => "back<>space", - '^+h'=> "delete bound word", - '^i' => "auto<>complet<>e\n(tab)", - '^+j'=> "vim mode", - '^k' => "delete till eol", - '^l' => "clear screen", - '+l' => "lowcase word", - '^m' => "enter line\n(enter)", - '^n' => "history next", - '+n' => "match history", - '^o' => "enter and next", - '^p' => "history back", - '+p' => "rev match history", -# '^q' => "\nQuote", #TODO fix partial override - '^r' => "reverse history", - '+r' => "full undo\nRevert", - '^s' => "search history", - '^t' => "move char forw<>ard\nTranspose char", - '+t' => "move word forw<>ard\nTranspose word", - '^u' => "delete till bol", # unix - '+u' => "upcase word", - '^v' => "verbat<>im char", - '^w' => "delete word", # unix - '^x' => "extend<>ed", - '^y' => "yank top", - '+y' => "rotate yank", - '^+y'=> "yank arg", - '^z' => "back<>ground", - - '^x(' => "start macro", - '^x)' => "end macro", - '^xe' => "run macro\nExecute", - '^x^e' => "editor", - '^x^r' => "reload inputrc", - '^x^x' => "swap cursor\neXchange", - '^x^v' => "shell version", - - # globally label escape as meta key - "\e" => "+", - "^x\e" => "+", -}, - mode => { '' => "emacs mode", '^x' => "emacs ctrl-x bindings", @@ -110,99 +32,99 @@ flag => { def => { '' => { - "\e" => 'g8', - - '+<' => 'g4', - '+=' => '=+?', #TODO: v21 # emacs, not in v2.0 - '+>' => 'g4', - '^?' => '=^h', - '+?' => 'g1', - '^@' => 'g8 v21', # not in v2.0 - - '+#' => 'g6 v21', # not in v2.0 - '+&' => 'g6', - '+*' => 'g6 v21', # not in v2.0 - '+.' => 'g4', - '+~' => '=+&', # emacs - - '^[' => 'g8', - '^+['=> '=^i', - '+\\'=> 'g7', - '^]' => 'g2 arg v21', # not in v2.0 - '^+]'=> 'g2 arg v21', # not in v2.0 - '^_' => 'g4', - '+_' => '=+.', - - '+~' => 'g6 xbash', # common emacs => '=+&' - '+!' => 'g6 xbash', - '+@' => 'g6 xbash', - '+$' => 'g6 xbash', - '+^' => 'g4 xbash', - '+/' => 'g1 xbash', - - '^a' => 'g2', - '^b' => 'g2', - '+b' => 'g2', - '^c' => 'g8 xbash', - '+c' => 'g6', - '^d' => 'g7', - '+d' => 'g7 ring', - # '^e' => 'g9', - '^e' => 'g2', - '^f' => 'g2', - '+f' => 'g2', - '^g' => 'g8', - '^+g'=> '=^g', - '^h' => 'g7', - '^+h'=> 'g7 ring', #TODO - '^i' => 'g6', - '^+i'=> '=^v^i', - '^j' => '=^m', - '^+j'=> 'g9', #TODO: mode^+j - '^k' => 'g7 ring', - '^l' => 'g1', - '+l' => 'g6', - '^m' => 'g4', - '^+m'=> '=^+j', - '^n' => 'g4', - '+n' => 'g4', - '^o' => 'g4 xbash', - '^p' => 'g4', - '+p' => 'g4', - '^q' => '=^v', - '^r' => 'g4', - '+r' => 'g4', - '^+r'=> '=+r', - '^s' => 'g4', - '^t' => 'g6', - '+t' => 'g6', - '^u' => 'g7 ring', - '+u' => 'g6', - '^v' => 'g8', - '^w' => 'g7 ring', - '^x' => 'g9 arg mode^x', - '^y' => 'g4', - '+y' => 'g4 ring', - '^+y'=> "yank arg", - '^z' => 'g8 xbash', + "\e" => ['g8', "+"], # label escape as meta key + + '+<' => ['g4', "history start"], + '+=' => \'+?', #TODO: v21 # emacs, not in v2.0 + '+>' => ['g4', "history end"], + '^?' => \'^h', + '+?' => ['g1', "list complet<>ion<>s"], + '^@' => ['g8 v21', "set mark"], # not in v2.0 + + '+#' => ['g6 v21', "prefix comm<>en<>t"], # not in v2.0 + '+&' => ['g6', "tilde expand"], + '+*' => ['g6 v21', "complet<>e all"], # not in v2.0 + '+.' => ['g4', "insert last"], + '+~' => \'+&', # common emacs + + '^[' => ['g8', "meta"], + '^+['=> \'^i', + '+\\'=> ['g7', "delete whitesp<>ace"], + '^]' => ['g2 arg v21', "find char"], # not in v2.0 + '^+]'=> ['g2 arg v21', "rev find char"], # not in v2.0 + '^_' => ['g4', "undo"], + '+_' => \'+.', + + '+~' => ['g6 xbash', "user<>name exp<>and"], # overrides alias + '+!' => ['g6 xbash', "cmd expand"], + '+@' => ['g6 xbash', "host<>name exp<>and"], + '+$' => ['g6 xbash', "variable expand"], + '+^' => ['g4 xbash', "history expand"], + '+/' => ['g1 xbash', "filename expand"], + + '^a' => ['g2', "begin of line"], + '^b' => ['g2', "char back<>w<>ard<>s"], + '+b' => ['g2', "word back<>w<>ard<>s"], + '^c' => ['g8 xbash', "cancel comm<>and"], + '+c' => ['g6', "capital<>ise word"], + '^d' => ['g7', "delete char"], + '+d' => ['g7 ring', "delete word rem<>ain<>der"], + # '^e' => ['g9', "emacs mode"], + '^e' => ['g2', "end of line"], + '^f' => ['g2', "char forward"], + '+f' => ['g2', "word forward"], + '^g' => ['g8', "abort cmd, bell"], + '^+g'=> \'^g', + '^h' => ['g7', "back<>space"], + '^+h'=> ['g7 ring', "delete bound word"], #TODO + '^i' => ['g6', "auto<>complet<>e\n(tab)"], + '^+i'=> \'^v^i', + '^j' => \'^m', + '^+j'=> ['g9', "vim mode"], #TODO: mode^+j + '^k' => ['g7 ring', "delete till eol"], + '^l' => ['g1', "clear screen"], + '+l' => ['g6', "lowcase word"], + '^m' => ['g4', "enter line\n(enter)"], + '^+m'=> \'^+j', + '^n' => ['g4', "history next"], + '+n' => ['g4', "match history"], + '^o' => ['g4 xbash', "enter and next"], + '^p' => ['g4', "history back"], + '+p' => ['g4', "rev match history"], + '^q' => [undef, \'^v', "\nQuote"], #TODO fix partial override + '^r' => ['g4', "reverse history"], + '+r' => ['g4', "full undo\nRevert"], + '^+r'=> \'+r', + '^s' => ['g4', "search history"], + '^t' => ['g6', "move char forw<>ard\nTranspose char"], + '+t' => ['g6', "move word forw<>ard\nTranspose word"], + '^u' => ['g7 ring', "delete till bol"], # unix + '+u' => ['g6', "upcase word"], + '^v' => ['g8', "verbat<>im char"], + '^w' => ['g7 ring', "delete word"], # unix + '^x' => ['g9 arg mode^x', "extend<>ed"], + '^y' => ['g4', "yank top"], + '+y' => ['g4 ring', "rotate yank"], + '^+y'=> ["yank arg", "yank arg"], + '^z' => ['g8 xbash', "back<>ground"], }, '^x' => { lead => "x̂", - "\e" => 'g8 mode', - - '(' => 'g8', - ')' => 'g8', - 'e' => 'g8', - '^e' => 'g6 xbash linkvi', - '^g' => '=^g', - '^h' => '=^u', - '^r' => 'g8', - '^u' => '=^_', - '^x' => 'g2 v21', # not in v2.0 - '^v' => 'g1 xbash', - '^?' => '=^x^h', + "\e" => ['g8 mode', "+"], + + '(' => ['g8', "start macro"], + ')' => ['g8', "end macro"], + 'e' => ['g8', "run macro\nExecute"], + '^e' => ['g6 xbash linkvi', "editor"], + '^g' => \'^g', + '^h' => \'^u', + '^r' => ['g8', "reload inputrc"], + '^u' => \'^_', + '^x' => ['g2 v21', "swap cursor\neXchange"], # not in v2.0 + '^v' => ['g1 xbash', "shell version"], + '^?' => \'^x^h', }, }, } diff --git a/keyboard/screen.eng.inc.pl b/keyboard/screen.eng.inc.pl index 893adf3..ce56357 100644 --- a/keyboard/screen.eng.inc.pl +++ b/keyboard/screen.eng.inc.pl @@ -10,66 +10,6 @@ description => [ ], keywords => [qw' screen terminal window manager '], -key => { - 'a' => "literal a", - 'A' => "title", # title - '^a'=> "last", - 'b' => "send break", # break - 'B' => "reopen break", # pow_break - 'c' => "new", # screen - 'C' => "clear", # clear - 'd' => "detach", # detach - 'D' => "detach logout", # pow_detach - 'f' => "flow", # flow - 'F' => "fit", - '^g'=> "vbell", # vbell - 'h' => "hard<>copy", # hardcopy - 'H' => "log", # log - 'i' => "prop<>erties", # info - 'I' => "login on", #XXX - '^i'=> "focus", # focus - 'k' => "kill", # kill - 'l' => "redraw", # redisplay - 'L' => "login", # login - 'm' => "last msg", # lastmsg - 'M' => "moni<>tor", # monitor - 'n' => "next", # next - 'N' => "number", # number - 'O' => "login off", #XXX - '^o'=> "other", # other - 'p' => "previous", # prev - 'q' => "xon", # xon - 'Q' => "only", # only - 'r' => "wrap", # wrap - 's' => 'xoff', # xoff - 't' => "time", # time - 'v' => "version", - '^v'=> "digraph", # digraph - 'w' => "windows", # windows - 'W' => "width", # width - 'x' => "lock screen", # lockscreen - 'X' => "remove", # remove - 'z' => "suspend", # suspend - 'Z' => "reset", - - "'" => "select", # select - '"' => "window<>list -b", # windowlist -b - ':' => "colon", # colon - "\e"=> "copy", # copy - '^]'=> "paste .", # paste . - '|' => "split vert", # split -v - '{' => "history", # history - '}' => "history", # history - '=' => "remove buf<>fer", # removebuf - '*' => "displays", # displays - '.' => "dump<>termcap", # dumptermcap - ',' => "license", # license - '-' => "select -", # select - - '_' => "silence", # silence - '>' => "writebuf", # writebuf - '<' => "readbuf", # readbuf -}, - mode => { '' => 'index', }, @@ -89,85 +29,85 @@ flag => { def => { '' => { - 'a' => 'g7', - 'A' => 'g9 args', # title - '^a'=> 'g3', - 'b' => 'g7', # break - 'B' => 'g7', # pow_break - '^b'=> '=b', - 'c' => 'g9', # screen - 'C' => 'g2', # clear - '^c'=> '=c', - 'd' => 'g9', # detach - 'D' => 'g9', # pow_detach - '^d'=> '=d', - 'f' => 'g4', # flow - 'F' => 'g4', - '^f'=> '=f', - '^g'=> 'g4', # vbell - 'h' => 'g6', # hardcopy - 'H' => 'g5', # log - '^h'=> '=^p', - 'i' => 'g1', # info - 'I' => 'g5', #XXX - '^i'=> 'g2', # focus - 'k' => 'g5', # kill - 'K' => '=k', - 'l' => 'g2', # redisplay - 'L' => 'g5', # login - '^l'=> '=l', - 'm' => 'g1', # lastmsg - 'M' => 'g5', # monitor - '^m'=> '=m', - 'n' => 'g3', # next - 'N' => 'g1', # number - '^n'=> '=n', - 'O' => 'g5', #XXX - '^o'=> 'g3', # other - 'p' => 'g3', # prev - '^p'=> '=p', - 'q' => 'g4', # xon - 'Q' => 'g2', # only - '^q'=> '=q', - 'r' => 'g4', # wrap - '^r'=> '=r', - 's' => 'g4', # xoff - '^s'=> '=s', - 't' => 'g1', # time - '^t'=> '=t', - 'v' => 'g1', - '^v'=> 'g7 arg arg linkdigraphs', # digraph - 'w' => 'g1', # windows - 'W' => 'g4', # width - '^w'=> '=w', - 'x' => 'g9', # lockscreen - 'X' => 'g2', # remove - '^x'=> '=x', - 'z' => 'g9', # suspend - 'Z' => 'g9', - '^z'=> '=z', + 'a' => ['g7', "literal a"], + 'A' => ['g9 args', "title"], # title + '^a'=> ['g3', "last"], + 'b' => ['g7', "send break"], # break + 'B' => ['g7', "reopen break"], # pow_break + '^b'=> \'b', + 'c' => ['g9', "new"], # screen + 'C' => ['g2', "clear"], # clear + '^c'=> \'c', + 'd' => ['g9', "detach"], # detach + 'D' => ['g9', "detach logout"], # pow_detach + '^d'=> \'d', + 'f' => ['g4', "flow"], # flow + 'F' => ['g4', "fit"], + '^f'=> \'f', + '^g'=> ['g4', "vbell"], # vbell + 'h' => ['g6', "hard<>copy"], # hardcopy + 'H' => ['g5', "log"], # log + '^h'=> \'^p', + 'i' => ['g1', "prop<>erties"], # info + 'I' => ['g5', "login on"], #XXX + '^i'=> ['g2', "focus"], # focus + 'k' => ['g5', "kill"], # kill + 'K' => \'k', + 'l' => ['g2', "redraw"], # redisplay + 'L' => ['g5', "login"], # login + '^l'=> \'l', + 'm' => ['g1', "last msg"], # lastmsg + 'M' => ['g5', "moni<>tor"], # monitor + '^m'=> \'m', + 'n' => ['g3', "next"], # next + 'N' => ['g1', "number"], # number + '^n'=> \'n', + 'O' => ['g5', "login off"], #XXX + '^o'=> ['g3', "other"], # other + 'p' => ['g3', "previous"], # prev + '^p'=> \'p', + 'q' => ['g4', "xon"], # xon + 'Q' => ['g2', "only"], # only + '^q'=> \'q', + 'r' => ['g4', "wrap"], # wrap + '^r'=> \'r', + 's' => ['g4', 'xoff'], # xoff + '^s'=> \'s', + 't' => ['g1', "time"], # time + '^t'=> \'t', + 'v' => ['g1', "version"], + '^v'=> ['g7 arg arg linkdigraphs', "digraph"], # digraph + 'w' => ['g1', "windows"], # windows + 'W' => ['g4', "width"], # width + '^w'=> \'w', + 'x' => ['g9', "lock screen"], # lockscreen + 'X' => ['g2', "remove"], # remove + '^x'=> \'x', + 'z' => ['g9', "suspend"], # suspend + 'Z' => ['g9', "reset"], + '^z'=> \'z', - "'" => 'g3 arg', # select - '"' => 'g3', # windowlist -b - ':' => 'g4', # colon - "\e"=> 'g6', # copy - '[' => '=^[', - '^['=> "=\e", - '^]'=> 'g7', # paste . - ']' => '=^]', - '|' => 'g2', # split -v - '{' => 'g7', # history - '}' => 'g7', # history - '=' => 'g6', # removebuf - '^?'=> '=^h', - '*' => 'g1', # displays - '.' => 'g9', # dumptermcap - ',' => 'g1', # license - '-' => 'g3', # select - - '_' => 'g5', # silence - '>' => 'g6', # writebuf - '<' => 'g6', # readbuf - '^@'=> '=n', + "'" => ['g3 arg', "select"], # select + '"' => ['g3', "window<>list -b"], # windowlist -b + ':' => ['g4', "colon"], # colon + "\e"=> ['g6', "copy"], # copy + '[' => \'^[', + '^['=> \"\e", + '^]'=> ['g7', "paste ."], # paste . + ']' => \'^]', + '|' => ['g2', "split vert"], # split -v + '{' => ['g7', "history"], # history + '}' => ['g7', "history"], # history + '=' => ['g6', "remove buf<>fer"], # removebuf + '^?'=> \'^h', + '*' => ['g1', "displays"], # displays + '.' => ['g9', "dump<>termcap"], # dumptermcap + ',' => ['g1', "license"], # license + '-' => ['g3', "select -"], # select - + '_' => ['g5', "silence"], # silence + '>' => ['g6', "writebuf"], # writebuf + '<' => ['g6', "readbuf"], # readbuf + '^@'=> \'n', }, }, } diff --git a/keyboard/vi.eng.inc.pl b/keyboard/vi.eng.inc.pl index 58ac2f3..1a904c6 100644 --- a/keyboard/vi.eng.inc.pl +++ b/keyboard/vi.eng.inc.pl @@ -8,552 +8,13 @@ my @motions = qw( { title => 'vi/vim', -version => 1.5, +version => 1.6, description => [ "Interactive cheat sheet for vi text editors, notably Vim,", "describing each key in various modes.", ], keywords => [qw' vi vim nvi '], -key => { - - "\e"=> "normal mode", - '~' => "case toggle", - '!' => "filt<>er lines", - '@' => "play macro", - '#' => "rev. find word", - '$' => "eol", - '%' => "goto match", - '^' => '"soft" bol', - '&' => ":s rep<>eat", - '*' => "find word", - '(' => "begin senten<>ce", - ')' => "end senten<>ce", - '_' => '"soft" bol down', - '+' => "next line", - '`' => "goto mark", - '0' => '"hard" bol', - '^^'=> "edit alt. file", - '-' => "prev line", - '=' => "re<>ind<>ent", - '?' => "find rev.", - ';' => "repeat t/f/T/F", - ':' => "ex cmd line", - "'" => "goto mark bol", - '"' => "use reg<>ister", - '\\' => "reser<>ved", - '^\\' => "to mode/<>ext<>ens<>ion<>s", - ',' => "reverse t/T/f/F", - '<' => "un<>ind<>ent", - '.' => "repeat last cmd", - '>' => "ind<>ent", - '/' => "find", - '[' => "move back<>ward<>s", - '{' => "begin parag.", - ']' => "move forw<>ard", - '}' => "end parag.", - '^]'=> "go to tag", - '|' => "goto (1st) col", - - 'a' => "app<>end", - 'A' => "app<>end to eol", - '^a'=> "incr<>ement\nAdd one", - 'b' => "prev word\nBack", - 'B' => 'prev word', - '^b'=> "page up", - 'c' => "chan<>ge", - 'C' => "chan<>ge to eol", - '^c'=> "abort", - 'd' => "del<>ete", - 'D' => "delete to eol", - '^d'=> "scroll down", - 'e' => "end word", - 'E' => 'end word', - '^e'=> "window down\nExtra line", - 'f' => "fwd to char", - 'F' => "back<>wd to char", - '^f'=> "page down\npage Forward", - 'g' => "extra cmds", - 'G' => "eof/<>goto ln", - '^g'=> ":file (info)", - 'h' => "", - 'H' => "screen top\nHome row", - 'i' => "insert mode", - 'I' => "insert at bol", - '^i'=> "jump to newer\nIncrease position", - 'j' => "", - 'J' => "join lines", - 'k' => "", - 'K' => "help\nlooKup Keyword", - 'l' => "", - 'L' => "screen bottom\nLowermost Line", - '^l'=> "redraw", - 'm' => "set mark", - 'M' => "screen mid<>dle", - 'n' => "next find", - 'N' => "prev find", - 'o' => "line below\nOpen", - 'O' => "line above", - '^o'=> "jump to older", - 'p' => "paste after", - 'P' => "paste before", - 'q' => "rec<>ord macro\nQueue seQuence", - 'Q' => "ex mode", - '^q'=> "(xon)\nQome back", - 'r' => "repl<>ace char", - 'R' => "repl<>ace mode", - '^r'=> "redo", - 's' => "subst char", - 'S' => "subst line", - '^s'=> "(xoff)\nStop", - '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 word', - '^w'=> "win<>dow cmds", - 'x' => "delete char", - 'X' => "back<>space", - '^x'=> "subs<>tract", - 'y' => "yank\n(copy)", - 'Y' => "yank line", - '^y'=> "window up\nYield", - 'z' => "extra cmds", - 'Z' => "quit", - '^z'=> ":sus<>pend\nzzz (as in sleep)", - - 'g~' => "case toggl<>e", - 'g@' => "oper<>at<>or<>func", - 'g#' => "rev. find string", - 'g$' => "virt<>ual eol", - 'g^' => qq'"soft" bol v<>irt<>ual', - 'g&' => ":s rep<>eat glob<>al<>ly\nGlobal substitute", - 'g*' => "find string", - 'g_' => qq'"soft" eol', - 'g+' => "later undo", - 'g`' => "to mark keepj<>umps", - 'g8' => "char hex val<>ue<>s", - 'g0' => "virtual bol", - 'g-' => "earlier undo", - "g\e"=> "normal mode", - 'g]' => "go to tselect", - 'g^]'=> "go to tjump", - 'g;' => "to prev change pos", - "g'" => "to mark keepj<>umps", - 'g<' => "see prev cmd output", - 'g?' => "rot13 encode", - 'g,' => "to next change pos", - - 'ga' => "char value\nGet Ascii value", - 'g^a'=> "mem usage stats", - 'gd' => "local declar<>ation", - 'gD' => "global declar<>ation", - 'ge' => "back to word end", - 'gE' => qq'back to word end', - 'gf' => "edit file at cur<>sor\nGoto File", - 'gF' => "edit file + jump", - 'gg' => "first line", - 'g^g'=> "cur<>sor pos info", - 'gh' => "select mode\nGet Highlighted", - 'gH' => "select lines\nGet Highlighted", - 'g^h'=> "select block\nGet Highlighted", - 'gi' => "insert at last pos", - 'gI' => "insert at soft bol", - 'gj' => " screen", - 'gJ' => "join leave spac<>ing", - 'gk' => " screen", - 'gm' => "cen<>ter screen", - 'gn' => "select next find", - 'gN' => "select prev find", - 'go' => ":goto (byte)", - 'gp' => "paste still", - 'gP' => "paste before still", - 'gq' => "for<>mat", - 'gQ' => "ex mode manual :", - 'gr' => "virt. repl<>ace char", - 'gR' => "virt. repl<>ace mode", - 'gs' => "sleep\nGo to Sleep", - 'gt' => "next tab\nGoto Tab", - 'gT' => "tab back", - 'gu' => "lower<>case", - 'gU' => "up<>per<>case", - 'gv' => "prev<>ious highl<>ight\nprecedinG Visual", - 'gV' => "avoid resel<>ect<>ion", - 'gw' => "for<>mat still", - 'gx' => "Netrw<>BrowseX", - - "Z\e"=> "normal mode", - 'ZQ' => " :q! (force)", - 'ZZ' => " :wq (write)", - - 'z^' => "page above", - 'z+' => "page below", - 'z-' => "line at bottom bol\ndon't (-) see any further", - 'z=' => "sug<>gest spell<>ing", - 'z.' => "line at center bol", - "z\e"=> "normal mode", - - 'za' => "toggle fold", - 'zA' => "toggle fold rec<>urs<>ive<>ly", - 'zb' => "line at bot. bol", - 'zc' => "close fold", - 'zC' => "close folds rec<>curs<>ive<>ly", - 'zd' => "delete fold", - 'zD' => "delete folds rec<>urs<>ive", - 'ze' => "cursor at right side", - 'zE' => "elimi<>nate f<>olds", - 'zf' => "create fold", - 'zF' => "fold lines", - 'zg' => "add spell<>ing\nGood word", - 'zG' => "temp spell<>ing", - 'zh' => "scroll ", - 'zH' => "scroll half scr<>een", - 'zi' => "toggle all folds", - 'zj' => "next fold start", - 'zk' => "prev fold end", - 'zl' => "scroll ", - 'zL' => "scroll half scr<>een", - 'z^m'=> "line at top bol", - 'zm' => "fold more", - 'zM' => "close all folds", - 'zn' => "fold none", - 'zN' => "fold norm<>al", - 'zo' => "open fold", - 'zO' => "open folds rec<>urs<>ive<>ly", - 'zr' => "reduce folding", - 'zR' => "open all folds", - 'zs' => "cursor at left side", - 'zt' => "line at top", - 'zu' => "undo spell<>ing", - 'zv' => "unfold cursor line", - 'zw' => "add missp<>ell<>ing\nWrong word", - 'zW' => "temp missp<>ell<>ing", - 'zx' => "update folds", - 'zX' => "re<>apply f<>olds", - 'zz' => "line at center\nZee Zenter (with a funny accent)", - - "[`" => "previous lc mark", - '[#' => "previous open #if<>/#else", - '[(' => "previous open (", - '[/' => "start of C com<>m<>ent", - '[{' => "previous open {", - '[[' => "section back<>ward<>s", - "[\e"=> "normal mode", - '[]' => qq'section back<>ward<>s', - - '[c' => "start of change backw<>ards", - '[d' => "define line", - '[D' => "defin<>ition", - '[^d'=> "to defin<>it<>ion", - '[i' => "first occur<>renc<>e line", - '[I' => "first occur<>renc<>e", - '[^i'=> "to first occur<>renc<>e", - '[m' => "start of funct<>ion", - '[p' => "P reind<>ent<>ed", - '[s' => "last missp<>ell<>ing", - '[S' => "last bad word", - '[z' => "start of open fold", - - "]`" => "next lc mark", - ']#' => "next open #endif<>/#else", - '])' => "next open )", - ']/' => "end of C com<>m<>ent", - '][' => qq'section forw<>ard', - "]\e"=> "normal mode", - ']]' => "section forw<>ard", - ']}' => "next open }", - - ']c' => "start of change forw<>ards", - ']d' => "next define line", - ']D' => "next define", - ']^d'=> "to next define", - ']i' => "next occur<>renc<>e line", - ']I' => "next occur<>renc<>e", - ']^i'=> "to occur<>renc<>e", - ']m' => "end of funct<>ion", - ']p' => "p reind<>ent<>ed", - ']s' => "next missp<>ell<>ing", - ']S' => "next bad word", - ']z' => "end of open fold", - - '^w<' => "width decr<>ease", - '^w>' => "width incr<>ease", - '^w^' => "split, edit alt file", - '^w_' => "set height", - '^w+' => "height incr<>ease", - '^w-' => "height decr<>ease", - '^w=' => "same height", - "^w\e"=> "normal mode", - '^w]' => "split, to tag", - '^w}' => "pre<>view tag", - '^w|' => "set width", - - '^wb' => "go to bot<>tom", - '^wc' => ":close", - '^w^c'=> "abort", - '^wd' => "split, to def<>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<>ent<>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<>ious", - '^wP' => "go to pre<>view", - '^wq' => ":quit current", - '^wr' => "rotate down<>ward<>s", - '^wR' => "rotate up<>ward<>s", - '^ws' => "split horiz<>ont<>al<>ly", - '^wt' => "go to top", - '^wT' => "to tab", - '^wv' => "split vert<>ic<>al<>ly", - '^ww' => "go to next\nWrap around", - '^wW' => "go above<>/left", - '^wx' => "ex<>chan<>ge", - '^wz' => "close pre<>view", - - "^wg\e"=> "normal mode", - '^wg]' => "split, :ts<>elect", - '^wg}' => ":ptj<>ump to tag", - '^wg^]'=> "split, :tj<>ump", - '^wgf' => "file in tab", - '^wgF' => "^wgf, to line<>nr", - - 'v!' => "external filter", - 'v:' => "cmd on range", - 'v<' => "un<>indent", - 'v=' => "re<>ind<>ent", - 'v>' => "ind<>ent", - 'v~' => "toggle case", - "v\e"=> "normal mode", - 'v^]'=> "jump to tag", - - 'va' => "ex<>tend area", - 'vA' => "ap<>pend to block", # block - 'v^a'=> "incr<>ement num<>bers", - 'vc' => "repl<>ace area", - 'vC' => "repl<>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", - 'vi' => "extend inner a<>r<>ea", - 'vI' => "insert to block", # block - 'vJ' => "join lines", - 'vK' => "help sel<>ect<>ion", - 'vo' => "to other corner", - 'vO' => "to other side", - 'v^o'=> "visual once", # select - 'vp' => "repl<>ace w/ paste", - 'vP' => "repl<>ace w/ paste", - 'vr' => "fill up w/ ch<>ar", - 'vS' => "repl<>ace lines", - 'vu' => "lower<>case", - 'vU' => "upper<>case", - 'vv' => "char<>wise", - 'vV' => "line<>wise", - 'v^v'=> "block<>wise", - 'v^x'=> "decr<>ement num<>bers", - 'vy' => "yank area", - 'vY' => "yank lines", - - "vg\e"=> "visual mode", - 'vg?' => "rot13 encode", - 'vg^a'=> "seq. incr<>ement", - 'vg^g'=> "count region info", - 'vgJ' => "join literal<>ly", - 'vgq' => "for<>mat", - 'vgw' => "for<>mat still", - 'vg^x'=> "seq. decr<>ement", - - "va'" => "quoted string", - 'va<' => "<> block", - 'va[' => "[] block", - "va\e"=> "visual mode", - - 'vab' => "() block", - 'vaB' => "{} Block", - 'vap' => "para<>graph", - 'vas' => "senten<>ce", - 'vat' => "xml tag block", - 'vaw' => "word", - 'vaW' => 'word', - -# '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<>tion to clip<>b<>oard", - - 'i^@' => "last insert", - 'i^^' => "toggle :lmap usag<>e", - "i\e" => "normal mode", - 'i^]' => "abbrev<>iate", - 'i^_' => "toggle lang<>uage", - - 'i^a' => "insert prev<>ious", - 'i^b' => "former i^_", - 'i^c' => "abort, no abbr", - 'i^d' => "un<>ind<>ent", - 'i^e' => "ins char below", - 'i^f' => "set indent<>ation", - 'i^g' => "extra cmds", - 'i^h' => "back<>space", - 'i^i' => "tab", - 'i^j' => "enter", - 'i^k' => "di<>graph\nKey code", - 'i^l' => "im leave ins mode", - 'i^m' => "enter", - 'i^n' => "find next keyword", - 'i^o' => "exec<>ute cmd", - 'i^p' => "find prev keyword", - 'i^r' => "insert reg<>ister", - 'i^t' => "indent", - 'i^u' => "delete line", - 'i^v' => "literal or ch<>ar<>cod<>e\nVerbatim or by Value", - 'i^w' => "delete word back", - 'i^x' => "ex<>pand mode", - 'i^y' => "ins char above", - 'i^z' => ":sus<>pend in im", - - "i^g\e"=> "insert mode", - 'i^gk' => " start col<>umn", - 'i^gj' => " start col<>umn", - 'i^gu' => "break undo seq<>uence", - 'i^gU' => "keep undo seq<>uence", - # other i^g keys (even esc) are not recognized - - "i^x\e" => "normal mode", - 'i^x^]' => "tag comp<>l<>et<>e", - 'i^x^d' => "def<>ine compl<>et<>e", - 'i^x^e' => "window up", - 'i^x^f' => "file comp<>l<>et<>e", - 'i^x^i' => "ident comp<>l<>et<>e", - 'i^x^k' => "dict comp<>l<>et<>e", - 'i^x^l' => "line comp<>l<>et<>e", - 'i^x^n' => "next comp<>l<>et<>e", - 'i^x^o' => "omni comp<>l<>et<>e", - 'i^x^p' => "prev comp<>l<>ete", - 'i^x^s' => "spell sugg<>est", - 'i^x^t' => "thes<>aur<>us compl<>et<>e", - 'i^x^u' => "cus<>tom comp<>l<>et<>e", - 'i^x^v' => "ex cmd compl<>et<>e", - 'i^x^y' => "window down", - - # plugins - 'gc' => "(un)<>com<>ment\ncommentary or tComment plugin", - 'vgc' => "(un)<>com<>ment\ncommentary or tComment plugin", - 'gl' => "align to left\nlion plugin, also good for easy-align", - 'vgl' => "align to left\nlion plugin, also good for easy-align", - 'gL' => "align to right\nlion plugin", - 'vgL' => "align to right\nlion plugin", - 'i^gs' => "sur<>round\nsurround plugin", - - # unimpaired - '[a' => "prev<>ious file\nunimpaired map for :prev", - ']a' => "next file\nunimpaired map for :n", - '[A' => "first file\nunimpaired map for :rew", - ']A' => "last file\nunimpaired map for :la", - '[b' => "prev<>ious buffer\nunimpaired map for :bp", - ']b' => "next buffer\nunimpaired map for :bn", - '[B' => "first buffer\nunimpaired map for :br", - ']B' => "last buffer\nunimpaired map for :bl", - '[e' => "exchange line above\nunimpaired plugin", - ']e' => "exchange line belo<>w\nunimpaired plugin", - '[f' => "preced<>ing file alph<>abet<>ic<>al<>ly\nunimpaired plugin", - ']f' => "next file alph<>abet<>ic<>al<>ly\nunimpaired plugin", - '[l' => "previous loc<>at<>ion\nunimpaired map for :lp", - ']l' => "next loc<>ation\nunimpaired map for :lne", - '[L' => "first loc<>ation\nunimpaired map for :lr", - ']L' => "last loc<>ation\nunimpaired map for :lla", - '[^l'=> "next file in loc<>at<>ions\nunimpaired map for :lpf", - ']^l'=> "file back in loc<>at<>ions\nunimpaired map for :lnf", - '[n' => "previous conflict<>/hunk\nunimpaired plugin", - ']n' => "next confl<>ict<>/hunk\nunimpaired plugin", - '[o' => "enable option\nunimpaired plugin", - ']o' => "disable option\nunimpaired plugin", - 'yo' => "toggle option\nunimpaired plugin", - '[q' => "previous quickfix\nunimpaired map for :cp", - ']q' => "next quickfix error\nunimpaired map for :cn", - '[Q' => "first quickfix\nunimpaired map for :cr", - ']Q' => "last quickfix error\nunimpaired map for :cla", - '[^q'=> "quickfix file b<>ack\nunimpaired map for :cpf", - ']^q'=> "next file in q<>uick<>f<>ix\nunimpaired map for :cnf", - '[t' => "previous tag\nunimpaired map for :tp", - ']t' => "next tag\nunimpaired map for :tn", - '[T' => "first tag\nunimpaired map for :tr", - ']T' => "last tag\nunimpaired map for :tl", - '[u' => "url encode\nunimpaired plugin", - ']u' => "url decode\nunimpaired plugin", - '[x' => "xml encode\nunimpaired plugin", - ']x' => "xml decode\nunimpaired plugin", - '[y' => "escape c str<>ing\nunimpaired plugin", - ']y' => "unescap<>e c str<>ing\nunimpaired plugin", - - (map { ("d$_" => "delete to $_") } qw( g z [ ] )), - 'dW' => 'delete word', - 'db' => 'delete word', - 'dB' => 'delete word', - 'de' => 'delete word e<>nd', - 'dE' => 'delete word e<>nd', - 'df' => 'delete to char<>acter', - 'dF' => 'delete to char<>acter', - 'dG' => 'delete to line<>/eof', - 'dH' => 'delete to top', - 'dj' => 'delete line', - 'dk' => 'delete line', - 'dL' => 'delete to bottom', - 'dM' => 'delete to middle', - 'dn' => 'delete to next res<>ult', - 'dN' => 'delete to prev res<>ult', - 'dt' => 'delete upto ch<>ar<>acter', - 'dT' => 'delete upto ch<>ar<>acter', - 'dw' => 'delete word', - 'd,' => 'delete to prev ch<>ar<>acter', - 'd;' => 'delete to next ch<>ar<>acter', - 'd/' => 'delete to res<>ult', - 'd?' => 'delete to res<>ult', - 'd`' => 'delete to mark', - "d'" => 'delete lines to m<>ark', - 'd*' => 'delete to find', - 'd#' => 'delete to find', - 'd%' => 'delete to line pct', - 'd^' => 'delete to soft bol', - 'd0' => 'delete to bol', - 'd|' => 'delete to col<>umn', - 'd{' => 'delete par<>agr<>aph', - 'd}' => 'delete rest of p<>ar<>agr<>aph', - 'd(' => 'delete senten<>ce', - 'd)' => 'delete rest of s<>en<>ten<>ce', - 'da' => 'delete area', - 'di' => 'delete inner', - 'dd' => 'delete line', - 'do' => 'diff obtain', - 'dp' => 'diff put', - 'ds' => 'delete surr<>oun<>d<>ing', -}, - mode => { '' => "normal mode", g => "extended commands (g)", @@ -591,650 +52,699 @@ flag => { def => { '' => { - '~' => "g4 undo", - '!' => "g4 argm undo modec", - '@' => "g4 arg undo", - '#' => "g2 v6", - '$' => "g2", - '%' => "g2", - '^' => "g2", - '&' => "g4 undo", - '*' => "g2 v6", - '(' => 'g2', - ')' => 'g2', - '_' => "g2", - '+' => "g2", - '`' => "g2 arg", - '0' => "g2", - '^^'=> "g4", - '-' => "g2", - '=' => 'g4 argm undo', - '?' => "g2 arg modec", - ';' => "g2", - ':' => "g4 modec", - "'" => "g2 arg", - '"' => 'g4 arg', - '\\' => 'g9 arg', - '^\\' => "g7 arg", - ',' => "g2", - '<' => "g4 argm undo", - '.' => "g4 undo", - '>' => "g4 argm undo", - '/' => "g2 arg modec", - '[' => "g9 arg mode[", - '{' => "g2", - ']' => "g9 arg mode]", - '}' => "g2", - '^]'=> "g3", - '|' => "g2", - - 'a' => "g6 undo modei", - 'A' => "g6 undo modei", - '^a'=> "g4 undo", - 'b' => "g2", - 'B' => "g2", - '^b'=> "g3", - 'c' => "g6 argm undo modei", - 'C' => "g6 undo modei", - '^c'=> "g4", - 'd' => "g4 argm undo moded", - 'D' => "g4 undo", - '^d'=> "g3", - 'e' => "g2", - 'E' => "g2", - '^e'=> "g3", - 'f' => "g2 arg", - 'F' => "g2 arg", - '^f'=> "g3", - 'g' => "g9 arg modeg", - 'G' => "g2", - '^g'=> "g1", - 'h' => "g2", - 'H' => "g2", - '^h'=> "=h", - 'i' => "g6 undo modei", - 'I' => "g6 undo modei", - '^i'=> "g2 v6", - 'j' => "g2", - 'J' => "g4 undo", - '^j'=> "=j", - 'k' => "g2", - 'K' => "g4", - 'l' => "g2", - 'L' => "g2", - '^l'=> "g1", - 'm' => "g4 arg", - 'M' => "g2", - '^m'=> "=+", - 'n' => "g2", - 'N' => "g2", - '^n'=> "=j", - 'o' => "g6 undo modei", - 'O' => "g6 undo modei", - '^o'=> "g2 v6", - 'p' => "g4 undo", - 'P' => "g4 undo", - '^p'=> "=k", - 'q' => "g7 arg", - 'Q' => "g7", - '^q'=> "g1", # or ^v - 'r' => "g4 arg undo", - 'R' => "g6 undo modei", - '^r'=> "g4 undo v6", - 's' => "g6 undo modei", - 'S' => "g6 undo modei", - '^s'=> "g1", - 't' => "g2 arg", - 'T' => "g2 arg", - '^t'=> "g3", - 'u' => "g4 undo", - 'U' => "g4 undo", - '^u'=> "g3", - 'v' => "g8 modev", - 'V' => "g8 modev", - '^v'=> "g8 modev v6", - 'w' => "g2", - 'W' => "g2", - '^w'=> "g9 arg mode^w", - 'x' => "g4 undo", - 'X' => "g4 undo", - '^x'=> "g4 undo", - 'y' => "g4 argm", - 'Y' => "g4", - '^y'=> "g3", - 'z' => "g9 arg modez", - 'Z' => "g9 arg modeZ", - '^z'=> "g1", + '~' => ["g4 undo", "case toggle"], + '!' => ["g4 argm undo modec", "filt<>er lines"], + '@' => ["g4 arg undo", "play macro"], + '#' => ["g2 v6", "rev. find word"], + '$' => ["g2", "eol"], + '%' => ["g2", "goto match"], + '^' => ["g2", '"soft" bol'], + '&' => ["g4 undo", ":s rep<>eat"], + '*' => ["g2 v6", "find word"], + '(' => ['g2', "begin senten<>ce"], + ')' => ['g2', "end senten<>ce"], + '_' => ["g2", '"soft" bol down'], + '+' => ["g2", "next line"], + '`' => ["g2 arg", "goto mark"], + '0' => ["g2", '"hard" bol'], + '^^'=> ["g4", "edit alt. file"], + '-' => ["g2", "prev line"], + '=' => ['g4 argm undo', "re<>ind<>ent"], + '?' => ["g2 arg modec", "find rev."], + ';' => ["g2", "repeat t/f/T/F"], + ':' => ["g4 modec", "ex cmd line"], + "'" => ["g2 arg", "goto mark bol"], + '"' => ['g4 arg', "use reg<>ister"], + '\\' => ['g9 arg', "reser<>ved"], + '^\\' => ["g7 arg", "to mode/<>ext<>ens<>ion<>s"], + ',' => ["g2", "reverse t/T/f/F"], + '<' => ["g4 argm undo", "un<>ind<>ent"], + '.' => ["g4 undo", "repeat last cmd"], + '>' => ["g4 argm undo", "ind<>ent"], + '/' => ["g2 arg modec", "find"], + '[' => ["g9 arg mode[", "move back<>ward<>s"], + '{' => ["g2", "begin parag."], + ']' => ["g9 arg mode]", "move forw<>ard"], + '}' => ["g2", "end parag."], + '^]'=> ["g3", "go to tag"], + '|' => ["g2", "goto (1st) col"], + + 'a' => ["g6 undo modei", "app<>end"], + 'A' => ["g6 undo modei", "app<>end to eol"], + '^a'=> ["g4 undo", "incr<>ement\nAdd one"], + 'b' => ["g2", "prev word\nBack"], + 'B' => ["g2", 'prev word'], + '^b'=> ["g3", "page up"], + 'c' => ["g6 argm undo modei", "chan<>ge"], + 'C' => ["g6 undo modei", "chan<>ge to eol"], + '^c'=> ["g4", "abort"], + 'd' => ["g4 argm undo moded", "del<>ete"], + 'D' => ["g4 undo", "delete to eol"], + '^d'=> ["g3", "scroll down"], + 'e' => ["g2", "end word"], + 'E' => ["g2", 'end word'], + '^e'=> ["g3", "window down\nExtra line"], + 'f' => ["g2 arg", "fwd to char"], + 'F' => ["g2 arg", "back<>wd to char"], + '^f'=> ["g3", "page down\npage Forward"], + 'g' => ["g9 arg modeg", "extra cmds"], + 'G' => ["g2", "eof/<>goto ln"], + '^g'=> ["g1", ":file (info)"], + 'h' => ["g2", ""], + 'H' => ["g2", "screen top\nHome row"], + '^h'=> \'h', + 'i' => ["g6 undo modei", "insert mode"], + 'I' => ["g6 undo modei", "insert at bol"], + '^i'=> ["g2 v6", "jump to newer\nIncrease position"], + 'j' => ["g2", ""], + 'J' => ["g4 undo", "join lines"], + '^j'=> \'j', + 'k' => ["g2", ""], + 'K' => ["g4", "help\nlooKup Keyword"], + 'l' => ["g2", ""], + 'L' => ["g2", "screen bottom\nLowermost Line"], + '^l'=> ["g1", "redraw"], + 'm' => ["g4 arg", "set mark"], + 'M' => ["g2", "screen mid<>dle"], + '^m'=> \'+', + 'n' => ["g2", "next find"], + 'N' => ["g2", "prev find"], + '^n'=> \'j', + 'o' => ["g6 undo modei", "line below\nOpen"], + 'O' => ["g6 undo modei", "line above"], + '^o'=> ["g2 v6", "jump to older"], + 'p' => ["g4 undo", "paste after"], + 'P' => ["g4 undo", "paste before"], + '^p'=> \'k', + 'q' => ["g7 arg", "rec<>ord macro\nQueue seQuence"], + 'Q' => ["g7", "ex mode"], + '^q'=> ["g1", "(xon)\nQome back"], # or ^v + 'r' => ["g4 arg undo", "repl<>ace char"], + 'R' => ["g6 undo modei", "repl<>ace mode"], + '^r'=> ["g4 undo v6", "redo"], + 's' => ["g6 undo modei", "subst char"], + 'S' => ["g6 undo modei", "subst line"], + '^s'=> ["g1", "(xoff)\nStop"], + 't' => ["g2 arg", "till char"], + 'T' => ["g2 arg", "back till char"], + '^t'=> ["g3", "back tag"], # backtrag :P + 'u' => ["g4 undo", "undo"], + 'U' => ["g4 undo", "undo line"], + '^u'=> ["g3", "scroll up"], + 'v' => ["g8 modev", "visual mode"], + 'V' => ["g8 modev", "visual lines"], + '^v'=> ["g8 modev v6", "visual block"], + 'w' => ["g2", "next word"], + 'W' => ["g2", 'next word'], + '^w'=> ["g9 arg mode^w", "win<>dow cmds"], + 'x' => ["g4 undo", "delete char"], + 'X' => ["g4 undo", "back<>space"], + '^x'=> ["g4 undo", "subs<>tract"], + 'y' => ["g4 argm", "yank\n(copy)"], + 'Y' => ["g4", "yank line"], + '^y'=> ["g3", "window up\nYield"], + 'z' => ["g9 arg modez", "extra cmds"], + 'Z' => ["g9 arg modeZ", "quit"], + '^z'=> ["g1", ":sus<>pend\nzzz (as in sleep)"], }, # normal mode g => { lead => "g", - "\e"=> "g7 mode", - - '~' => "g4 argm v6", - '@' => "g4 v7", - '#' => "g2 v6", - '$' => "g2", - '^' => "g2 v6", - '&' => "g4", - '*' => "g2 v6", - '_' => "g2 v6", - '+' => "g4 v7", - '`' => "g2 v6 arg", - '8' => "g1", - '0' => "g2 v6", - '-' => "g4 v7", - '^['=> "g7 mode", - ']' => "g3", - '^]'=> "g3", - ';' => "g2", - "'" => "g2 v6 arg", - '<' => "g4 v7", - '?' => "g4 argm v6", - ',' => "g2", - - 'a' => "g1", - '^a'=> "g1", - 'c' => 'g4 argm xcommentary', - 'd' => "g2 v6", - 'D' => "g2 v6", - 'e' => "g2", - 'E' => "g2", - 'f' => "g4 v6", - 'F' => "g4 v7", - 'g' => "g2", - '^g'=> "g1 vim6", - 'h' => "g8 modev", - 'H' => "g8 modev", - '^h'=> "g8 modev v6", - 'i' => "g6 undo modei", - 'I' => "g6 undo modei", - 'j' => "g2 v6", - 'J' => "g4", - 'k' => "g2 v6", - 'l' => 'g3 argm arg xlion', - 'L' => 'g3 argm arg xlion', - 'm' => "g2 v6", - 'n' => "g8 v7 modev", - 'N' => "g8 v7 modev", - 'o' => "g2", - 'p' => "g4 undo", - 'P' => "g4", - 'q' => "g4 argm", - 'Q' => "g7 v6", - 'r' => "g4 arg", - 'R' => "g6 undo modei", - 's' => "g1 v6", - 't' => "g3 v7", - 'T' => "g3 v7", - 'u' => "g4 argm v6", # XXX undo? - 'U' => "g4 undo argm v6", - 'v' => 'g8 modev', - 'V' => "g4", - 'w' => "g4 argm v7", - 'x' => "g4 v7 ext", + "\e"=> ["g7 mode", "normal mode"], + + '~' => ["g4 argm v6", "case toggl<>e"], + '@' => ["g4 v7", "oper<>at<>or<>func"], + '#' => ["g2 v6", "rev. find string"], + '$' => ["g2", "virt<>ual eol"], + '^' => ["g2 v6", qq'"soft" bol v<>irt<>ual'], + '&' => ["g4", ":s rep<>eat glob<>al<>ly\nGlobal substitute"], + '*' => ["g2 v6", "find string"], + '_' => ["g2 v6", qq'"soft" eol'], + '+' => ["g4 v7", "later undo"], + '`' => ["g2 v6 arg", "to mark keepj<>umps"], + '8' => ["g1", "char hex val<>ue<>s"], + '0' => ["g2 v6", "virtual bol"], + '-' => ["g4 v7", "earlier undo"], + '^['=> ["g7 mode"], + ']' => ["g3", "go to tselect"], + '^]'=> ["g3", "go to tjump"], + ';' => ["g2", "to prev change pos"], + "'" => ["g2 v6 arg", "to mark keepj<>umps"], + '<' => ["g4 v7", "see prev cmd output"], + '?' => ["g4 argm v6", "rot13 encode"], + ',' => ["g2", "to next change pos"], + + 'a' => ["g1", "char value\nGet Ascii value"], + '^a'=> ["g1", "mem usage stats"], + 'd' => ["g2 v6", "local declar<>ation"], + 'D' => ["g2 v6", "global declar<>ation"], + 'e' => ["g2", "back to word end"], + 'E' => ["g2", qq'back to word end'], + 'f' => ["g4 v6", "edit file at cur<>sor\nGoto File"], + 'F' => ["g4 v7", "edit file + jump"], + 'g' => ["g2", "first line"], + '^g'=> ["g1 vim6", "cur<>sor pos info"], + 'h' => ["g8 modev", "select mode\nGet Highlighted"], + 'H' => ["g8 modev", "select lines\nGet Highlighted"], + '^h'=> ["g8 modev v6", "select block\nGet Highlighted"], + 'i' => ["g6 undo modei", "insert at last pos"], + 'I' => ["g6 undo modei", "insert at soft bol"], + 'j' => ["g2 v6", " screen"], + 'J' => ["g4", "join leave spac<>ing"], + 'k' => ["g2 v6", " screen"], + 'm' => ["g2 v6", "cen<>ter screen"], + 'n' => ["g8 v7 modev", "select next find"], + 'N' => ["g8 v7 modev", "select prev find"], + 'o' => ["g2", ":goto (byte)"], + 'p' => ["g4 undo", "paste still"], + 'P' => ["g4", "paste before still"], + 'q' => ["g4 argm", "for<>mat"], + 'Q' => ["g7 v6", "ex mode manual :"], + 'r' => ["g4 arg", "virt. repl<>ace char"], + 'R' => ["g6 undo modei", "virt. repl<>ace mode"], + 's' => ["g1 v6", "sleep\nGo to Sleep"], + 't' => ["g3 v7", "next tab\nGoto Tab"], + 'T' => ["g3 v7", "tab back"], + 'u' => ["g4 argm v6", "lower<>case"], # XXX undo? + 'U' => ["g4 undo argm v6", "up<>per<>case"], + 'v' => ['g8 modev', "prev<>ious highl<>ight\nprecedinG Visual"], + 'V' => ["g4", "avoid resel<>ect<>ion"], + 'w' => ["g4 argm v7", "for<>mat still"], + 'x' => ["g4 v7 ext", "Netrw<>BrowseX"], + + # plugins + 'c' => ['g4 argm xcommentary', "(un)<>com<>ment\ncommentary or tComment plugin"], + 'l' => ['g3 argm arg xlion', "align to left\nlion plugin, also good for easy-align"], + 'L' => ['g3 argm arg xlion', "align to right\nlion plugin"], }, # mode g Z => { lead => "Z", - "\e"=> "g7 mode", - '^['=> "=\e", + "\e"=> ["g7 mode", "normal mode"], + '^['=> \"Z\e", - 'Q' => "g4 v6", - 'Z' => "g4", + 'Q' => ["g4 v6", " :q! (force)"], + 'Z' => ["g4", " :wq (write)"], }, # mode Z z => { lead => "z", - "\e"=> "g7 mode", - - '^' => "g3", - '+' => "g3", - '-' => "g3", - '=' => "g4 v7", - '.' => "g3", - '^['=> "=\e", - - 'a' => "g4 v6 folding", - 'A' => "g4 v6 folding", - 'b' => "g3", - 'c' => "g4 v6 folding", - 'C' => "g4 v6 folding", - 'd' => "g4 v6 folding", - 'D' => "g4 v6 folding", - 'e' => "g3", - 'E' => "g4 v6 folding", - 'f' => "g4 argm v6 folding", - 'F' => "g4 v6 folding", - 'g' => "g4 v7", - 'G' => "g4 v7", - 'h' => "g3", - 'H' => "g3", - 'i' => "g4 v6 folding", - 'j' => "g2 v6 folding", - 'k' => "g2 v6 folding", - 'l' => "g3", - 'L' => "g3", - '^m'=> "g3", - 'm' => "g4 v6 folding", - 'M' => "g4 v6 folding", - 'n' => "g4 v6 folding", - 'N' => "g4 v6 folding", - 'o' => "g4 v6 folding", - 'O' => "g4 v6 folding", - 'r' => "g4 v6 folding", - 'R' => "g4 v6 folding", - 's' => "g3", - 't' => "g3", - 'u' => "g4 arg v7", - 'v' => "g4 v6 folding", - 'w' => "g4 v7", - 'W' => "g4 v7", - 'x' => "g4 v6 folding", - 'X' => "g4 v6 folding", - 'z' => "g3", + "\e"=> ["g7 mode", "normal mode"], + + '^' => ["g3", "page above"], + '+' => ["g3", "page below"], + '-' => ["g3", "line at bottom bol\ndon't (-) see any further"], + '=' => ["g4 v7", "sug<>gest spell<>ing"], + '.' => ["g3", "line at center bol"], + '^['=> \"z\e", + + 'a' => ["g4 v6 folding", "toggle fold"], + 'A' => ["g4 v6 folding", "toggle fold rec<>urs<>ive<>ly"], + 'b' => ["g3", "line at bot. bol"], + 'c' => ["g4 v6 folding", "close fold"], + 'C' => ["g4 v6 folding", "close folds rec<>curs<>ive<>ly"], + 'd' => ["g4 v6 folding", "delete fold"], + 'D' => ["g4 v6 folding", "delete folds rec<>urs<>ive"], + 'e' => ["g3", "cursor at right side"], + 'E' => ["g4 v6 folding", "elimi<>nate f<>olds"], + 'f' => ["g4 argm v6 folding", "create fold"], + 'F' => ["g4 v6 folding", "fold lines"], + 'g' => ["g4 v7", "add spell<>ing\nGood word"], + 'G' => ["g4 v7", "temp spell<>ing"], + 'h' => ["g3", "scroll "], + 'H' => ["g3", "scroll half scr<>een"], + 'i' => ["g4 v6 folding", "toggle all folds"], + 'j' => ["g2 v6 folding", "next fold start"], + 'k' => ["g2 v6 folding", "prev fold end"], + 'l' => ["g3", "scroll "], + 'L' => ["g3", "scroll half scr<>een"], + '^m'=> ["g3", "line at top bol"], + 'm' => ["g4 v6 folding", "fold more"], + 'M' => ["g4 v6 folding", "close all folds"], + 'n' => ["g4 v6 folding", "fold none"], + 'N' => ["g4 v6 folding", "fold norm<>al"], + 'o' => ["g4 v6 folding", "open fold"], + 'O' => ["g4 v6 folding", "open folds rec<>urs<>ive<>ly"], + 'r' => ["g4 v6 folding", "reduce folding"], + 'R' => ["g4 v6 folding", "open all folds"], + 's' => ["g3", "cursor at left side"], + 't' => ["g3", "line at top"], + 'u' => ["g4 arg v7", "undo spell<>ing"], + 'v' => ["g4 v6 folding", "unfold cursor line"], + 'w' => ["g4 v7", "add missp<>ell<>ing\nWrong word"], + 'W' => ["g4 v7", "temp missp<>ell<>ing"], + 'x' => ["g4 v6 folding", "update folds"], + 'X' => ["g4 v6 folding", "re<>apply f<>olds"], + 'z' => ["g3", "line at center\nZee Zenter (with a funny accent)"], }, # mode z '[' => { lead => "[", - "\e"=> "g7 mode", - - "`" => "g2 v6", - '#' => "g2", - '(' => "g2", - '*' => "=[/", - '/' => "g2", - "'" => "=0[`^ g2 v6", - '{' => "g2", - '[' => "g2", - '^['=> "=\e", - ']' => "g2", - - 'c' => "g2", - 'd' => "g1", - 'D' => "g4", - '^d'=> "g3", - 'f' => "=gf", # deprecated - 'i' => 'g1', - 'I' => 'g4', - '^i'=> 'g3', - 'm' => "g2", - 'p' => "g4", - 'P' => "=[p", - 's' => "g3 v7", - 'S' => "g3 v7", - 'z' => "g2 v6 folding", - - 'a' => "g3 xunimpaired", - 'A' => "g3 xunimpaired", - 'b' => "g3 xunimpaired", - 'B' => "g3 xunimpaired", - 'e' => "g4 xunimpaired", - 'l' => "g3 xunimpaired", - 'L' => "g3 xunimpaired", - '^l'=> "g3 xunimpaired", - '^l'=> "g3 xunimpaired", - 'f' => "g3 xunimpaired", # overrides native alias - 'n' => "g3 xunimpaired", - 'o' => "g9 arg xunimpaired", - 'q' => "g3 xunimpaired", - 'Q' => "g3 xunimpaired", - '^q'=> "g3 xunimpaired", - 't' => "g3 xunimpaired", - 'T' => "g3 xunimpaired", - 'u' => "g4 argm xunimpaired", - 'x' => "g4 argm xunimpaired", - 'y' => "g4 argm xunimpaired", - ' ' => "g4 xunimpaired", + "\e"=> ["g7 mode", "normal mode"], + + '`' => ["g2 v6", "previous lc mark"], + '#' => ["g2", "previous open #if<>/#else"], + '(' => ["g2", "previous open ("], + '*' => \'[/', + '/' => ["g2", "start of C com<>m<>ent"], + "'" => ["g2 v6", \"0[`^"], + '{' => ["g2", => "previous open {"], + '[' => ["g2", "section back<>ward<>s"], + '^['=> \"[\e", + ']' => ["g2", qq'section back<>ward<>s'], + + 'c' => ["g2", "start of change backw<>ards"], + 'd' => ["g1", "define line"], + 'D' => ["g4", "defin<>ition"], + '^d'=> ["g3", "to defin<>it<>ion"], + 'i' => ['g1', "first occur<>renc<>e line"], + 'I' => ['g4', "first occur<>renc<>e"], + '^i'=> ['g3', "to first occur<>renc<>e"], + 'm' => ["g2", "start of funct<>ion"], + 'p' => ["g4", "P reind<>ent<>ed"], + 'P' => \"[p", + 's' => ["g3 v7", "last missp<>ell<>ing"], + 'S' => ["g3 v7", "last bad word"], + 'z' => ["g2 v6 folding", "start of open fold"], + + # unimpaired + 'a' => ["g3 xunimpaired", "prev<>ious file\nunimpaired map for :prev"], + 'A' => ["g3 xunimpaired", "first file\nunimpaired map for :rew"], + 'b' => ["g3 xunimpaired", "prev<>ious buffer\nunimpaired map for :bp"], + 'B' => ["g3 xunimpaired", "first buffer\nunimpaired map for :br"], + 'e' => ["g4 xunimpaired", "exchange line above\nunimpaired plugin"], + 'f' => \'gf', # deprecated + 'f' => ["g3 xunimpaired", "preced<>ing file alph<>abet<>ic<>al<>ly\nunimpaired plugin"], # overrides native alias + 'l' => ["g3 xunimpaired", "previous loc<>at<>ion\nunimpaired map for :lp"], + 'L' => ["g3 xunimpaired", "first loc<>ation\nunimpaired map for :lr"], + '^l'=> ["g3 xunimpaired", "next file in loc<>at<>ions\nunimpaired map for :lpf"], + 'n' => ["g3 xunimpaired", "previous conflict<>/hunk\nunimpaired plugin"], + 'o' => ["g9 arg xunimpaired", "enable option\nunimpaired plugin"], + #'p' => ["g4 xunimpaired", "linewise paste before"], + 'q' => ["g3 xunimpaired", "previous quickfix\nunimpaired map for :cp"], + 'Q' => ["g3 xunimpaired", "first quickfix\nunimpaired map for :cr"], + '^q'=> ["g3 xunimpaired", "quickfix file b<>ack\nunimpaired map for :cpf"], + 't' => ["g3 xunimpaired", "previous tag\nunimpaired map for :tp"], + 'T' => ["g3 xunimpaired", "first tag\nunimpaired map for :tr"], + 'u' => ["g4 argm xunimpaired", "url encode\nunimpaired plugin"], + 'x' => ["g4 argm xunimpaired", "xml encode\nunimpaired plugin"], + 'y' => ["g4 argm xunimpaired", "escape c str<>ing\nunimpaired plugin"], + ' ' => ["g4 xunimpaired", 'prepend blank l<>in<>e<>s'], }, # mode [ ']' => { lead => "]", - "\e"=> "g7 mode", - - "`" => "g2 v6", - '#' => "g2", - ')' => "g2", - '*' => "=]/", - "'" => '=$]`^ g2 v6', - '/' => "g2", - '[' => "g2", - '^['=> "=\e", - ']' => "g2", - '}' => "g2", - - 'c' => "g2", - 'd' => "g1", - 'D' => "g4", - '^d'=> "g3", - 'f' => "=gf", # deprecated - 'i' => "g1", - 'I' => "g4", - '^i'=> "g3", - 'm' => "g2", - 'p' => "g4", - 'P' => "=[p", - 's' => "g3 v7", - 'S' => "g3 v7", - 'z' => "g2 v6 folding", - - 'a' => "g3 xunimpaired", - 'A' => "g3 xunimpaired", - 'b' => "g3 xunimpaired", - 'B' => "g3 xunimpaired", - 'e' => "g4 xunimpaired", - 'l' => "g3 xunimpaired", - 'L' => "g3 xunimpaired", - '^l'=> "g3 xunimpaired", - '^l'=> "g3 xunimpaired", - 'f' => "g3 xunimpaired", # overrides native alias - 'n' => "g3 xunimpaired", - 'o' => "g9 arg xunimpaired", - 'q' => "g3 xunimpaired", - 'Q' => "g3 xunimpaired", - '^q'=> "g3 xunimpaired", - 't' => "g3 xunimpaired", - 'T' => "g3 xunimpaired", - 'u' => "g4 argm xunimpaired", - 'x' => "g4 argm xunimpaired", - 'y' => "g4 argm xunimpaired", - ' ' => "g4 xunimpaired", + "\e"=> ["g7 mode", "normal mode"], + + '`' => ["g2 v6", "next lc mark"], + '#' => ["g2", "next open #endif<>/#else"], + ')' => ["g2", "next open )"], + '*' => \']/', + "'" => ["g2 v6", \'$]`^'], + '/' => ["g2", "end of C com<>m<>ent"], + '[' => ["g2", qq'section forw<>ard'], + '^['=> \"]\e", + ']' => ["g2", "section forw<>ard"], + '}' => ["g2", "next open }"], + + 'c' => ["g2", "start of change forw<>ards"], + 'd' => ["g1", "next define line"], + 'D' => ["g4", "next define"], + '^d'=> ["g3", "to next define"], + 'f' => \'gf', # deprecated + 'i' => ["g1", "next occur<>renc<>e line"], + 'I' => ["g4", "next occur<>renc<>e"], + '^i'=> ["g3", "to occur<>renc<>e"], + 'm' => ["g2", "end of funct<>ion"], + 'p' => ["g4", "p reind<>ent<>ed"], + 'P' => \'[p', + 's' => ["g3 v7", "next missp<>ell<>ing"], + 'S' => ["g3 v7", "next bad word"], + 'z' => ["g2 v6 folding", "end of open fold"], + + # unimpaired + 'a' => ["g3 xunimpaired", "next file\nunimpaired map for :n"], + 'A' => ["g3 xunimpaired", "last file\nunimpaired map for :la"], + 'b' => ["g3 xunimpaired", "next buffer\nunimpaired map for :bn"], + 'B' => ["g3 xunimpaired", "last buffer\nunimpaired map for :bl"], + 'e' => ["g4 xunimpaired", "exchange line belo<>w\nunimpaired plugin"], + 'f' => ["g3 xunimpaired", "next file alph<>abet<>ic<>al<>ly\nunimpaired plugin"], # overrides native alias + 'l' => ["g3 xunimpaired", "next loc<>ation\nunimpaired map for :lne"], + 'L' => ["g3 xunimpaired", "last loc<>ation\nunimpaired map for :lla"], + '^l'=> ["g3 xunimpaired", "file back in loc<>at<>ions\nunimpaired map for :lnf"], + 'n' => ["g3 xunimpaired", "next confl<>ict<>/hunk\nunimpaired plugin"], + 'o' => ["g9 arg xunimpaired", "disable option\nunimpaired plugin"], + 'q' => ["g3 xunimpaired", "next quickfix error\nunimpaired map for :cn"], + 'Q' => ["g3 xunimpaired", "last quickfix error\nunimpaired map for :cla"], + '^q'=> ["g3 xunimpaired", "next file in q<>uick<>f<>ix\nunimpaired map for :cnf"], + 't' => ["g3 xunimpaired", "next tag\nunimpaired map for :tn"], + 'T' => ["g3 xunimpaired", "last tag\nunimpaired map for :tl"], + 'u' => ["g4 argm xunimpaired", "url decode\nunimpaired plugin"], + 'x' => ["g4 argm xunimpaired", "xml decode\nunimpaired plugin"], + 'y' => ["g4 argm xunimpaired", "unescap<>e c str<>ing\nunimpaired plugin"], + ' ' => ["g4 xunimpaired", 'add blank l<>in<>e<>s bel<>ow'], }, # mode ] '^w' => { lead => "ŵ", - "\e"=> "g7 mode", - - '<' => "g3", - '>' => "g3", - '^' => "g4", - '_' => "g3", - '+' => "g3", - '-' => "g3", - '=' => "g3", - '^['=> "=\e", - ']' => "g3", - '}' => "g3", - '|' => "g3", - - 'b' => "g3", - 'c' => "g3", - '^c'=> "g7 mode", - 'd' => "g3", - 'f' => "g4", - 'F' => "g4 v7", - 'g' => "g9 arg mode^wg", - 'h' => "g3", - 'H' => "g3", - 'i' => "g3", - 'j' => "g3", - 'J' => "g3", - 'k' => "g3", - 'K' => "g3", - 'l' => "g3", - 'L' => "g3", - 'n' => "g4", - 'o' => "g3", - 'p' => "g3", - 'P' => "g3", - 'q' => "g4", - 'r' => "g3", - 'R' => "g3", - 's' => "g3", - 'S' => "=^ws", - 't' => "g3", - 'T' => "g3 v7", - 'v' => "g3", - 'w' => "g3", - 'W' => "g3", - 'x' => "g3", - 'z' => "g3", + "\e"=> ["g7 mode", "normal mode"], + + '<' => ["g3", => "width decr<>ease"], + '>' => ["g3", => "width incr<>ease"], + '^' => ["g4", => "split, edit alt file"], + '_' => ["g3", => "set height"], + '+' => ["g3", => "height incr<>ease"], + '-' => ["g3", => "height decr<>ease"], + '=' => ["g3", => "same height"], + '^['=> \"^w\e", + ']' => ["g3", => "split, to tag"], + '}' => ["g3", => "pre<>view tag"], + '|' => ["g3", => "set width"], + + 'b' => ["g3", => "go to bot<>tom"], + 'c' => ["g3", => ":close"], + '^c'=> ["g7 mode", "abort"], + 'd' => ["g3", => "split, to def<>inition"], + 'f' => ["g4", => "split, file edit"], + 'F' => ["g4 v7", => "^wf, jump to line"], + 'g' => ["g9 arg mode^wg", => "extra cmds"], + 'h' => ["g3", => "go left"], + 'H' => ["g3", => "move far left"], + 'i' => ["g3", => "split, to decl of id<>ent<>ifier"], + 'j' => ["g3", => "go down"], + 'J' => ["g3", => "move to bottom"], + 'k' => ["g3", => "go up"], + 'K' => ["g3", => "move to top"], + 'l' => ["g3", => "go right"], + 'L' => ["g3", => "move far right"], + 'n' => ["g4", => "open new"], + 'o' => ["g3", => ":only current"], + 'p' => ["g3", => "go to prev<>ious"], + 'P' => ["g3", => "go to pre<>view"], + 'q' => ["g4", => ":quit current"], + 'r' => ["g3", => "rotate down<>ward<>s"], + 'R' => ["g3", => "rotate up<>ward<>s"], + 's' => ["g3", => "split horiz<>ont<>al<>ly"], + 'S' => \'^ws', + 't' => ["g3", => "go to top"], + 'T' => ["g3 v7", => "to tab"], + 'v' => ["g3", => "split vert<>ic<>al<>ly"], + 'w' => ["g3", => "go to next\nWrap around"], + 'W' => ["g3", => "go above<>/left"], + 'x' => ["g3", => "ex<>chan<>ge"], + 'z' => ["g3", => "close pre<>view"], }, # mode ^w '^wg' => { lead => "ŵg", - "\e"=> "g7 mode", - '^['=> "=\e", - ']' => "g3", - '}' => "g3", - '^]'=> "g3", - 'f' => "g4 v7", - 'F' => "g4 v7", + "\e"=> ["g7 mode", "normal mode"], + '^['=> \"^wg\e", + ']' => ["g3", => "split, :ts<>elect"], + '}' => ["g3", => ":ptj<>ump to tag"], + '^]'=> ["g3", "split, :tj<>ump"], + 'f' => ["g4 v7", => "file in tab"], + 'F' => ["g4 v7", => "^wgf, to line<>nr"], }, # mode ^w g v => { - "\e"=> "g7 mode", - - '!' => "g4", - ':' => "g7 modec", - '<' => "g4", - '=' => 'g4 undo', - '>' => 'g4', - '~' => "g4 v6", - '^['=> "=\e", - '^]'=> "g3", - '^\\'=>'^\\', - - 'a' => 'g9 modeva arg v6', - 'A' => 'g6 modei v6', - '^a'=> 'g4 undo v8', - 'c' => 'g6 modei v6', - 'C' => 'g6 modei v6', - '^c'=> "g7 mode", - 'd' => "g4 v6", - 'D' => "g4 v6", - 'g' => "g9 arg modevg", - '^g'=> "g8", - 'i' => "g9 modeva arg v6", - 'I' => "g6 modei v6", # block - 'J' => "g4", - 'K' => 'g4', - 'o' => "g2", - 'O' => "g2", - '^o'=> "g8", - 'p' => 'g4', - 'P' => 'g4', - 'r' => 'g4 arg', - 'R' => "=vS", # "might change in future" - 's' => "=vc", - 'S' => 'g6 modei v6', - 'u' => "g4 v6", - 'U' => "g4 v6", - 'v' => "g8", - 'V' => "g8", - '^v'=> "g8 v6", - 'x' => "=vd", - 'X' => "=vD", - '^x'=> 'g4 undo v8', - 'y' => "g4", - 'Y' => "g4", - - (map { $_ => "=$_" } @motions, qw( + "\e"=> ["g7 mode", "normal mode"], + + '!' => ["g4", "external filter"], + ':' => ["g7 modec", "cmd on range"], + '<' => ["g4", "un<>indent"], + '=' => ['g4 undo', "re<>ind<>ent"], + '>' => ['g4', "ind<>ent"], + '~' => ["g4 v6", "toggle case"], + '^['=> \"v\e", + '^]'=> ["g3", "jump to tag"], + '^\\'=>\'^\\', + + 'a' => ['g9 modeva arg v6', "ex<>tend area"], + 'A' => ['g6 modei v6', "ap<>pend to block"], # block + '^a'=> ['g4 undo v8', "incr<>ement num<>bers"], + 'c' => ['g6 modei v6', "repl<>ace area"], + 'C' => ['g6 modei v6', "repl<>ace full lines"], # like vS, but blocks are extended until eol + '^c'=> ["g7 mode", "abort"], + 'd' => ["g4 v6", "delete area"], + 'D' => ["g4 v6", "delete lines"], + 'g' => ["g9 arg modevg", "extra cmds"], + '^g'=> ["g8", "select mode"], + 'i' => ["g9 modeva arg v6", "extend inner a<>r<>ea"], + 'I' => ["g6 modei v6", "insert to block"], # block + 'J' => ["g4", "join lines"], + 'K' => ['g4', "help sel<>ect<>ion"], + 'o' => ["g2", "to other corner"], + 'O' => ["g2", "to other side"], + '^o'=> ["g8", "visual once"], # select + 'p' => ['g4', "repl<>ace w/ paste"], + 'P' => ['g4', "repl<>ace w/ paste"], + 'r' => ['g4 arg', "fill up w/ ch<>ar"], + 'R' => \'vS', # "might change in future" + 's' => \'vc', + 'S' => ['g6 modei v6', "repl<>ace lines"], + 'u' => ["g4 v6", "lower<>case"], + 'U' => ["g4 v6", "upper<>case"], + 'v' => ["g8", "char<>wise"], + 'V' => ["g8", "line<>wise"], + '^v'=> ["g8 v6", "block<>wise"], + 'x' => \'vd', + 'X' => \'vD', + '^x'=> ['g4 undo v8', "decr<>ement num<>bers"], + 'y' => ["g4", "yank area"], + 'Y' => ["g4", "yank lines"], + + (map { $_ => \$_ } @motions, qw( ^b ^d ^e ^f ^i m q ^q ^s ^u ^w ^y z ^z " - )), # a lot like normal mode + )), # a lot like normal mode TODO }, # mode v - vg => { + 'vg' => { lead => "g", - "\e"=> "g8 modev", - - '^['=> "=\e", - '?' => "g4 v6", - '^a'=> 'g4 undo v8', - '^g' => "g1 vim6", - 'c' => 'g4 xcommentary', - 'J' => 'g4 v6', - 'l' => 'g3 arg xlion', - 'L' => 'g3 arg xlion', - 'q' => "g4 v6", - 'v' => "=gv", - 'w' => 'g4 v7', - '^x'=> 'g4 undo v8', + "\e"=> ["g8 modev", "visual mode"], + + '^['=> \"vg\e", + '?' => ["g4 v6", => "rot13 encode"], + '^a'=> ['g4 undo v8', "seq. incr<>ement"], + '^g' => ["g1 vim6", "count region info"], + 'J' => ['g4 v6', => "join literal<>ly"], + 'q' => ["g4 v6", => "for<>mat"], + 'v' => \'gv', + 'w' => ['g4 v7', => "for<>mat still"], + '^x'=> ['g4 undo v8', "seq. decr<>ement"], + + # plugins + 'c' => ['g4 xcommentary', => "(un)<>com<>ment\ncommentary or tComment plugin"], + 'l' => ['g3 arg xlion', => "align to left\nlion plugin, also good for easy-align"], + 'L' => ['g3 arg xlion', => "align to right\nlion plugin"], }, # mode v g va => { - "\e"=> "g8 modev", - - '(' => "=vab", - ')' => "=vab", - '`' => "=va'", - "'" => 'g2 v7', - '"' => "=va'", - '<' => 'g2 v6', - '>' => "=va<", - '[' => 'g2 v6', - '{' => "=vaB", - '^['=> "=\e", - ']' => "=va[", - '}' => "=vaB", - - 'b' => 'g2 v6', - 'B' => 'g2 v6', - 'p' => 'g2 v6', - 's' => 'g2 v6', - 't' => 'g2 v7', - 'w' => 'g2 v6', - 'W' => 'g2 v6', + "\e"=> ["g8 modev", "visual mode"], + + '(' => \'vab', + ')' => \'vab', + '`' => \"va'", + "'" => ['g2 v7', "quoted string"], + '"' => \"va'", + '<' => ['g2 v6', => "<> block"], + '>' => \'va<', + '[' => ['g2 v6', => "[] block"], + '{' => \'vaB', + '^['=> \"va\e", + ']' => \'va[', + '}' => \'vaB', + + 'b' => ['g2 v6', => "() block"], + 'B' => ['g2 v6', => "{} Block"], + 'p' => ['g2 v6', => "para<>graph"], + 's' => ['g2 v6', => "senten<>ce"], + 't' => ['g2 v7', => "xml tag block"], + 'w' => ['g2 v6', => "word"], + 'W' => ['g2 v6', => 'word'], }, # mode v a #c => { # desc => "command-line mode", # - # '^_' => "=i^_", - # '^^' => "=i^^", + # '^_' => \"i^_", + # '^^' => \"i^^", # '^\\'=>'^\\', - # '^a' => "", #todo - # '^b' => "g3", - # '^c' => "=i^c", - # '^d' => "", #todo - # '^e' => "g3", - # '^h' => "=i^h", - # '^j' => "g4", - # '^k' => "=i^k", - # '^l' => "", #todo - # '^n' => "", #todo - # '^p' => "", #todo - # '^r' => "=i^r", # and then some... - # ## ["g4 arg v6"], - # '^q' => "=^q", - # '^u' => "=i^u", - # '^v' => "=i^v", - # '^w' => "=i^w", - # '^y' => "g4", + # '^a' => ["", "complete"], #todo + # '^b' => ["g3", "bol"], + # '^c' => \"i^c", + # '^d' => ["", "complete"], #todo + # '^e' => ["g3", "eol"], + # '^h' => \"i^h", + # '^j' => ["g4", "execute cmd"], + # '^k' => \"i^k", + # '^l' => ["", "complete"], #todo + # '^n' => ["", "complete"], #todo + # '^p' => ["", "complete"], #todo + # '^r' => \'i^r', # and then some... + # ## ["g4 arg v6", "insert register"], + # '^q' => \"^q", + # '^u' => \"i^u", + # '^v' => \"i^v", + # '^w' => \"i^w", + # '^y' => ["g4", "selec<>tion to clip<>b<>oard"], #}, # mode c i => { - "\e" => "g7 mode", - - '^@' => "g4", - '^^' => "g4 v6", - '^['=> "=\e", - '^]' => "g4 v6", - '^_' => "g4 v6", - '^\\'=>'^\\', - - '^a' => "g4 v6", - '^b' => "no v6", - '^c' => "g7 mode", - '^d' => 'g4', - '^e' => "g4 v6", - '^f' => 'g4', - '^g' => "g9 modei^g arg", - '^h' => "g4", - '^i' => "g4", - '^j' => "g4", - '^k' => 'g4 arg arg v6 linkdigraphs', - '^l' => "g7 mode v6", # insertmode only - '^m' => "g4", - '^n' => "g2 v6", - '^o' => 'g4', - '^p' => "g2 v6", - '^q' => "=^q", # or i^v - '^r' => 'g4 arg v6', - '^s' => "=^s", - '^t' => "g4", - '^u' => "g4", - '^v' => 'g4 linkcharset', - '^w' => "g4", - '^x' => 'g9 arg modei^x v6', - '^y' => "g4 v6", - '^z' => "g1 v6", # insertmode only + "\e" => ["g7 mode", "normal mode"], + + '^@' => ["g4", => "last insert"], + '^^' => ["g4 v6", => "toggle :lmap usag<>e"], + '^[' => \"i\e", + '^]' => ["g4 v6", => "abbrev<>iate"], + '^_' => ["g4 v6", => "toggle lang<>uage"], + '^\\'=>\'^\\', + + '^a' => ["g4 v6", => "insert prev<>ious"], + '^b' => ["no v6", => "former i^_"], + '^c' => ["g7 mode", => "abort, no abbr"], + '^d' => ['g4', => "un<>ind<>ent"], + '^e' => ["g4 v6", => "ins char below"], + '^f' => ['g4', => "set indent<>ation"], + '^g' => ["g9 modei^g arg", => "extra cmds"], + '^h' => ["g4", => "back<>space"], + '^i' => ["g4", => "tab"], + '^j' => ["g4", => "enter"], + '^k' => ['g4 arg arg v6 linkdigraphs', => "di<>graph\nKey code"], + '^l' => ["g7 mode v6", => "im leave ins mode"], # insertmode only + '^m' => ["g4", => "enter"], + '^n' => ["g2 v6", => "find next keyword"], + '^o' => ['g4', => "exec<>ute cmd"], + '^p' => ["g2 v6", => "find prev keyword"], + '^q' => \'^q', # or i^v + '^r' => ['g4 arg v6', "insert reg<>ister"], + '^s' => \'^s', + '^t' => ["g4", => "indent"], + '^u' => ["g4", => "delete line"], + '^v' => ['g4 linkcharset', => "literal or ch<>ar<>cod<>e\nVerbatim or by Value"], + '^w' => ["g4", => "delete word back"], + '^x' => ['g9 arg modei^x v6', => "ex<>pand mode"], + '^y' => ["g4 v6", => "ins char above"], + '^z' => ["g1 v6", => ":sus<>pend in im"], # insertmode only }, # modei 'i^g' => { lead => "ĝ", - "\e"=> 'g6 modei', + "\e"=> ['g6 modei', "insert mode"], - 'k' => 'g2', - 'j' => 'g2', - 's' => 'g4 arg xsurround', - 'u' => 'g4', - 'U' => 'g4 v8', + 'k' => ['g2', => " start col<>umn"], + 'j' => ['g2', => " start col<>umn"], + 'u' => ['g4', => "break undo seq<>uence"], + 'U' => ['g4 v8', => "keep undo seq<>uence"], # other keys (even esc) are not recognized + + 's' => ['g4 arg xsurround', => "sur<>round\nsurround plugin"], }, # mode i ^g 'i^x' => { lead => "x̂", - "\e" => "g7 mode", # yes, it really leaves insert mode - - '^['=> "=\e", - '^]' => 'g4', - '^d' => 'g4', - '^e' => "g3", - '^f' => 'g4', - '^i' => 'g4', - '^k' => 'g4', - '^l' => 'g4', - '^n' => 'g4', - '^o' => 'g4 v7', - '^p' => 'g4', - '^s' => 'g4', - 's' => "=i^x^s", - '^t' => 'g4', - '^u' => 'g4 v7', - '^v' => 'g4', - '^y' => "g3", + "\e" => ["g7 mode", "normal mode"], # yes, it really leaves insert mode + + '^['=> \"i^x\e", + '^]' => ['g4', => "tag comp<>l<>et<>e"], + '^d' => ['g4', => "def<>ine compl<>et<>e"], + '^e' => ["g3", => "window up"], + '^f' => ['g4', => "file comp<>l<>et<>e"], + '^i' => ['g4', => "ident comp<>l<>et<>e"], + '^k' => ['g4', => "dict comp<>l<>et<>e"], + '^l' => ['g4', => "line comp<>l<>et<>e"], + '^n' => ['g4', => "next comp<>l<>et<>e"], + '^o' => ['g4 v7', => "omni comp<>l<>et<>e"], + '^p' => ['g4', => "prev comp<>l<>ete"], + '^s' => ['g4', => "spell sugg<>est"], + 's' => \'i^x^s', + '^t' => ['g4', => "thes<>aur<>us compl<>et<>e"], + '^u' => ['g4 v7', => "cus<>tom comp<>l<>et<>e"], + '^v' => ['g4', => "ex cmd compl<>et<>e"], + '^y' => ["g3", => "window down"], }, # mode i ^x d => { lead => "d", - "\e"=> "g7 mode", - '^['=> "=\e", - - (map { $_ => 'g4' } @motions), - (map { $_ => 'g4 arg' } qw( f F t T ` ' / ? )), # @motions with option - (map { $_ => "=v$_" } qw( a i )), # motions from virtual - (map { $_ => "=$_" } qw( g z [ ] \\ ^\\ ^q ^s ^z )), - - 'd' => 'g4', - 'o' => 'g5', - 'p' => 'g5', - 's' => 'g4 arg xsurround', - - 'l' => '=x', - 'h' => '=X', - '^h' => '=X', - '^j' => '=dj', - '^m' => '=dj', - '^n' => '=dj', - '+' => '=dj', - '^p' => '=dk', - '-' => '=dk', - '$' => '=D', - '_' => '=dd', + "\e"=> ["g7 mode", "normal mode"], + '^['=> \"d\e", + + 'd' => ['g4', 'delete line'], + 'o' => ['g5', 'diff obtain'], + 'p' => ['g5', 'diff put'], + 's' => ['g4 arg xsurround', 'delete surr<>oun<>d<>ing'], + + (map { ($_ => [\$_, "delete to $_"]) } qw( g z [ ] )), # modes + + # commands + (map { $_ => \$_ } qw( \\ ^\\ ^q ^s ^z )), + 'l' => \'x', + 'h' => \'X', + '^h' => \'X', + '^j' => \'dj', + '^m' => \'dj', + '^n' => \'dj', + '+' => \'dj', + '^p' => \'dk', + '-' => \'dk', + '$' => \'D', + '_' => \'dd', + + # simple @motions + 'W' => ['g4', 'delete word'], + 'b' => ['g4', 'delete word'], + 'B' => ['g4', 'delete word'], + 'e' => ['g4', 'delete word e<>nd'], + 'E' => ['g4', 'delete word e<>nd'], + 'G' => ['g4', 'delete to line<>/eof'], + 'H' => ['g4', 'delete to top'], + 'j' => ['g4', 'delete line'], + 'k' => ['g4', 'delete line'], + 'L' => ['g4', 'delete to bottom'], + 'M' => ['g4', 'delete to middle'], + 'n' => ['g4', 'delete to next res<>ult'], + 'N' => ['g4', 'delete to prev res<>ult'], + 'w' => ['g4', 'delete word'], + ',' => ['g4', 'delete to prev ch<>ar<>acter'], + ';' => ['g4', 'delete to next ch<>ar<>acter'], + '*' => ['g4', 'delete to find'], + '#' => ['g4', 'delete to find'], + '%' => ['g4', 'delete to line pct'], + '^' => ['g4', 'delete to soft bol'], + '0' => ['g4', 'delete to bol'], + '|' => ['g4', 'delete to col<>umn'], + '{' => ['g4', 'delete par<>agr<>aph'], + '}' => ['g4', 'delete rest of p<>ar<>agr<>aph'], + '(' => ['g4', 'delete senten<>ce'], + ')' => ['g4', 'delete rest of s<>en<>ten<>ce'], + + # @motions with option + 'f' => ['g4 arg', 'delete to char<>acter'], + 'F' => ['g4 arg', 'delete to char<>acter'], + 't' => ['g4 arg', 'delete upto ch<>ar<>acter'], + 'T' => ['g4 arg', 'delete upto ch<>ar<>acter'], + '`' => ['g4 arg', 'delete to mark'], + "'" => ['g4 arg', 'delete lines to m<>ark'], + '/' => ['g4 arg', 'delete to res<>ult'], + '?' => ['g4 arg', 'delete to res<>ult'], + + # motions from virtual + 'a' => ['g9 modeva arg v6 alias', 'delete area'], # va + 'i' => ['g9 modeva arg v6 alias', 'delete inner'], # vi }, # mode d + # y => { 'o' => ['g9 arg xunimpaired', "toggle option\nunimpaired plugin"] }, # TODO + # TODO: mode/ (command-line) # XXX ex mode if you want to go completely wild }, diff --git a/keyboard/vimperator.eng.inc.pl b/keyboard/vimperator.eng.inc.pl index 5338ecd..ad1a7cf 100644 --- a/keyboard/vimperator.eng.inc.pl +++ b/keyboard/vimperator.eng.inc.pl @@ -2,180 +2,13 @@ use utf8; # vimperator v3.16.0 { title => 'Vimperator', -version => '1.3', +version => '1.4', description => [ "Interactive cheat sheet for the Vimperator (or Pentadactyl)", "Firefox extension, describing the function of each key.", ], keywords => [qw'vimperator firefox pentadactyl vim browser vimfx vimium cvim'], -key => { - '~' => "open home<>dir", - '@' => "play macro", - '^' => "left of page", - '$' => "right of page", - '#' => "rev. find word", - '*' => "find word", - '^^'=> "last tab", - '?' => "find rev.", - '/' => "find", - '[' => "focus forw<>ard", - ']' => "focus back", - ':' => "comm<>and line mode", - ';' => "extend<>ed hint<>s mode", - "'" => "jump to mark", - '|' => "toggle source", - '+' => "en<>large text", - '-' => "shrink text", - - 'a' => "add bookm<>ark", - 'A' => "toggle bookm<>ark<>ed", - '^a'=> "incr<>em<>ent url nr", - 'b' => "to buffer", - 'B' => "list buffers", - '^b'=> "page up", - 'c' => "caret mode", - '^c'=> "stop loading", - '^d'=> "scroll down", - 'd' => "close tab", - 'D' => "close tab left<>ward<>s", - 'f' => "quick<>hint mode", - 'F' => "f in tab", - '^f'=> "page down", - 'g' => "extra cmds", - 'G' => "last/% line", - '^g'=> "file name", - 'h' => "", - 'H' => "page back", - 'i' => "ignore key", - 'I' => ":ignore<>keys add cmd", - 'j' => "", - 'k' => "", - 'l' => "", - 'L' => "page forw<>ard", - 'M' => "mark url", - 'm' => "mark line", - 'n' => "find next", - 'N' => "find prev<>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<>e<>d", - 't' => "tab open new", - 'T' => "tab open curr<>ent", - '^v'=> "pass single", - '^u'=> "scroll up", - 'u' => "restore closed tab", - '^x'=> "decr<>em<>ent url nr", - 'w' => "open in win<>dow", - 'W' => "copy to new win<>dow", - 'y' => "copy url", - 'Y' => "copy select<>ion", - 'z' => "zoom", - 'Z' => "quit", - - "g\e"=> "normal mode", - 'g0' => "first tab", - 'g@' => "first app tab", - 'g$' => "last tab", - - 'gb' => "repeat buffer cmd", - 'gB' => "reverse gb", - 'gf' => "view source", - 'gF' => "source extern<>al", - 'g^g'=> "file details", - 'gg' => "first line", - 'gh' => "open home<>page", - 'gH' => "tab with home<>page", - 'gi' => "last input field", - 'gn' => "tabopen url mark\nGo in New tab", - 'go' => "open url mark", - 'gP' => "P inactive", - 'gr' => "reader view", - 'gt' => "switch tab", - 'gT' => "tab back", - 'gu' => "parent dir<>ectory", - 'gU' => "site root", - - ";\e"=> "normal mode", - ';;' => "focus", - ';#' => "copy anchor", - ';?' => "element details", - ';a' => "save as", - ';A' => "save media as", - ';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", - ';S' => "save media obj<>ect", - ';t' => "open in tab", - ';T' => "tab prompt", - ';v' => "view source", - ';V' => "edit source", - ';w' => "open in wind<>ow", - ';W' => "wind<>ow prompt", - ';x' => "title or alt", - ';y' => "copy url", - ';Y' => "copy text", - - "]\e"=> "normal mode", - ']f' => "next frame<>set", - ']]' => "open next", - - "[\e"=> "normal mode", - '[f' => "previous frame<>set", - '[[' => "open prev", - - "z\e"=> "normal mode", - 'zi' => "+\nZoom In", - 'zm' => "en<>large more\nZoom More", - 'zo' => "-\nZoom Out", - 'zr' => "tinier text\nZoom Reduce", - 'zz' => "reset text size\nZoom Zero", - 'zI' => "zoom in", - 'zM' => "zoom more", - 'zO' => "zoom out", - 'zR' => "zoom out more\nZoom Reduce", - 'zZ' => "zoom reset\nZoom Zero", - - "Z\e"=> "normal mode", - 'ZQ' => "quit no save", - 'ZZ' => "quit save ses<>s<>ion", - - "c\e"=> "normal mode", - 'c^' => "start of line", - 'c$' => "end of line", - 'c#' => "rev. find word", - 'c*' => "find word", - 'c?' => "find rev.", - 'c/' => "find", - 'c:' => "comm<>and line mode", - - 'cb' => "prev word\nBack", - 'c^b'=> "page up", - 'c^f'=> "page down", - 'cg' => "g for first line", - 'cG' => "last line", - 'ch' => "", - 'c^i'=> 'extern<>al edit<>or', - 'cj' => "", - 'ck' => "", - 'cl' => "", - 'cn' => "find next", - 'cN' => "find prev<>ious", - 'cv' => "select\nVisual mode", - 'cw' => "next word", -}, - mode => { '' => 'normal mode', 'g' => 'extended commands (g)', @@ -203,208 +36,209 @@ flag => { def => { '' => { - '~' => 'g5', - '@' => 'g7 arg', - '^' => 'g2', - '0' => '=^', - '$' => 'g2', - '#' => 'g2', - '*' => 'g2', - '+' => 'g1', - '-' => 'g1', - '^^'=> 'g3', - '?' => 'g2 args', - '/' => 'g2 args', - '[' => 'g9 arg mode[', - ']' => 'g9 arg mode]', - ':' => 'g7 args', - ';' => 'g9 arg args mode;', - "'" => 'g2', - '`' => "='", - '|' => 'g5 v2 v2.2', - - 'a' => 'g7 args', - 'A' => 'g7', - '^a'=> 'g5', - 'b' => 'g3 args', - 'B' => 'g1', - '^b'=> 'g2', - 'c' => 'g8 modec', - '^c'=> 'g4', - '^d'=> 'g2', - 'd' => 'g4', - 'D' => 'g4', - '^i'=> '=L', - 'i' => 'g8 arg', - 'I' => 'g7 args', - '^e'=> '=j', - 'f' => 'g5 args', - 'F' => 'g6 args', - '^f'=> 'g2', # spacebar - 'g' => 'g9 modeg arg', - 'G' => 'g2', - '^g'=> 'g1', - 'h' => 'g2', - 'H' => 'g5', - 'j' => 'g2', - 'k' => 'g2', - 'l' => 'g2', - 'L' => 'g5', - 'M' => 'g7 arg', - 'm' => 'g7 arg', - 'n' => 'g2', - 'N' => 'g2', - '^n'=> 'g3', - 'o' => 'g5', - 'O' => 'g5', - '^o'=> '=H', - 'p' => 'g5', - 'P' => 'g6', - '^p'=> '=gT', - 'q' => 'g8 arg', - 'r' => 'g4', - 'R' => 'g5', - 't' => 'g6', - 'T' => 'g6', - '^v'=> 'g4 arg', - '^u'=> 'g2', - 'u' => 'g6', - 'w' => 'g6', - 'W' => 'g6', - '^w'=> '=d', - '^x'=> 'g5', - 'y' => 'g7', - 'Y' => 'g7', - '^y'=> '=k', - 'z' => 'g1 modez arg', - 'Z' => 'g9 modeZ arg', + '~' => ['g5', "open home<>dir"], + '@' => ['g7 arg', "play macro"], + '^' => ['g2', "left of page"], + '0' => \'^', + '$' => ['g2', "right of page"], + '#' => ['g2', "rev. find word"], + '*' => ['g2', "find word"], + '+' => ['g1', "en<>large text"], + '-' => ['g1', "shrink text"], + '^^'=> ['g3', "last tab"], + '?' => ['g2 args', "find rev."], + '/' => ['g2 args', "find"], + '[' => ['g9 arg mode[', "focus forw<>ard"], + ']' => ['g9 arg mode]', "focus back"], + ':' => ['g7 args', "comm<>and line mode"], + ';' => ['g9 arg args mode;', "extend<>ed hint<>s mode"], + "'" => ['g2', "jump to mark"], + '`' => \"'", + '|' => ['g5 v2 v2.2', "toggle source"], + + 'a' => ['g7 args', "add bookm<>ark"], + 'A' => ['g7', "toggle bookm<>ark<>ed"], + '^a'=> ['g5', "incr<>em<>ent url nr"], + 'b' => ['g3 args', "to buffer"], + 'B' => ['g1', "list buffers"], + '^b'=> ['g2', "page up"], + 'c' => ['g8 modec', "caret mode"], + '^c'=> ['g4', "stop loading"], + '^d'=> ['g2', "scroll down"], + 'd' => ['g4', "close tab"], + 'D' => ['g4', "close tab left<>ward<>s"], + '^i'=> \'L', + 'i' => ['g8 arg', "ignore key"], + 'I' => ['g7 args', ":ignore<>keys add cmd"], + '^e'=> \'j', + 'f' => ['g5 args', "quick<>hint mode"], + 'F' => ['g6 args', "f in tab"], + '^f'=> ['g2', "page down"], # spacebar + 'g' => ['g9 modeg arg', "extra cmds"], + 'G' => ['g2', "last/% line"], + '^g'=> ['g1', "file name"], + 'h' => ['g2', ""], + 'H' => ['g5', "page back"], + 'j' => ['g2', ""], + 'k' => ['g2', ""], + 'l' => ['g2', ""], + 'L' => ['g5', "page forw<>ard"], + 'M' => ['g7 arg', "mark url"], + 'm' => ['g7 arg', "mark line"], + 'n' => ['g2', "find next"], + 'N' => ['g2', "find prev<>ious"], + '^n'=> ['g3', "next tab"], + 'o' => ['g5', "open"], + 'O' => ['g5', "alter url"], + 'p' => ['g5', "open pasted url"], + 'P' => ['g6', "p in tab"], + '^p'=> \'gT', + 'q' => ['g8 arg', "record macro"], + 'r' => ['g4', "reload page"], + 'R' => ['g5', "reload uncach<>e<>d"], + 't' => ['g6', "tab open new"], + 'T' => ['g6', "tab open curr<>ent"], + '^v'=> ['g4 arg', "pass single"], + '^u'=> ['g2', "scroll up"], + 'u' => ['g6', "restore closed tab"], + 'w' => ['g6', "open in win<>dow"], + 'W' => ['g6', "copy to new win<>dow"], + '^w'=> \'d', + '^x'=> ['g5', "decr<>em<>ent url nr"], + 'y' => ['g7', "copy url"], + 'Y' => ['g7', "copy select<>ion"], + '^y'=> \'k', + 'z' => ['g1 modez arg', "zoom"], + 'Z' => ['g9 modeZ arg', "quit"], }, # normal mode g => { lead => 'g', - "\e"=> 'g8 mode', - '0' => 'g3', - '@' => 'g3', - '$' => 'g3', - '^' => '=g0', - - 'b' => 'g3', - 'B' => 'g3', - 'f' => 'g5', - 'F' => 'g6 linkvi', - '^g'=> 'g1', - 'g' => 'g2', - 'h' => 'g5', - 'H' => 'g6', - 'i' => 'g2', - 'n' => 'g6 arg', - 'o' => 'g5 arg', - 'P' => 'g6', - 'r' => 'g5', - 't' => 'g3', - 'T' => 'g3', - 'u' => 'g5', - 'U' => 'g5', + "\e"=> ['g8 mode', "normal mode"], + '0' => ['g3', "first tab"], + '@' => ['g3', "first app tab"], + '$' => ['g3', "last tab"], + '^' => \'g0', + + 'b' => ['g3', "repeat buffer cmd"], + 'B' => ['g3', "reverse gb"], + 'f' => ['g5', "view source"], + 'F' => ['g6 linkvi', "source extern<>al"], + '^g'=> ['g1', "file details"], + 'g' => ['g2', "first line"], + 'h' => ['g5', "open home<>page"], + 'H' => ['g6', "tab with home<>page"], + 'i' => ['g2', "last input field"], + 'n' => ['g6 arg', "tabopen url mark\nGo in New tab"], + 'o' => ['g5 arg', "open url mark"], + 'P' => ['g6', "P inactive"], + 'r' => ['g5', "reader view"], + 't' => ['g3', "switch tab"], + 'T' => ['g3', "tab back"], + 'u' => ['g5', "parent dir<>ectory"], + 'U' => ['g5', "site root"], }, # mode g ';' => { lead => ';', - "\e"=> 'g8 mode', - ';' => 'g2', - '#' => 'g7', - '?' => 'g1', - 'a' => 'g7 args', - 'A' => 'g7 args', - 'b' => 'g6 v2', - 'c' => 'g7 v2 v2.2', - 'f' => 'g2 v2', # previously ';o' - 'F' => 'g6 v2', # previously ';t' - 'i' => 'g5 v2 v2.2', - 'I' => 'g6 v2 v2.2', - 'o' => 'g5', - 'O' => 'g5 args', - 's' => 'g7', - 'S' => 'g7', - 't' => 'g6', - 'T' => 'g6 args', - 'v' => 'g5', - 'V' => 'g6 linkvi', - 'w' => 'g6', - 'W' => 'g6 args', - 'x' => 'g1', - 'y' => 'g7', - 'Y' => 'g7', + "\e"=> ['g8 mode', "normal mode"], + ';' => ['g2', "focus"], + '#' => ['g7', "copy anchor"], + '?' => ['g1', "element details"], + 'a' => ['g7 args', "save as"], + 'A' => ['g7 args', "save media as"], + 'b' => ['g6 v2', "open bg tab"], + 'c' => ['g7 v2 v2.2', "context menu"], + 'f' => ['g2 v2', "frame focus"], # previously ';o' + 'F' => ['g6 v2', "multiple bg tabs"], # previously ';t' + 'i' => ['g5 v2 v2.2', "image"], + 'I' => ['g6 v2 v2.2', "image in tab"], + 'o' => ['g5', "open"], + 'O' => ['g5 args', "open prompt"], + 's' => ['g7', "save"], + 'S' => ['g7', "save media obj<>ect"], + 't' => ['g6', "open in tab"], + 'T' => ['g6 args', "tab prompt"], + 'v' => ['g5', "view source"], + 'V' => ['g6 linkvi', "edit source"], + 'w' => ['g6', "open in wind<>ow"], + 'W' => ['g6 args', "wind<>ow prompt"], + 'x' => ['g1', "title or alt"], + 'y' => ['g7', "copy url"], + 'Y' => ['g7', "copy text"], }, # mode ; ']' => { lead => ']', - "\e"=> 'g8 mode', - 'f' => 'g2', - ']' => 'g5', + "\e"=> ['g8 mode', "normal mode"], + 'f' => ['g2', "next frame<>set"], + ']' => ['g5', "open next"], }, # mode ] '[' => { lead => '[', - "\e"=> 'g8 mode', - 'f' => 'g2', - '[' => 'g5', + "\e"=> ['g8 mode', "normal mode"], + 'f' => ['g2', "previous frame<>set"], + '[' => ['g5', "open prev"], }, # mode [ z => { lead => 'z', - "\e"=> 'g8 mode', - 'i' => '=+', - 'm' => 'g1', - 'o' => '=-', - 'r' => 'g1', - 'z' => 'g1', - 'I' => 'g1', - 'M' => 'g1', - 'O' => 'g1', - 'R' => 'g1', - 'Z' => 'g1', + "\e"=> ['g8 mode', "normal mode"], + 'i' => [\'+', "+\nZoom In"], + 'm' => ['g1', "en<>large more\nZoom More"], + 'o' => [\'-', "-\nZoom Out"], + + 'r' => ['g1', "tinier text\nZoom Reduce"], + 'z' => ['g1', "reset text size\nZoom Zero"], + 'I' => ['g1', "zoom in"], + 'M' => ['g1', "zoom more"], + 'O' => ['g1', "zoom out"], + 'R' => ['g1', "zoom out more\nZoom Reduce"], + 'Z' => ['g1', "zoom reset\nZoom Zero"], }, # mode z Z => { lead => 'Z', - "\e"=> 'g8 mode', - 'Q' => 'g7', - 'Z' => 'g7', + "\e"=> ['g8 mode', "normal mode"], + 'Q' => ['g7', "quit no save"], + 'Z' => ['g7', "quit save ses<>s<>ion"], }, # mode Z c => { - "\e"=> 'g8 mode', - '^' => 'g2', - '0' => '=^', - '$' => 'g2', - '#' => 'g2', - '*' => 'g2', - '?' => 'g2 args', - '/' => 'g2 args', - ':' => 'g7 args', - - 'b' => 'g2', - 'B' => '=b', - '^b'=> 'g2', - 'e' => '=w', - '^f'=> 'g2', - 'g' => 'g9 arg', - 'G' => 'g2', - 'h' => 'g2', - '^i'=> 'g7', - 'j' => 'g2', - 'k' => 'g2', - 'l' => 'g2', - 'n' => 'g2', - 'v' => 'g8', - 'w' => 'g2', - 'W' => '=w', + "\e"=> ['g8 mode', "normal mode"], + '^' => ['g2', "start of line"], + '0' => \'^', + '$' => ['g2', "end of line"], + '#' => ['g2', "rev. find word"], + '*' => ['g2', "find word"], + '?' => ['g2 args', "find rev."], + '/' => ['g2 args', "find"], + ':' => ['g7 args', "comm<>and line mode"], + + 'b' => ['g2', "prev word\nBack"], + 'B' => \'b', + '^b'=> ['g2', "page up"], + 'e' => \'w', + '^f'=> ['g2', "page down"], + 'g' => ['g9 arg', "g for first line"], + 'G' => ['g2', "last line"], + 'h' => ['g2', ""], + '^i'=> ['g7', 'extern<>al edit<>or'], + 'j' => ['g2', ""], + 'k' => ['g2', ""], + 'l' => ['g2', ""], + 'n' => ['g2', "find next"], + 'N' => ['g2', "find prev<>ious"], + 'v' => ['g8', "select\nVisual mode"], + 'w' => ['g2', "next word"], + 'W' => \'w', }, # caret mode }, } diff --git a/keys.inc.pl b/keys.inc.pl index aad7b71..ede3297 100644 --- a/keys.inc.pl +++ b/keys.inc.pl @@ -1,4 +1,7 @@ use utf8; +use strict; +use warnings; +no warnings 'qw'; my @num = qw(^0 ^0 ^@ ^0 ^0 ^0 ^^ ^0 ^0 ^0 ^0); dvorak => [[ -- 2.30.0