use utf8;

{
# less v418

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' => "<down>",
	'k' => "<up>",
	'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 <span style="font-variant:small-caps">lesso<>pen</span> 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)',
	'-'  => 'flag identifiers',
	':'  => 'colon commands',
},

flag => {
	g1 => [info   => 'Temporary message display (or related option).'],
	g2 => [move   => 'Regular file position panning (or option).'],
	g3 => [jump   => 'Other file position manipulation (").'],
	g4 => [search => 'Go to matching content (").'],
	g7 => [file   => 'Alter open file buffer (").'],
	g8 => [misc   => 'Other commands and options.'],

	arg  => ["key<arg>" => "Commands with a dot need a char argument afterwards."],
	more => [more => "A small subset is compatible with `more`."],
},

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',
	},

	'^[' => { # esc
		"\e"=> 'g7 mode',
		'n' => 'g4',
		'N' => 'g4',
		'u' => 'g1',
		'v' => '=b',
		'(' => 'g2',
		')' => 'g2',
		'<' => '=g',
		'>' => '=G',
	},

	#'^x' => {
	#	"\e"=> 'g7 mode',
	#	'^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',
		'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',
	},
},
}
