use utf8;
# vimperator v3.16.0
{
title => 'Vimperator',
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'],

mode => {
	''  => 'normal mode',
	'g' => 'extended commands (g)',
	';' => 'extended hints (;)',
	']' => '(])',
	'[' => '([)',
	'z' => 'zoom commands (z)',
	'Z' => 'quit commands (Z)',
},

flag => {
	g1 => ['info'     => "Displays something without any permanent consequences."],
	g2 => ['motion'   => "Move cursor, scroll window, focus buffer element."],
	g3 => ['tab'      => "Tab or window navigation/selection."],
	g4 => ['buffer'   => "Page interaction."],
	g5 => ['open'     => "Browse to a location in the current tab."],
	g6 => ['tab open' => "Browse somewhere in a new tab."],
	g7 => ['browser'  => "Other browser action."],
	g8 => ['mode'     => "Enter a different mode."],
	g9 => ['key cmd'  => "Additional key commands (click for overview)."],

	arg  => ["key<arg>"  => "Commands with a dot need a char argument afterwards."],
	args => ["key<args>" => "Commands with two dots require variable arguments afterwards."],
},

def => {
	'' => {
		'~' => ['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', "<left>"],
		'H' => ['g5', "page back"],
		'j' => ['g2', "<down>"],
		'k' => ['g2', "<up>"],
		'l' => ['g2', "<right>"],
		'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', "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', "<alias>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', "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', "normal mode"],
		'f' => ['g2', "next frame<>set"],
		']' => ['g5', "open <q>next</q>"],
	}, # mode ]

	'[' => {
		lead => '[',

		"\e"=> ['g8 mode', "normal mode"],
		'f' => ['g2', "previous frame<>set"],
		'[' => ['g5', "open <q>prev</q>"],
	}, # mode [

	z => {
		lead => 'z',

		"\e"=> ['g8 mode', "normal mode"],
		'i' => [\'+', "<alias>+\nZoom In"],
		'm' => ['g1', "en<>large more\nZoom More"],
		'o' => [\'-', "<alias>-\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', "normal mode"],
		'Q' => ['g7', "quit no save"],
		'Z' => ['g7', "quit save ses<>s<>ion"],
	}, # mode Z

	c => {
		"\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', "<left>"],
		'^i'=> ['g7', 'extern<>al edit<>or'],
		'j' => ['g2', "<down>"],
		'k' => ['g2', "<up>"],
		'l' => ['g2', "<right>"],
		'n' => ['g2', "find next"],
		'N' => ['g2', "find prev<>ious"],
		'v' => ['g8', "select\nVisual mode"],
		'w' => ['g2', "next word"],
		'W' => \'w',
	}, # caret mode
},
}
