package inputrc

// Generated by gen.go. DO NOT EDIT.

// DefaultVars are the default readline vars.
//
// see: INPUTRC=/dev/null bash -c 'bind -v'
func DefaultVars() map[string]interface{} {
	return map[string]interface{}{
		"bind-tty-special-chars":           true,
		"blink-matching-paren":             false,
		"byte-oriented":                    false,
		"colored-completion-prefix":        false,
		"colored-stats":                    false,
		"completion-ignore-case":           false,
		"completion-map-case":              false,
		"convert-meta":                     true,
		"disable-completion":               false,
		"echo-control-characters":          true,
		"enable-bracketed-paste":           false,
		"enable-keypad":                    false,
		"enable-meta-key":                  true,
		"expand-tilde":                     false,
		"history-preserve-point":           false,
		"horizontal-scroll-mode":           false,
		"input-meta":                       false,
		"mark-directories":                 true,
		"mark-modified-lines":              false,
		"mark-symlinked-directories":       false,
		"match-hidden-files":               true,
		"menu-complete-display-prefix":     false,
		"meta-flag":                        false,
		"multiline-column":                 false,
		"multiline-column-numbered":        false,
		"multiline-column-custom":          "",
		"output-meta":                      false,
		"page-completions":                 true,
		"prefer-visible-bell":              true,
		"print-completions-horizontally":   false,
		"revert-all-at-newline":            false,
		"show-all-if-ambiguous":            false,
		"show-all-if-unmodified":           false,
		"show-mode-in-prompt":              false,
		"skip-completed-text":              false,
		"visible-stats":                    false,
		"bell-style":                       "audible",
		"comment-begin":                    "#",
		"completion-display-width":         -1,
		"completion-prefix-display-length": 0,
		"completion-query-items":           100,
		"editing-mode":                     "emacs",
		"emacs-mode-string":                "@",
		"history-size":                     0,
		"keymap":                           "emacs",
		"keyseq-timeout":                   500,
		"vi-cmd-mode-string":               "(cmd)",
		"vi-ins-mode-string":               "(ins)",
	}
}

// DefaultBinds are the default readline bind keymaps.
//
// see: INPUTRC=/dev/null bash -c 'bind -pm <keymap>'
func DefaultBinds() map[string]map[string]Bind {
	return map[string]map[string]Bind{
		"emacs": map[string]Bind{
			//Unescape(`\M-[1;6C`): Bind{"copy-to-clipboard", false},    // Ctrl+Shift+C
			//Unescape(`\M-[1;6V`): Bind{"paste-from-clipboard", false}, // Ctrl+Shift+V

			Unescape(`\C-g`):     Bind{"abort", false},
			Unescape(`\C-x\C-g`): Bind{"abort", false},
			Unescape(`\M-\C-g`):  Bind{"abort", false},
			Unescape(`\C-j`):     Bind{"accept-line", false},
			Unescape(`\C-m`):     Bind{"accept-line", false},
			// alias-expand-line (not bound)
			// arrow-key-prefix (not bound)
			// backward-byte (not bound)
			Unescape(`\C-b`):     Bind{"backward-char", false},
			Unescape(`\M-OD`):    Bind{"backward-char", false},
			Unescape(`\M-[D`):    Bind{"backward-char", false},
			Unescape(`\C-h`):     Bind{"backward-delete-char", false},
			Unescape(`\C-?`):     Bind{"backward-delete-char", false},
			Unescape(`\C-x\C-?`): Bind{"backward-kill-line", false},
			Unescape(`\M-\C-h`):  Bind{"backward-kill-word", false},
			Unescape(`\M-\C-?`):  Bind{"backward-kill-word", false},
			Unescape(`\M-[1;3D`): Bind{"backward-word", false},
			Unescape(`\M-[1;5D`): Bind{"backward-word", false},
			Unescape(`\M-b`):     Bind{"backward-word", false},
			Unescape(`\M-<`):     Bind{"beginning-of-history", false},
			Unescape(`\C-a`):     Bind{"beginning-of-line", false},
			Unescape(`\M-OH`):    Bind{"beginning-of-line", false},
			Unescape(`\M-[H`):    Bind{"beginning-of-line", false},
			Unescape(`\M-[200~`): Bind{"bracketed-paste-begin", false},
			Unescape(`\C-xe`):    Bind{"call-last-kbd-macro", false},
			Unescape(`\M-c`):     Bind{"capitalize-word", false},
			Unescape(`\C-]`):     Bind{"character-search", false},
			Unescape(`\M-\C-]`):  Bind{"character-search-backward", false},
			Unescape(`\M-\C-l`):  Bind{"clear-display", false},
			Unescape(`\C-l`):     Bind{"clear-screen", false},
			Unescape(`\C-i`):     Bind{"complete", false},
			Unescape(`\M-\e`):    Bind{"complete", false},
			Unescape(`\M-!`):     Bind{"complete-command", false},
			Unescape(`\M-/`):     Bind{"complete-filename", false},
			Unescape(`\M-@`):     Bind{"complete-hostname", false},
			Unescape(`\M-{`):     Bind{"complete-into-braces", false},
			Unescape(`\M-~`):     Bind{"complete-username", false},
			Unescape(`\M-$`):     Bind{"complete-variable", false},
			// copy-backward-word (not bound)
			// copy-forward-word (not bound)
			// copy-region-as-kill (not bound)
			// dabbrev-expand (not bound)
			Unescape(`\C-d`): Bind{"delete-char", false},
			// delete-char-or-list (not bound)
			Unescape(`\M-\\`):    Bind{"delete-horizontal-space", false},
			Unescape(`\M--`):     Bind{"digit-argument", false},
			Unescape(`\M-0`):     Bind{"digit-argument", false},
			Unescape(`\M-1`):     Bind{"digit-argument", false},
			Unescape(`\M-2`):     Bind{"digit-argument", false},
			Unescape(`\M-3`):     Bind{"digit-argument", false},
			Unescape(`\M-4`):     Bind{"digit-argument", false},
			Unescape(`\M-5`):     Bind{"digit-argument", false},
			Unescape(`\M-6`):     Bind{"digit-argument", false},
			Unescape(`\M-7`):     Bind{"digit-argument", false},
			Unescape(`\M-8`):     Bind{"digit-argument", false},
			Unescape(`\M-9`):     Bind{"digit-argument", false},
			Unescape(`\C-x\C-v`): Bind{"display-shell-version", false},
			Unescape(`\C-xA`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xB`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xC`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xD`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xE`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xF`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xG`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xH`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xI`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xJ`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xK`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xL`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xM`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xN`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xO`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xP`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xQ`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xR`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xS`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xT`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xU`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xV`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xW`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xX`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xY`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xZ`):    Bind{"do-lowercase-version", false},
			Unescape(`\M-A`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-B`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-C`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-D`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-E`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-F`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-G`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-H`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-I`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-J`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-K`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-L`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-M`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-N`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-P`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-Q`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-R`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-S`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-T`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-U`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-V`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-W`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-X`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-Y`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-Z`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-l`):     Bind{"downcase-word", false},
			// dump-functions (not bound)
			// dump-macros (not bound)
			// dump-variables (not bound)
			Unescape(`\M-\C-i`):  Bind{"dynamic-complete-history", false},
			Unescape(`\C-x\C-e`): Bind{"edit-and-execute-command", false},
			// emacs-editing-mode (not bound)
			Unescape(`\C-x)`):    Bind{"end-kbd-macro", false},
			Unescape(`\M->`):     Bind{"end-of-history", false},
			Unescape(`\C-e`):     Bind{"end-of-line", false},
			Unescape(`\M-OF`):    Bind{"end-of-line", false},
			Unescape(`\M-[F`):    Bind{"end-of-line", false},
			Unescape(`\C-x\C-x`): Bind{"exchange-point-and-mark", false},
			// forward-backward-delete-char (not bound)
			// forward-byte (not bound)
			Unescape(`\C-f`):     Bind{"forward-char", false},
			Unescape(`\M-OC`):    Bind{"forward-char", false},
			Unescape(`\M-[C`):    Bind{"forward-char", false},
			Unescape(`\C-s`):     Bind{"forward-search-history", false},
			Unescape(`\M-[1;3C`): Bind{"forward-word", false},
			Unescape(`\M-[1;5C`): Bind{"forward-word", false},
			Unescape(`\M-f`):     Bind{"forward-word", false},
			Unescape(`\M-g`):     Bind{"glob-complete-word", false},
			Unescape(`\C-x*`):    Bind{"glob-expand-word", false},
			Unescape(`\C-xg`):    Bind{"glob-list-expansions", false},
			// history-and-alias-expand-line (not bound)
			Unescape(`\M-^`): Bind{"history-expand-line", false},
			// history-search-backward (not bound)
			// history-search-forward (not bound)
			// history-substring-search-backward (not bound)
			// history-substring-search-forward (not bound)
			Unescape(`\M-#`): Bind{"insert-comment", false},
			Unescape(`\M-*`): Bind{"insert-completions", false},
			Unescape(`\M-.`): Bind{"insert-last-argument", false},
			Unescape(`\M-_`): Bind{"insert-last-argument", false},
			Unescape(`\C-k`): Bind{"kill-line", false},
			// kill-region (not bound)
			// kill-whole-line (not bound)
			Unescape(`\M-[3;5~`): Bind{"kill-word", false},
			Unescape(`\M-d`):     Bind{"kill-word", false},
			// magic-space (not bound)
			// menu-complete (not bound)
			// menu-complete-backward (not bound)
			Unescape(`\C-n`):  Bind{"next-history", false},
			Unescape(`\M-OB`): Bind{"next-history", false},
			Unescape(`\M-[B`): Bind{"next-history", false},
			// next-screen-line (not bound)
			Unescape(`\M-n`): Bind{"non-incremental-forward-search-history", false},
			// non-incremental-forward-search-history-again (not bound)
			Unescape(`\M-p`): Bind{"non-incremental-reverse-search-history", false},
			// non-incremental-reverse-search-history-again (not bound)
			// old-menu-complete (not bound)
			Unescape(`\C-o`): Bind{"operate-and-get-next", false},
			// overwrite-mode (not bound)
			Unescape(`\C-x!`): Bind{"possible-command-completions", false},
			Unescape(`\M-=`):  Bind{"possible-completions", false},
			Unescape(`\M-?`):  Bind{"possible-completions", false},
			Unescape(`\C-x/`): Bind{"possible-filename-completions", false},
			Unescape(`\C-x@`): Bind{"possible-hostname-completions", false},
			Unescape(`\C-x~`): Bind{"possible-username-completions", false},
			Unescape(`\C-x$`): Bind{"possible-variable-completions", false},
			Unescape(`\C-p`):  Bind{"previous-history", false},
			Unescape(`\M-OA`): Bind{"previous-history", false},
			Unescape(`\M-[A`): Bind{"previous-history", false},
			// previous-screen-line (not bound)
			// print-last-kbd-macro (not bound)
			Unescape(`\C-q`):     Bind{"quoted-insert", false},
			Unescape(`\C-v`):     Bind{"paste-from-clipboard", false},
			Unescape(`\C-x\C-r`): Bind{"re-read-init-file", false},
			// redraw-current-line (not bound)
			Unescape(`\C-r`):               Bind{"reverse-search-history", false},
			Unescape(`\M-\C-r`):            Bind{"revert-line", false},
			Unescape(`\M-r`):               Bind{"revert-line", false},
			Unescape(` `):                  Bind{"self-insert", false},
			Unescape(`!`):                  Bind{"self-insert", false},
			Unescape(`\"`):                 Bind{"self-insert", false},
			Unescape(`#`):                  Bind{"self-insert", false},
			Unescape(`$`):                  Bind{"self-insert", false},
			Unescape(`%`):                  Bind{"self-insert", false},
			Unescape(`&`):                  Bind{"self-insert", false},
			Unescape(`'`):                  Bind{"self-insert", false},
			Unescape(`(`):                  Bind{"self-insert", false},
			Unescape(`)`):                  Bind{"self-insert", false},
			Unescape(`*`):                  Bind{"self-insert", false},
			Unescape(`+`):                  Bind{"self-insert", false},
			Unescape(`,`):                  Bind{"self-insert", false},
			Unescape(`-`):                  Bind{"self-insert", false},
			Unescape(`.`):                  Bind{"self-insert", false},
			Unescape(`/`):                  Bind{"self-insert", false},
			Unescape(`0`):                  Bind{"self-insert", false},
			Unescape(`1`):                  Bind{"self-insert", false},
			Unescape(`2`):                  Bind{"self-insert", false},
			Unescape(`3`):                  Bind{"self-insert", false},
			Unescape(`4`):                  Bind{"self-insert", false},
			Unescape(`5`):                  Bind{"self-insert", false},
			Unescape(`6`):                  Bind{"self-insert", false},
			Unescape(`7`):                  Bind{"self-insert", false},
			Unescape(`8`):                  Bind{"self-insert", false},
			Unescape(`9`):                  Bind{"self-insert", false},
			Unescape(`:`):                  Bind{"self-insert", false},
			Unescape(`;`):                  Bind{"self-insert", false},
			Unescape(`<`):                  Bind{"self-insert", false},
			Unescape(`=`):                  Bind{"self-insert", false},
			Unescape(`>`):                  Bind{"self-insert", false},
			Unescape(`?`):                  Bind{"self-insert", false},
			Unescape(`@`):                  Bind{"self-insert", false},
			Unescape(`A`):                  Bind{"self-insert", false},
			Unescape(`B`):                  Bind{"self-insert", false},
			Unescape(`C`):                  Bind{"self-insert", false},
			Unescape(`D`):                  Bind{"self-insert", false},
			Unescape(`E`):                  Bind{"self-insert", false},
			Unescape(`F`):                  Bind{"self-insert", false},
			Unescape(`G`):                  Bind{"self-insert", false},
			Unescape(`H`):                  Bind{"self-insert", false},
			Unescape(`I`):                  Bind{"self-insert", false},
			Unescape(`J`):                  Bind{"self-insert", false},
			Unescape(`K`):                  Bind{"self-insert", false},
			Unescape(`L`):                  Bind{"self-insert", false},
			Unescape(`M`):                  Bind{"self-insert", false},
			Unescape(`N`):                  Bind{"self-insert", false},
			Unescape(`O`):                  Bind{"self-insert", false},
			Unescape(`P`):                  Bind{"self-insert", false},
			Unescape(`Q`):                  Bind{"self-insert", false},
			Unescape(`R`):                  Bind{"self-insert", false},
			Unescape(`S`):                  Bind{"self-insert", false},
			Unescape(`T`):                  Bind{"self-insert", false},
			Unescape(`U`):                  Bind{"self-insert", false},
			Unescape(`V`):                  Bind{"self-insert", false},
			Unescape(`W`):                  Bind{"self-insert", false},
			Unescape(`X`):                  Bind{"self-insert", false},
			Unescape(`Y`):                  Bind{"self-insert", false},
			Unescape(`Z`):                  Bind{"self-insert", false},
			Unescape(`[`):                  Bind{"self-insert", false},
			Unescape(`\\`):                 Bind{"self-insert", false},
			Unescape(`]`):                  Bind{"self-insert", false},
			Unescape(`^`):                  Bind{"self-insert", false},
			Unescape(`_`):                  Bind{"self-insert", false},
			Unescape("`"):                  Bind{"self-insert", false},
			Unescape(`a`):                  Bind{"self-insert", false},
			Unescape(`b`):                  Bind{"self-insert", false},
			Unescape(`c`):                  Bind{"self-insert", false},
			Unescape(`d`):                  Bind{"self-insert", false},
			Unescape(`e`):                  Bind{"self-insert", false},
			Unescape(`f`):                  Bind{"self-insert", false},
			Unescape(`g`):                  Bind{"self-insert", false},
			Unescape(`h`):                  Bind{"self-insert", false},
			Unescape(`i`):                  Bind{"self-insert", false},
			Unescape(`j`):                  Bind{"self-insert", false},
			Unescape(`k`):                  Bind{"self-insert", false},
			Unescape(`l`):                  Bind{"self-insert", false},
			Unescape(`m`):                  Bind{"self-insert", false},
			Unescape(`n`):                  Bind{"self-insert", false},
			Unescape(`o`):                  Bind{"self-insert", false},
			Unescape(`p`):                  Bind{"self-insert", false},
			Unescape(`q`):                  Bind{"self-insert", false},
			Unescape(`r`):                  Bind{"self-insert", false},
			Unescape(`s`):                  Bind{"self-insert", false},
			Unescape(`t`):                  Bind{"self-insert", false},
			Unescape(`u`):                  Bind{"self-insert", false},
			Unescape(`v`):                  Bind{"self-insert", false},
			Unescape(`w`):                  Bind{"self-insert", false},
			Unescape(`x`):                  Bind{"self-insert", false},
			Unescape(`y`):                  Bind{"self-insert", false},
			Unescape(`z`):                  Bind{"self-insert", false},
			Unescape(`{`):                  Bind{"self-insert", false},
			Unescape(`|`):                  Bind{"self-insert", false},
			Unescape(`}`):                  Bind{"self-insert", false},
			Unescape(`~`):                  Bind{"self-insert", false},
			Unescape(`\200`):               Bind{"self-insert", false},
			Unescape(`\201`):               Bind{"self-insert", false},
			Unescape(`\202`):               Bind{"self-insert", false},
			Unescape(`\203`):               Bind{"self-insert", false},
			Unescape(`\204`):               Bind{"self-insert", false},
			Unescape(`\205`):               Bind{"self-insert", false},
			Unescape(`\206`):               Bind{"self-insert", false},
			Unescape(`\207`):               Bind{"self-insert", false},
			Unescape(`\210`):               Bind{"self-insert", false},
			Unescape(`\211`):               Bind{"self-insert", false},
			Unescape(`\212`):               Bind{"self-insert", false},
			Unescape(`\213`):               Bind{"self-insert", false},
			Unescape(`\214`):               Bind{"self-insert", false},
			Unescape(`\215`):               Bind{"self-insert", false},
			Unescape(`\216`):               Bind{"self-insert", false},
			Unescape(`\217`):               Bind{"self-insert", false},
			Unescape(`\220`):               Bind{"self-insert", false},
			Unescape(`\221`):               Bind{"self-insert", false},
			Unescape(`\222`):               Bind{"self-insert", false},
			Unescape(`\223`):               Bind{"self-insert", false},
			Unescape(`\224`):               Bind{"self-insert", false},
			Unescape(`\225`):               Bind{"self-insert", false},
			Unescape(`\226`):               Bind{"self-insert", false},
			Unescape(`\227`):               Bind{"self-insert", false},
			Unescape(`\230`):               Bind{"self-insert", false},
			Unescape(`\231`):               Bind{"self-insert", false},
			Unescape(`\232`):               Bind{"self-insert", false},
			Unescape(`\233`):               Bind{"self-insert", false},
			Unescape(`\234`):               Bind{"self-insert", false},
			Unescape(`\235`):               Bind{"self-insert", false},
			Unescape(`\236`):               Bind{"self-insert", false},
			Unescape(`\237`):               Bind{"self-insert", false},
			Unescape(string([]byte{0xa0})): Bind{"self-insert", false},
			Unescape(string([]byte{0xa1})): Bind{"self-insert", false},
			Unescape(string([]byte{0xa2})): Bind{"self-insert", false},
			Unescape(string([]byte{0xa3})): Bind{"self-insert", false},
			Unescape(string([]byte{0xa4})): Bind{"self-insert", false},
			Unescape(string([]byte{0xa5})): Bind{"self-insert", false},
			Unescape(string([]byte{0xa6})): Bind{"self-insert", false},
			Unescape(string([]byte{0xa7})): Bind{"self-insert", false},
			Unescape(string([]byte{0xa8})): Bind{"self-insert", false},
			Unescape(string([]byte{0xa9})): Bind{"self-insert", false},
			Unescape(string([]byte{0xaa})): Bind{"self-insert", false},
			Unescape(string([]byte{0xab})): Bind{"self-insert", false},
			Unescape(string([]byte{0xac})): Bind{"self-insert", false},
			Unescape(string([]byte{0xad})): Bind{"self-insert", false},
			Unescape(string([]byte{0xae})): Bind{"self-insert", false},
			Unescape(string([]byte{0xaf})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb0})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb1})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb2})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb3})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb4})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb5})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb6})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb7})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb8})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb9})): Bind{"self-insert", false},
			Unescape(string([]byte{0xba})): Bind{"self-insert", false},
			Unescape(string([]byte{0xbb})): Bind{"self-insert", false},
			Unescape(string([]byte{0xbc})): Bind{"self-insert", false},
			Unescape(string([]byte{0xbd})): Bind{"self-insert", false},
			Unescape(string([]byte{0xbe})): Bind{"self-insert", false},
			Unescape(string([]byte{0xbf})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc0})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc1})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc2})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc3})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc4})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc5})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc6})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc7})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc8})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc9})): Bind{"self-insert", false},
			Unescape(string([]byte{0xca})): Bind{"self-insert", false},
			Unescape(string([]byte{0xcb})): Bind{"self-insert", false},
			Unescape(string([]byte{0xcc})): Bind{"self-insert", false},
			Unescape(string([]byte{0xcd})): Bind{"self-insert", false},
			Unescape(string([]byte{0xce})): Bind{"self-insert", false},
			Unescape(string([]byte{0xcf})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd0})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd1})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd2})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd3})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd4})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd5})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd6})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd7})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd8})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd9})): Bind{"self-insert", false},
			Unescape(string([]byte{0xda})): Bind{"self-insert", false},
			Unescape(string([]byte{0xdb})): Bind{"self-insert", false},
			Unescape(string([]byte{0xdc})): Bind{"self-insert", false},
			Unescape(string([]byte{0xdd})): Bind{"self-insert", false},
			Unescape(string([]byte{0xde})): Bind{"self-insert", false},
			Unescape(string([]byte{0xdf})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe0})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe1})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe2})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe3})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe4})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe5})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe6})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe7})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe8})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe9})): Bind{"self-insert", false},
			Unescape(string([]byte{0xea})): Bind{"self-insert", false},
			Unescape(string([]byte{0xeb})): Bind{"self-insert", false},
			Unescape(string([]byte{0xec})): Bind{"self-insert", false},
			Unescape(string([]byte{0xed})): Bind{"self-insert", false},
			Unescape(string([]byte{0xee})): Bind{"self-insert", false},
			Unescape(string([]byte{0xef})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf0})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf1})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf2})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf3})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf4})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf5})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf6})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf7})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf8})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf9})): Bind{"self-insert", false},
			Unescape(string([]byte{0xfa})): Bind{"self-insert", false},
			Unescape(string([]byte{0xfb})): Bind{"self-insert", false},
			Unescape(string([]byte{0xfc})): Bind{"self-insert", false},
			Unescape(string([]byte{0xfd})): Bind{"self-insert", false},
			Unescape(string([]byte{0xfe})): Bind{"self-insert", false},
			Unescape(string([]byte{0xff})): Bind{"self-insert", false},
			Unescape(`\C-@`):               Bind{"set-mark", false},
			Unescape(`\M- `):               Bind{"set-mark", false},
			// shell-backward-kill-word (not bound)
			Unescape(`\M-\C-b`): Bind{"shell-backward-word", false},
			Unescape(`\M-\C-e`): Bind{"shell-expand-line", false},
			Unescape(`\M-\C-f`): Bind{"shell-forward-word", false},
			Unescape(`\M-\C-d`): Bind{"shell-kill-word", false},
			Unescape(`\M-\C-t`): Bind{"shell-transpose-words", false},
			// skip-csi-sequence (not bound)
			Unescape(`\C-x(`): Bind{"start-kbd-macro", false},
			// tab-insert (not bound)
			Unescape(`\M-&`): Bind{"tilde-expand", false},
			Unescape(`\C-t`): Bind{"transpose-chars", false},
			Unescape(`\M-t`): Bind{"transpose-words", false},
			// tty-status (not bound)
			Unescape(`\C-x\C-u`): Bind{"undo", false},
			Unescape(`\C-_`):     Bind{"undo", false},
			// universal-argument (not bound)
			// unix-filename-rubout (not bound)
			Unescape(`\C-u`): Bind{"unix-line-discard", false},
			Unescape(`\C-w`): Bind{"unix-word-rubout", false},
			Unescape(`\M-u`): Bind{"upcase-word", false},
			// vi-append-eol (not bound)
			// vi-append-mode (not bound)
			// vi-arg-digit (not bound)
			// vi-bWord (not bound)
			// vi-back-to-indent (not bound)
			// vi-backward-bigword (not bound)
			// vi-backward-word (not bound)
			// vi-bword (not bound)
			// vi-change-case (not bound)
			// vi-change-char (not bound)
			// vi-change-to (not bound)
			// vi-char-search (not bound)
			// vi-column (not bound)
			// vi-complete (not bound)
			// vi-delete (not bound)
			// vi-delete-to (not bound)
			// vi-eWord (not bound)
			// vi-editing-mode (not bound)
			// vi-end-bigword (not bound)
			// vi-end-word (not bound)
			// vi-eof-maybe (not bound)
			// vi-eword (not bound)
			// vi-fWord (not bound)
			// vi-fetch-history (not bound)
			// vi-first-print (not bound)
			// vi-forward-bigword (not bound)
			// vi-forward-word (not bound)
			// vi-fword (not bound)
			// vi-goto-mark (not bound)
			// vi-insert-beg (not bound)
			// vi-insertion-mode (not bound)
			// vi-match (not bound)
			// vi-movement-mode (not bound)
			// vi-next-word (not bound)
			// vi-overstrike (not bound)
			// vi-overstrike-delete (not bound)
			// vi-prev-word (not bound)
			// vi-put (not bound)
			// vi-redo (not bound)
			// vi-replace (not bound)
			// vi-rubout (not bound)
			// vi-search (not bound)
			// vi-search-again (not bound)
			// vi-set-mark (not bound)
			// vi-subst (not bound)
			// vi-tilde-expand (not bound)
			// vi-unix-word-rubout (not bound)
			// vi-yank-arg (not bound)
			// vi-yank-pop (not bound)
			// vi-yank-to (not bound)
			Unescape(`\C-y`): Bind{"yank", false},
			// Unescape(`\M-.`): Bind{"yank-last-arg", false}, // DUPLICATE KEY
			// Unescape(`\M-_`): Bind{"yank-last-arg", false}, // DUPLICATE KEY
			Unescape(`\M-\C-y`): Bind{"yank-nth-arg", false},
			Unescape(`\M-y`):    Bind{"yank-pop", false},
		},
		"emacs-standard": map[string]Bind{
			Unescape(`\C-g`):     Bind{"abort", false},
			Unescape(`\C-x\C-g`): Bind{"abort", false},
			Unescape(`\M-\C-g`):  Bind{"abort", false},
			Unescape(`\C-j`):     Bind{"accept-line", false},
			Unescape(`\C-m`):     Bind{"accept-line", false},
			// alias-expand-line (not bound)
			// arrow-key-prefix (not bound)
			// backward-byte (not bound)
			Unescape(`\C-b`):     Bind{"backward-char", false},
			Unescape(`\M-OD`):    Bind{"backward-char", false},
			Unescape(`\M-[D`):    Bind{"backward-char", false},
			Unescape(`\C-h`):     Bind{"backward-delete-char", false},
			Unescape(`\C-?`):     Bind{"backward-delete-char", false},
			Unescape(`\C-x\C-?`): Bind{"backward-kill-line", false},
			Unescape(`\M-\C-h`):  Bind{"backward-kill-word", false},
			Unescape(`\M-\C-?`):  Bind{"backward-kill-word", false},
			Unescape(`\M-[1;3D`): Bind{"backward-word", false},
			Unescape(`\M-[1;5D`): Bind{"backward-word", false},
			Unescape(`\M-b`):     Bind{"backward-word", false},
			Unescape(`\M-<`):     Bind{"beginning-of-history", false},
			Unescape(`\C-a`):     Bind{"beginning-of-line", false},
			Unescape(`\M-OH`):    Bind{"beginning-of-line", false},
			Unescape(`\M-[H`):    Bind{"beginning-of-line", false},
			Unescape(`\M-[200~`): Bind{"bracketed-paste-begin", false},
			Unescape(`\C-xe`):    Bind{"call-last-kbd-macro", false},
			Unescape(`\M-c`):     Bind{"capitalize-word", false},
			Unescape(`\C-]`):     Bind{"character-search", false},
			Unescape(`\M-\C-]`):  Bind{"character-search-backward", false},
			Unescape(`\M-\C-l`):  Bind{"clear-display", false},
			Unescape(`\C-l`):     Bind{"clear-screen", false},
			Unescape(`\C-i`):     Bind{"complete", false},
			Unescape(`\M-\e`):    Bind{"complete", false},
			Unescape(`\M-!`):     Bind{"complete-command", false},
			Unescape(`\M-/`):     Bind{"complete-filename", false},
			Unescape(`\M-@`):     Bind{"complete-hostname", false},
			Unescape(`\M-{`):     Bind{"complete-into-braces", false},
			Unescape(`\M-~`):     Bind{"complete-username", false},
			Unescape(`\M-$`):     Bind{"complete-variable", false},
			// copy-backward-word (not bound)
			// copy-forward-word (not bound)
			// copy-region-as-kill (not bound)
			// dabbrev-expand (not bound)
			Unescape(`\C-d`): Bind{"delete-char", false},
			// delete-char-or-list (not bound)
			Unescape(`\M-\\`):    Bind{"delete-horizontal-space", false},
			Unescape(`\M--`):     Bind{"digit-argument", false},
			Unescape(`\M-0`):     Bind{"digit-argument", false},
			Unescape(`\M-1`):     Bind{"digit-argument", false},
			Unescape(`\M-2`):     Bind{"digit-argument", false},
			Unescape(`\M-3`):     Bind{"digit-argument", false},
			Unescape(`\M-4`):     Bind{"digit-argument", false},
			Unescape(`\M-5`):     Bind{"digit-argument", false},
			Unescape(`\M-6`):     Bind{"digit-argument", false},
			Unescape(`\M-7`):     Bind{"digit-argument", false},
			Unescape(`\M-8`):     Bind{"digit-argument", false},
			Unescape(`\M-9`):     Bind{"digit-argument", false},
			Unescape(`\C-x\C-v`): Bind{"display-shell-version", false},
			Unescape(`\C-xA`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xB`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xC`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xD`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xE`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xF`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xG`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xH`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xI`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xJ`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xK`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xL`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xM`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xN`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xO`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xP`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xQ`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xR`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xS`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xT`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xU`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xV`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xW`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xX`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xY`):    Bind{"do-lowercase-version", false},
			Unescape(`\C-xZ`):    Bind{"do-lowercase-version", false},
			Unescape(`\M-A`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-B`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-C`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-D`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-E`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-F`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-G`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-H`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-I`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-J`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-K`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-L`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-M`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-N`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-P`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-Q`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-R`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-S`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-T`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-U`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-V`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-W`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-X`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-Y`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-Z`):     Bind{"do-lowercase-version", false},
			Unescape(`\M-l`):     Bind{"downcase-word", false},
			// dump-functions (not bound)
			// dump-macros (not bound)
			// dump-variables (not bound)
			Unescape(`\M-\C-i`):  Bind{"dynamic-complete-history", false},
			Unescape(`\C-x\C-e`): Bind{"edit-and-execute-command", false},
			// emacs-editing-mode (not bound)
			Unescape(`\C-x)`):    Bind{"end-kbd-macro", false},
			Unescape(`\M->`):     Bind{"end-of-history", false},
			Unescape(`\C-e`):     Bind{"end-of-line", false},
			Unescape(`\M-OF`):    Bind{"end-of-line", false},
			Unescape(`\M-[F`):    Bind{"end-of-line", false},
			Unescape(`\C-x\C-x`): Bind{"exchange-point-and-mark", false},
			// forward-backward-delete-char (not bound)
			// forward-byte (not bound)
			Unescape(`\C-f`):     Bind{"forward-char", false},
			Unescape(`\M-OC`):    Bind{"forward-char", false},
			Unescape(`\M-[C`):    Bind{"forward-char", false},
			Unescape(`\C-s`):     Bind{"forward-search-history", false},
			Unescape(`\M-[1;3C`): Bind{"forward-word", false},
			Unescape(`\M-[1;5C`): Bind{"forward-word", false},
			Unescape(`\M-f`):     Bind{"forward-word", false},
			Unescape(`\M-g`):     Bind{"glob-complete-word", false},
			Unescape(`\C-x*`):    Bind{"glob-expand-word", false},
			Unescape(`\C-xg`):    Bind{"glob-list-expansions", false},
			// history-and-alias-expand-line (not bound)
			Unescape(`\M-^`): Bind{"history-expand-line", false},
			// history-search-backward (not bound)
			// history-search-forward (not bound)
			// history-substring-search-backward (not bound)
			// history-substring-search-forward (not bound)
			Unescape(`\M-#`): Bind{"insert-comment", false},
			Unescape(`\M-*`): Bind{"insert-completions", false},
			Unescape(`\M-.`): Bind{"insert-last-argument", false},
			Unescape(`\M-_`): Bind{"insert-last-argument", false},
			Unescape(`\C-k`): Bind{"kill-line", false},
			// kill-region (not bound)
			// kill-whole-line (not bound)
			Unescape(`\M-[3;5~`): Bind{"kill-word", false},
			Unescape(`\M-d`):     Bind{"kill-word", false},
			// magic-space (not bound)
			// menu-complete (not bound)
			// menu-complete-backward (not bound)
			Unescape(`\C-n`):  Bind{"next-history", false},
			Unescape(`\M-OB`): Bind{"next-history", false},
			Unescape(`\M-[B`): Bind{"next-history", false},
			// next-screen-line (not bound)
			Unescape(`\M-n`): Bind{"non-incremental-forward-search-history", false},
			// non-incremental-forward-search-history-again (not bound)
			Unescape(`\M-p`): Bind{"non-incremental-reverse-search-history", false},
			// non-incremental-reverse-search-history-again (not bound)
			// old-menu-complete (not bound)
			Unescape(`\C-o`): Bind{"operate-and-get-next", false},
			// overwrite-mode (not bound)
			Unescape(`\C-x!`): Bind{"possible-command-completions", false},
			Unescape(`\M-=`):  Bind{"possible-completions", false},
			Unescape(`\M-?`):  Bind{"possible-completions", false},
			Unescape(`\C-x/`): Bind{"possible-filename-completions", false},
			Unescape(`\C-x@`): Bind{"possible-hostname-completions", false},
			Unescape(`\C-x~`): Bind{"possible-username-completions", false},
			Unescape(`\C-x$`): Bind{"possible-variable-completions", false},
			Unescape(`\C-p`):  Bind{"previous-history", false},
			Unescape(`\M-OA`): Bind{"previous-history", false},
			Unescape(`\M-[A`): Bind{"previous-history", false},
			// previous-screen-line (not bound)
			// print-last-kbd-macro (not bound)
			Unescape(`\C-q`):     Bind{"quoted-insert", false},
			Unescape(`\C-v`):     Bind{"quoted-insert", false},
			Unescape(`\C-x\C-r`): Bind{"re-read-init-file", false},
			// redraw-current-line (not bound)
			Unescape(`\C-r`):               Bind{"reverse-search-history", false},
			Unescape(`\M-\C-r`):            Bind{"revert-line", false},
			Unescape(`\M-r`):               Bind{"revert-line", false},
			Unescape(` `):                  Bind{"self-insert", false},
			Unescape(`!`):                  Bind{"self-insert", false},
			Unescape(`\"`):                 Bind{"self-insert", false},
			Unescape(`#`):                  Bind{"self-insert", false},
			Unescape(`$`):                  Bind{"self-insert", false},
			Unescape(`%`):                  Bind{"self-insert", false},
			Unescape(`&`):                  Bind{"self-insert", false},
			Unescape(`'`):                  Bind{"self-insert", false},
			Unescape(`(`):                  Bind{"self-insert", false},
			Unescape(`)`):                  Bind{"self-insert", false},
			Unescape(`*`):                  Bind{"self-insert", false},
			Unescape(`+`):                  Bind{"self-insert", false},
			Unescape(`,`):                  Bind{"self-insert", false},
			Unescape(`-`):                  Bind{"self-insert", false},
			Unescape(`.`):                  Bind{"self-insert", false},
			Unescape(`/`):                  Bind{"self-insert", false},
			Unescape(`0`):                  Bind{"self-insert", false},
			Unescape(`1`):                  Bind{"self-insert", false},
			Unescape(`2`):                  Bind{"self-insert", false},
			Unescape(`3`):                  Bind{"self-insert", false},
			Unescape(`4`):                  Bind{"self-insert", false},
			Unescape(`5`):                  Bind{"self-insert", false},
			Unescape(`6`):                  Bind{"self-insert", false},
			Unescape(`7`):                  Bind{"self-insert", false},
			Unescape(`8`):                  Bind{"self-insert", false},
			Unescape(`9`):                  Bind{"self-insert", false},
			Unescape(`:`):                  Bind{"self-insert", false},
			Unescape(`;`):                  Bind{"self-insert", false},
			Unescape(`<`):                  Bind{"self-insert", false},
			Unescape(`=`):                  Bind{"self-insert", false},
			Unescape(`>`):                  Bind{"self-insert", false},
			Unescape(`?`):                  Bind{"self-insert", false},
			Unescape(`@`):                  Bind{"self-insert", false},
			Unescape(`A`):                  Bind{"self-insert", false},
			Unescape(`B`):                  Bind{"self-insert", false},
			Unescape(`C`):                  Bind{"self-insert", false},
			Unescape(`D`):                  Bind{"self-insert", false},
			Unescape(`E`):                  Bind{"self-insert", false},
			Unescape(`F`):                  Bind{"self-insert", false},
			Unescape(`G`):                  Bind{"self-insert", false},
			Unescape(`H`):                  Bind{"self-insert", false},
			Unescape(`I`):                  Bind{"self-insert", false},
			Unescape(`J`):                  Bind{"self-insert", false},
			Unescape(`K`):                  Bind{"self-insert", false},
			Unescape(`L`):                  Bind{"self-insert", false},
			Unescape(`M`):                  Bind{"self-insert", false},
			Unescape(`N`):                  Bind{"self-insert", false},
			Unescape(`O`):                  Bind{"self-insert", false},
			Unescape(`P`):                  Bind{"self-insert", false},
			Unescape(`Q`):                  Bind{"self-insert", false},
			Unescape(`R`):                  Bind{"self-insert", false},
			Unescape(`S`):                  Bind{"self-insert", false},
			Unescape(`T`):                  Bind{"self-insert", false},
			Unescape(`U`):                  Bind{"self-insert", false},
			Unescape(`V`):                  Bind{"self-insert", false},
			Unescape(`W`):                  Bind{"self-insert", false},
			Unescape(`X`):                  Bind{"self-insert", false},
			Unescape(`Y`):                  Bind{"self-insert", false},
			Unescape(`Z`):                  Bind{"self-insert", false},
			Unescape(`[`):                  Bind{"self-insert", false},
			Unescape(`\\`):                 Bind{"self-insert", false},
			Unescape(`]`):                  Bind{"self-insert", false},
			Unescape(`^`):                  Bind{"self-insert", false},
			Unescape(`_`):                  Bind{"self-insert", false},
			Unescape("`"):                  Bind{"self-insert", false},
			Unescape(`a`):                  Bind{"self-insert", false},
			Unescape(`b`):                  Bind{"self-insert", false},
			Unescape(`c`):                  Bind{"self-insert", false},
			Unescape(`d`):                  Bind{"self-insert", false},
			Unescape(`e`):                  Bind{"self-insert", false},
			Unescape(`f`):                  Bind{"self-insert", false},
			Unescape(`g`):                  Bind{"self-insert", false},
			Unescape(`h`):                  Bind{"self-insert", false},
			Unescape(`i`):                  Bind{"self-insert", false},
			Unescape(`j`):                  Bind{"self-insert", false},
			Unescape(`k`):                  Bind{"self-insert", false},
			Unescape(`l`):                  Bind{"self-insert", false},
			Unescape(`m`):                  Bind{"self-insert", false},
			Unescape(`n`):                  Bind{"self-insert", false},
			Unescape(`o`):                  Bind{"self-insert", false},
			Unescape(`p`):                  Bind{"self-insert", false},
			Unescape(`q`):                  Bind{"self-insert", false},
			Unescape(`r`):                  Bind{"self-insert", false},
			Unescape(`s`):                  Bind{"self-insert", false},
			Unescape(`t`):                  Bind{"self-insert", false},
			Unescape(`u`):                  Bind{"self-insert", false},
			Unescape(`v`):                  Bind{"self-insert", false},
			Unescape(`w`):                  Bind{"self-insert", false},
			Unescape(`x`):                  Bind{"self-insert", false},
			Unescape(`y`):                  Bind{"self-insert", false},
			Unescape(`z`):                  Bind{"self-insert", false},
			Unescape(`{`):                  Bind{"self-insert", false},
			Unescape(`|`):                  Bind{"self-insert", false},
			Unescape(`}`):                  Bind{"self-insert", false},
			Unescape(`~`):                  Bind{"self-insert", false},
			Unescape(`\200`):               Bind{"self-insert", false},
			Unescape(`\201`):               Bind{"self-insert", false},
			Unescape(`\202`):               Bind{"self-insert", false},
			Unescape(`\203`):               Bind{"self-insert", false},
			Unescape(`\204`):               Bind{"self-insert", false},
			Unescape(`\205`):               Bind{"self-insert", false},
			Unescape(`\206`):               Bind{"self-insert", false},
			Unescape(`\207`):               Bind{"self-insert", false},
			Unescape(`\210`):               Bind{"self-insert", false},
			Unescape(`\211`):               Bind{"self-insert", false},
			Unescape(`\212`):               Bind{"self-insert", false},
			Unescape(`\213`):               Bind{"self-insert", false},
			Unescape(`\214`):               Bind{"self-insert", false},
			Unescape(`\215`):               Bind{"self-insert", false},
			Unescape(`\216`):               Bind{"self-insert", false},
			Unescape(`\217`):               Bind{"self-insert", false},
			Unescape(`\220`):               Bind{"self-insert", false},
			Unescape(`\221`):               Bind{"self-insert", false},
			Unescape(`\222`):               Bind{"self-insert", false},
			Unescape(`\223`):               Bind{"self-insert", false},
			Unescape(`\224`):               Bind{"self-insert", false},
			Unescape(`\225`):               Bind{"self-insert", false},
			Unescape(`\226`):               Bind{"self-insert", false},
			Unescape(`\227`):               Bind{"self-insert", false},
			Unescape(`\230`):               Bind{"self-insert", false},
			Unescape(`\231`):               Bind{"self-insert", false},
			Unescape(`\232`):               Bind{"self-insert", false},
			Unescape(`\233`):               Bind{"self-insert", false},
			Unescape(`\234`):               Bind{"self-insert", false},
			Unescape(`\235`):               Bind{"self-insert", false},
			Unescape(`\236`):               Bind{"self-insert", false},
			Unescape(`\237`):               Bind{"self-insert", false},
			Unescape(string([]byte{0xa0})): Bind{"self-insert", false},
			Unescape(string([]byte{0xa1})): Bind{"self-insert", false},
			Unescape(string([]byte{0xa2})): Bind{"self-insert", false},
			Unescape(string([]byte{0xa3})): Bind{"self-insert", false},
			Unescape(string([]byte{0xa4})): Bind{"self-insert", false},
			Unescape(string([]byte{0xa5})): Bind{"self-insert", false},
			Unescape(string([]byte{0xa6})): Bind{"self-insert", false},
			Unescape(string([]byte{0xa7})): Bind{"self-insert", false},
			Unescape(string([]byte{0xa8})): Bind{"self-insert", false},
			Unescape(string([]byte{0xa9})): Bind{"self-insert", false},
			Unescape(string([]byte{0xaa})): Bind{"self-insert", false},
			Unescape(string([]byte{0xab})): Bind{"self-insert", false},
			Unescape(string([]byte{0xac})): Bind{"self-insert", false},
			Unescape(string([]byte{0xad})): Bind{"self-insert", false},
			Unescape(string([]byte{0xae})): Bind{"self-insert", false},
			Unescape(string([]byte{0xaf})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb0})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb1})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb2})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb3})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb4})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb5})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb6})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb7})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb8})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb9})): Bind{"self-insert", false},
			Unescape(string([]byte{0xba})): Bind{"self-insert", false},
			Unescape(string([]byte{0xbb})): Bind{"self-insert", false},
			Unescape(string([]byte{0xbc})): Bind{"self-insert", false},
			Unescape(string([]byte{0xbd})): Bind{"self-insert", false},
			Unescape(string([]byte{0xbe})): Bind{"self-insert", false},
			Unescape(string([]byte{0xbf})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc0})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc1})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc2})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc3})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc4})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc5})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc6})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc7})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc8})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc9})): Bind{"self-insert", false},
			Unescape(string([]byte{0xca})): Bind{"self-insert", false},
			Unescape(string([]byte{0xcb})): Bind{"self-insert", false},
			Unescape(string([]byte{0xcc})): Bind{"self-insert", false},
			Unescape(string([]byte{0xcd})): Bind{"self-insert", false},
			Unescape(string([]byte{0xce})): Bind{"self-insert", false},
			Unescape(string([]byte{0xcf})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd0})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd1})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd2})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd3})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd4})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd5})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd6})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd7})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd8})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd9})): Bind{"self-insert", false},
			Unescape(string([]byte{0xda})): Bind{"self-insert", false},
			Unescape(string([]byte{0xdb})): Bind{"self-insert", false},
			Unescape(string([]byte{0xdc})): Bind{"self-insert", false},
			Unescape(string([]byte{0xdd})): Bind{"self-insert", false},
			Unescape(string([]byte{0xde})): Bind{"self-insert", false},
			Unescape(string([]byte{0xdf})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe0})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe1})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe2})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe3})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe4})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe5})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe6})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe7})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe8})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe9})): Bind{"self-insert", false},
			Unescape(string([]byte{0xea})): Bind{"self-insert", false},
			Unescape(string([]byte{0xeb})): Bind{"self-insert", false},
			Unescape(string([]byte{0xec})): Bind{"self-insert", false},
			Unescape(string([]byte{0xed})): Bind{"self-insert", false},
			Unescape(string([]byte{0xee})): Bind{"self-insert", false},
			Unescape(string([]byte{0xef})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf0})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf1})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf2})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf3})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf4})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf5})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf6})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf7})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf8})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf9})): Bind{"self-insert", false},
			Unescape(string([]byte{0xfa})): Bind{"self-insert", false},
			Unescape(string([]byte{0xfb})): Bind{"self-insert", false},
			Unescape(string([]byte{0xfc})): Bind{"self-insert", false},
			Unescape(string([]byte{0xfd})): Bind{"self-insert", false},
			Unescape(string([]byte{0xfe})): Bind{"self-insert", false},
			Unescape(string([]byte{0xff})): Bind{"self-insert", false},
			Unescape(`\C-@`):               Bind{"set-mark", false},
			Unescape(`\M- `):               Bind{"set-mark", false},
			// shell-backward-kill-word (not bound)
			Unescape(`\M-\C-b`): Bind{"shell-backward-word", false},
			Unescape(`\M-\C-e`): Bind{"shell-expand-line", false},
			Unescape(`\M-\C-f`): Bind{"shell-forward-word", false},
			Unescape(`\M-\C-d`): Bind{"shell-kill-word", false},
			Unescape(`\M-\C-t`): Bind{"shell-transpose-words", false},
			// skip-csi-sequence (not bound)
			Unescape(`\C-x(`): Bind{"start-kbd-macro", false},
			// tab-insert (not bound)
			Unescape(`\M-&`): Bind{"tilde-expand", false},
			Unescape(`\C-t`): Bind{"transpose-chars", false},
			Unescape(`\M-t`): Bind{"transpose-words", false},
			// tty-status (not bound)
			Unescape(`\C-x\C-u`): Bind{"undo", false},
			Unescape(`\C-_`):     Bind{"undo", false},
			// universal-argument (not bound)
			// unix-filename-rubout (not bound)
			Unescape(`\C-u`): Bind{"unix-line-discard", false},
			Unescape(`\C-w`): Bind{"unix-word-rubout", false},
			Unescape(`\M-u`): Bind{"upcase-word", false},
			// vi-append-eol (not bound)
			// vi-append-mode (not bound)
			// vi-arg-digit (not bound)
			// vi-bWord (not bound)
			// vi-back-to-indent (not bound)
			// vi-backward-bigword (not bound)
			// vi-backward-word (not bound)
			// vi-bword (not bound)
			// vi-change-case (not bound)
			// vi-change-char (not bound)
			// vi-change-to (not bound)
			// vi-char-search (not bound)
			// vi-column (not bound)
			// vi-complete (not bound)
			// vi-delete (not bound)
			// vi-delete-to (not bound)
			// vi-eWord (not bound)
			// vi-editing-mode (not bound)
			// vi-end-bigword (not bound)
			// vi-end-word (not bound)
			// vi-eof-maybe (not bound)
			// vi-eword (not bound)
			// vi-fWord (not bound)
			// vi-fetch-history (not bound)
			// vi-first-print (not bound)
			// vi-forward-bigword (not bound)
			// vi-forward-word (not bound)
			// vi-fword (not bound)
			// vi-goto-mark (not bound)
			// vi-insert-beg (not bound)
			// vi-insertion-mode (not bound)
			// vi-match (not bound)
			// vi-movement-mode (not bound)
			// vi-next-word (not bound)
			// vi-overstrike (not bound)
			// vi-overstrike-delete (not bound)
			// vi-prev-word (not bound)
			// vi-put (not bound)
			// vi-redo (not bound)
			// vi-replace (not bound)
			// vi-rubout (not bound)
			// vi-search (not bound)
			// vi-search-again (not bound)
			// vi-set-mark (not bound)
			// vi-subst (not bound)
			// vi-tilde-expand (not bound)
			// vi-unix-word-rubout (not bound)
			// vi-yank-arg (not bound)
			// vi-yank-pop (not bound)
			// vi-yank-to (not bound)
			Unescape(`\C-y`): Bind{"yank", false},
			// Unescape(`\M-.`): Bind{"yank-last-arg", false}, // DUPLICATE KEY
			// Unescape(`\M-_`): Bind{"yank-last-arg", false}, // DUPLICATE KEY
			Unescape(`\M-\C-y`): Bind{"yank-nth-arg", false},
			Unescape(`\M-y`):    Bind{"yank-pop", false},
		},
		"emacs-meta": map[string]Bind{
			Unescape(`\C-g`): Bind{"abort", false},
			// accept-line (not bound)
			// alias-expand-line (not bound)
			// arrow-key-prefix (not bound)
			// backward-byte (not bound)
			Unescape(`OD`): Bind{"backward-char", false},
			Unescape(`[D`): Bind{"backward-char", false},
			// backward-delete-char (not bound)
			// backward-kill-line (not bound)
			Unescape(`\C-h`):  Bind{"backward-kill-word", false},
			Unescape(`\C-?`):  Bind{"backward-kill-word", false},
			Unescape(`[1;3D`): Bind{"backward-word", false},
			Unescape(`[1;5D`): Bind{"backward-word", false},
			Unescape(`b`):     Bind{"backward-word", false},
			Unescape(`<`):     Bind{"beginning-of-history", false},
			Unescape(`OH`):    Bind{"beginning-of-line", false},
			Unescape(`[H`):    Bind{"beginning-of-line", false},
			Unescape(`[200~`): Bind{"bracketed-paste-begin", false},
			// call-last-kbd-macro (not bound)
			Unescape(`c`): Bind{"capitalize-word", false},
			// character-search (not bound)
			Unescape(`\C-]`): Bind{"character-search-backward", false},
			Unescape(`\C-l`): Bind{"clear-display", false},
			// clear-screen (not bound)
			Unescape(`\e`): Bind{"complete", false},
			Unescape(`!`):  Bind{"complete-command", false},
			Unescape(`/`):  Bind{"complete-filename", false},
			Unescape(`@`):  Bind{"complete-hostname", false},
			Unescape(`{`):  Bind{"complete-into-braces", false},
			Unescape(`~`):  Bind{"complete-username", false},
			Unescape(`$`):  Bind{"complete-variable", false},
			// copy-backward-word (not bound)
			// copy-forward-word (not bound)
			// copy-region-as-kill (not bound)
			// dabbrev-expand (not bound)
			// delete-char (not bound)
			// delete-char-or-list (not bound)
			Unescape(`\\`): Bind{"delete-horizontal-space", false},
			Unescape(`-`):  Bind{"digit-argument", false},
			Unescape(`0`):  Bind{"digit-argument", false},
			Unescape(`1`):  Bind{"digit-argument", false},
			Unescape(`2`):  Bind{"digit-argument", false},
			Unescape(`3`):  Bind{"digit-argument", false},
			Unescape(`4`):  Bind{"digit-argument", false},
			Unescape(`5`):  Bind{"digit-argument", false},
			Unescape(`6`):  Bind{"digit-argument", false},
			Unescape(`7`):  Bind{"digit-argument", false},
			Unescape(`8`):  Bind{"digit-argument", false},
			Unescape(`9`):  Bind{"digit-argument", false},
			// display-shell-version (not bound)
			Unescape(`A`): Bind{"do-lowercase-version", false},
			Unescape(`B`): Bind{"do-lowercase-version", false},
			Unescape(`C`): Bind{"do-lowercase-version", false},
			Unescape(`D`): Bind{"do-lowercase-version", false},
			Unescape(`E`): Bind{"do-lowercase-version", false},
			Unescape(`F`): Bind{"do-lowercase-version", false},
			Unescape(`G`): Bind{"do-lowercase-version", false},
			Unescape(`H`): Bind{"do-lowercase-version", false},
			Unescape(`I`): Bind{"do-lowercase-version", false},
			Unescape(`J`): Bind{"do-lowercase-version", false},
			Unescape(`K`): Bind{"do-lowercase-version", false},
			Unescape(`L`): Bind{"do-lowercase-version", false},
			Unescape(`M`): Bind{"do-lowercase-version", false},
			Unescape(`N`): Bind{"do-lowercase-version", false},
			Unescape(`P`): Bind{"do-lowercase-version", false},
			Unescape(`Q`): Bind{"do-lowercase-version", false},
			Unescape(`R`): Bind{"do-lowercase-version", false},
			Unescape(`S`): Bind{"do-lowercase-version", false},
			Unescape(`T`): Bind{"do-lowercase-version", false},
			Unescape(`U`): Bind{"do-lowercase-version", false},
			Unescape(`V`): Bind{"do-lowercase-version", false},
			Unescape(`W`): Bind{"do-lowercase-version", false},
			Unescape(`X`): Bind{"do-lowercase-version", false},
			Unescape(`Y`): Bind{"do-lowercase-version", false},
			Unescape(`Z`): Bind{"do-lowercase-version", false},
			Unescape(`l`): Bind{"downcase-word", false},
			// dump-functions (not bound)
			// dump-macros (not bound)
			// dump-variables (not bound)
			Unescape(`\C-i`): Bind{"dynamic-complete-history", false},
			// edit-and-execute-command (not bound)
			// emacs-editing-mode (not bound)
			// end-kbd-macro (not bound)
			Unescape(`>`):  Bind{"end-of-history", false},
			Unescape(`OF`): Bind{"end-of-line", false},
			Unescape(`[F`): Bind{"end-of-line", false},
			// exchange-point-and-mark (not bound)
			// forward-backward-delete-char (not bound)
			// forward-byte (not bound)
			Unescape(`OC`): Bind{"forward-char", false},
			Unescape(`[C`): Bind{"forward-char", false},
			// forward-search-history (not bound)
			Unescape(`[1;3C`): Bind{"forward-word", false},
			Unescape(`[1;5C`): Bind{"forward-word", false},
			Unescape(`f`):     Bind{"forward-word", false},
			Unescape(`g`):     Bind{"glob-complete-word", false},
			// glob-expand-word (not bound)
			// glob-list-expansions (not bound)
			// history-and-alias-expand-line (not bound)
			Unescape(`^`): Bind{"history-expand-line", false},
			// history-search-backward (not bound)
			// history-search-forward (not bound)
			// history-substring-search-backward (not bound)
			// history-substring-search-forward (not bound)
			Unescape(`#`): Bind{"insert-comment", false},
			Unescape(`*`): Bind{"insert-completions", false},
			Unescape(`.`): Bind{"insert-last-argument", false},
			Unescape(`_`): Bind{"insert-last-argument", false},
			// kill-line (not bound)
			// kill-region (not bound)
			// kill-whole-line (not bound)
			Unescape(`[3;5~`): Bind{"kill-word", false},
			Unescape(`d`):     Bind{"kill-word", false},
			// magic-space (not bound)
			// menu-complete (not bound)
			// menu-complete-backward (not bound)
			Unescape(`OB`): Bind{"next-history", false},
			Unescape(`[B`): Bind{"next-history", false},
			// next-screen-line (not bound)
			Unescape(`n`): Bind{"non-incremental-forward-search-history", false},
			// non-incremental-forward-search-history-again (not bound)
			Unescape(`p`): Bind{"non-incremental-reverse-search-history", false},
			// non-incremental-reverse-search-history-again (not bound)
			// old-menu-complete (not bound)
			// operate-and-get-next (not bound)
			// overwrite-mode (not bound)
			// possible-command-completions (not bound)
			Unescape(`=`): Bind{"possible-completions", false},
			Unescape(`?`): Bind{"possible-completions", false},
			// possible-filename-completions (not bound)
			// possible-hostname-completions (not bound)
			// possible-username-completions (not bound)
			// possible-variable-completions (not bound)
			Unescape(`OA`): Bind{"previous-history", false},
			Unescape(`[A`): Bind{"previous-history", false},
			// previous-screen-line (not bound)
			// print-last-kbd-macro (not bound)
			// quoted-insert (not bound)
			// re-read-init-file (not bound)
			// redraw-current-line (not bound)
			// reverse-search-history (not bound)
			Unescape(`\C-r`): Bind{"revert-line", false},
			Unescape(`r`):    Bind{"revert-line", false},
			// self-insert (not bound)
			Unescape(` `): Bind{"set-mark", false},
			// shell-backward-kill-word (not bound)
			Unescape(`\C-b`): Bind{"shell-backward-word", false},
			Unescape(`\C-e`): Bind{"shell-expand-line", false},
			Unescape(`\C-f`): Bind{"shell-forward-word", false},
			Unescape(`\C-d`): Bind{"shell-kill-word", false},
			Unescape(`\C-t`): Bind{"shell-transpose-words", false},
			// skip-csi-sequence (not bound)
			// start-kbd-macro (not bound)
			// tab-insert (not bound)
			Unescape(`&`): Bind{"tilde-expand", false},
			// transpose-chars (not bound)
			Unescape(`t`): Bind{"transpose-words", false},
			// tty-status (not bound)
			// undo (not bound)
			// universal-argument (not bound)
			// unix-filename-rubout (not bound)
			// unix-line-discard (not bound)
			// unix-word-rubout (not bound)
			Unescape(`u`): Bind{"upcase-word", false},
			// vi-append-eol (not bound)
			// vi-append-mode (not bound)
			// vi-arg-digit (not bound)
			// vi-bWord (not bound)
			// vi-back-to-indent (not bound)
			// vi-backward-bigword (not bound)
			// vi-backward-word (not bound)
			// vi-bword (not bound)
			// vi-change-case (not bound)
			// vi-change-char (not bound)
			// vi-change-to (not bound)
			// vi-char-search (not bound)
			// vi-column (not bound)
			// vi-complete (not bound)
			// vi-delete (not bound)
			// vi-delete-to (not bound)
			// vi-eWord (not bound)
			// vi-editing-mode (not bound)
			// vi-end-bigword (not bound)
			// vi-end-word (not bound)
			// vi-eof-maybe (not bound)
			// vi-eword (not bound)
			// vi-fWord (not bound)
			// vi-fetch-history (not bound)
			// vi-first-print (not bound)
			// vi-forward-bigword (not bound)
			// vi-forward-word (not bound)
			// vi-fword (not bound)
			// vi-goto-mark (not bound)
			// vi-insert-beg (not bound)
			// vi-insertion-mode (not bound)
			// vi-match (not bound)
			// vi-movement-mode (not bound)
			// vi-next-word (not bound)
			// vi-overstrike (not bound)
			// vi-overstrike-delete (not bound)
			// vi-prev-word (not bound)
			// vi-put (not bound)
			// vi-redo (not bound)
			// vi-replace (not bound)
			// vi-rubout (not bound)
			// vi-search (not bound)
			// vi-search-again (not bound)
			// vi-set-mark (not bound)
			// vi-subst (not bound)
			// vi-tilde-expand (not bound)
			// vi-unix-word-rubout (not bound)
			// vi-yank-arg (not bound)
			// vi-yank-pop (not bound)
			// vi-yank-to (not bound)
			// yank (not bound)
			// Unescape(`.`): Bind{"yank-last-arg", false}, // DUPLICATE KEY
			// Unescape(`_`): Bind{"yank-last-arg", false}, // DUPLICATE KEY
			Unescape(`\C-y`): Bind{"yank-nth-arg", false},
			Unescape(`y`):    Bind{"yank-pop", false},
		},
		"emacs-ctlx": map[string]Bind{
			Unescape(`\C-g`): Bind{"abort", false},
			// accept-line (not bound)
			// alias-expand-line (not bound)
			// arrow-key-prefix (not bound)
			// backward-byte (not bound)
			// backward-char (not bound)
			// backward-delete-char (not bound)
			Unescape(`\C-?`): Bind{"backward-kill-line", false},
			// backward-kill-word (not bound)
			// backward-word (not bound)
			// beginning-of-history (not bound)
			// beginning-of-line (not bound)
			// bracketed-paste-begin (not bound)
			Unescape(`e`): Bind{"call-last-kbd-macro", false},
			// capitalize-word (not bound)
			// character-search (not bound)
			// character-search-backward (not bound)
			// clear-display (not bound)
			// clear-screen (not bound)
			// complete (not bound)
			// complete-command (not bound)
			// complete-filename (not bound)
			// complete-hostname (not bound)
			// complete-into-braces (not bound)
			// complete-username (not bound)
			// complete-variable (not bound)
			// copy-backward-word (not bound)
			// copy-forward-word (not bound)
			// copy-region-as-kill (not bound)
			// dabbrev-expand (not bound)
			// delete-char (not bound)
			// delete-char-or-list (not bound)
			// delete-horizontal-space (not bound)
			// digit-argument (not bound)
			Unescape(`\C-v`): Bind{"display-shell-version", false},
			Unescape(`A`):    Bind{"do-lowercase-version", false},
			Unescape(`B`):    Bind{"do-lowercase-version", false},
			Unescape(`C`):    Bind{"do-lowercase-version", false},
			Unescape(`D`):    Bind{"do-lowercase-version", false},
			Unescape(`E`):    Bind{"do-lowercase-version", false},
			Unescape(`F`):    Bind{"do-lowercase-version", false},
			Unescape(`G`):    Bind{"do-lowercase-version", false},
			Unescape(`H`):    Bind{"do-lowercase-version", false},
			Unescape(`I`):    Bind{"do-lowercase-version", false},
			Unescape(`J`):    Bind{"do-lowercase-version", false},
			Unescape(`K`):    Bind{"do-lowercase-version", false},
			Unescape(`L`):    Bind{"do-lowercase-version", false},
			Unescape(`M`):    Bind{"do-lowercase-version", false},
			Unescape(`N`):    Bind{"do-lowercase-version", false},
			Unescape(`O`):    Bind{"do-lowercase-version", false},
			Unescape(`P`):    Bind{"do-lowercase-version", false},
			Unescape(`Q`):    Bind{"do-lowercase-version", false},
			Unescape(`R`):    Bind{"do-lowercase-version", false},
			Unescape(`S`):    Bind{"do-lowercase-version", false},
			Unescape(`T`):    Bind{"do-lowercase-version", false},
			Unescape(`U`):    Bind{"do-lowercase-version", false},
			Unescape(`V`):    Bind{"do-lowercase-version", false},
			Unescape(`W`):    Bind{"do-lowercase-version", false},
			Unescape(`X`):    Bind{"do-lowercase-version", false},
			Unescape(`Y`):    Bind{"do-lowercase-version", false},
			Unescape(`Z`):    Bind{"do-lowercase-version", false},
			// downcase-word (not bound)
			// dump-functions (not bound)
			// dump-macros (not bound)
			// dump-variables (not bound)
			// dynamic-complete-history (not bound)
			Unescape(`\C-e`): Bind{"edit-and-execute-command", false},
			// emacs-editing-mode (not bound)
			Unescape(`)`): Bind{"end-kbd-macro", false},
			// end-of-history (not bound)
			// end-of-line (not bound)
			Unescape(`\C-x`): Bind{"exchange-point-and-mark", false},
			// forward-backward-delete-char (not bound)
			// forward-byte (not bound)
			// forward-char (not bound)
			// forward-search-history (not bound)
			// forward-word (not bound)
			// glob-complete-word (not bound)
			Unescape(`*`): Bind{"glob-expand-word", false},
			Unescape(`g`): Bind{"glob-list-expansions", false},
			// history-and-alias-expand-line (not bound)
			// history-expand-line (not bound)
			// history-search-backward (not bound)
			// history-search-forward (not bound)
			// history-substring-search-backward (not bound)
			// history-substring-search-forward (not bound)
			// insert-comment (not bound)
			// insert-completions (not bound)
			// insert-last-argument (not bound)
			// kill-line (not bound)
			// kill-region (not bound)
			// kill-whole-line (not bound)
			// kill-word (not bound)
			// magic-space (not bound)
			// menu-complete (not bound)
			// menu-complete-backward (not bound)
			// next-history (not bound)
			// next-screen-line (not bound)
			// non-incremental-forward-search-history (not bound)
			// non-incremental-forward-search-history-again (not bound)
			// non-incremental-reverse-search-history (not bound)
			// non-incremental-reverse-search-history-again (not bound)
			// old-menu-complete (not bound)
			// operate-and-get-next (not bound)
			// overwrite-mode (not bound)
			Unescape(`!`): Bind{"possible-command-completions", false},
			// possible-completions (not bound)
			Unescape(`/`): Bind{"possible-filename-completions", false},
			Unescape(`@`): Bind{"possible-hostname-completions", false},
			Unescape(`~`): Bind{"possible-username-completions", false},
			Unescape(`$`): Bind{"possible-variable-completions", false},
			// previous-history (not bound)
			// previous-screen-line (not bound)
			// print-last-kbd-macro (not bound)
			// quoted-insert (not bound)
			Unescape(`\C-r`): Bind{"re-read-init-file", false},
			// redraw-current-line (not bound)
			// reverse-search-history (not bound)
			// revert-line (not bound)
			// self-insert (not bound)
			// set-mark (not bound)
			// shell-backward-kill-word (not bound)
			// shell-backward-word (not bound)
			// shell-expand-line (not bound)
			// shell-forward-word (not bound)
			// shell-kill-word (not bound)
			// shell-transpose-words (not bound)
			// skip-csi-sequence (not bound)
			Unescape(`(`): Bind{"start-kbd-macro", false},
			// tab-insert (not bound)
			// tilde-expand (not bound)
			// transpose-chars (not bound)
			// transpose-words (not bound)
			// tty-status (not bound)
			Unescape(`\C-u`): Bind{"undo", false},
			// universal-argument (not bound)
			// unix-filename-rubout (not bound)
			// unix-line-discard (not bound)
			// unix-word-rubout (not bound)
			// upcase-word (not bound)
			// vi-append-eol (not bound)
			// vi-append-mode (not bound)
			// vi-arg-digit (not bound)
			// vi-bWord (not bound)
			// vi-back-to-indent (not bound)
			// vi-backward-bigword (not bound)
			// vi-backward-word (not bound)
			// vi-bword (not bound)
			// vi-change-case (not bound)
			// vi-change-char (not bound)
			// vi-change-to (not bound)
			// vi-char-search (not bound)
			// vi-column (not bound)
			// vi-complete (not bound)
			// vi-delete (not bound)
			// vi-delete-to (not bound)
			// vi-eWord (not bound)
			// vi-editing-mode (not bound)
			// vi-end-bigword (not bound)
			// vi-end-word (not bound)
			// vi-eof-maybe (not bound)
			// vi-eword (not bound)
			// vi-fWord (not bound)
			// vi-fetch-history (not bound)
			// vi-first-print (not bound)
			// vi-forward-bigword (not bound)
			// vi-forward-word (not bound)
			// vi-fword (not bound)
			// vi-goto-mark (not bound)
			// vi-insert-beg (not bound)
			// vi-insertion-mode (not bound)
			// vi-match (not bound)
			// vi-movement-mode (not bound)
			// vi-next-word (not bound)
			// vi-overstrike (not bound)
			// vi-overstrike-delete (not bound)
			// vi-prev-word (not bound)
			// vi-put (not bound)
			// vi-redo (not bound)
			// vi-replace (not bound)
			// vi-rubout (not bound)
			// vi-search (not bound)
			// vi-search-again (not bound)
			// vi-set-mark (not bound)
			// vi-subst (not bound)
			// vi-tilde-expand (not bound)
			// vi-unix-word-rubout (not bound)
			// vi-yank-arg (not bound)
			// vi-yank-pop (not bound)
			// vi-yank-to (not bound)
			// yank (not bound)
			// yank-last-arg (not bound)
			// yank-nth-arg (not bound)
			// yank-pop (not bound)
		},
		"vi": map[string]Bind{
			Unescape(`\C-g`): Bind{"abort", false},
			Unescape(`\C-j`): Bind{"accept-line", false},
			Unescape(`\C-m`): Bind{"accept-line", false},
			// alias-expand-line (not bound)
			// arrow-key-prefix (not bound)
			// backward-byte (not bound)
			Unescape(`\C-h`):  Bind{"backward-char", false},
			Unescape(`\M-OD`): Bind{"backward-char", false},
			Unescape(`\M-[D`): Bind{"backward-char", false},
			Unescape(`h`):     Bind{"backward-char", false},
			// backward-delete-char (not bound)
			// backward-kill-line (not bound)
			// backward-kill-word (not bound)
			Unescape(`\M-[1;3D`): Bind{"backward-word", false},
			Unescape(`\M-[1;5D`): Bind{"backward-word", false},
			// beginning-of-history (not bound)
			Unescape(`\M-OH`): Bind{"beginning-of-line", false},
			Unescape(`\M-[H`): Bind{"beginning-of-line", false},
			Unescape(`0`):     Bind{"beginning-of-line", false},
			// bracketed-paste-begin (not bound)
			// call-last-kbd-macro (not bound)
			// capitalize-word (not bound)
			// character-search (not bound)
			// character-search-backward (not bound)
			// clear-display (not bound)
			Unescape(`\C-l`): Bind{"clear-screen", false},
			// complete (not bound)
			// complete-command (not bound)
			// complete-filename (not bound)
			// complete-hostname (not bound)
			// complete-into-braces (not bound)
			// complete-username (not bound)
			// complete-variable (not bound)
			// copy-backward-word (not bound)
			// copy-forward-word (not bound)
			// copy-region-as-kill (not bound)
			// dabbrev-expand (not bound)
			// delete-char (not bound)
			// delete-char-or-list (not bound)
			// delete-horizontal-space (not bound)
			// digit-argument (not bound)
			// display-shell-version (not bound)
			// do-lowercase-version (not bound)
			// downcase-word (not bound)
			// dump-functions (not bound)
			// dump-macros (not bound)
			// dump-variables (not bound)
			// dynamic-complete-history (not bound)
			// edit-and-execute-command (not bound)
			// emacs-editing-mode (not bound)
			// end-kbd-macro (not bound)
			// end-of-history (not bound)
			Unescape(`\M-OF`): Bind{"end-of-line", false},
			Unescape(`\M-[F`): Bind{"end-of-line", false},
			Unescape(`$`):     Bind{"end-of-line", false},
			// exchange-point-and-mark (not bound)
			// forward-backward-delete-char (not bound)
			// forward-byte (not bound)
			Unescape(`\M-OC`):    Bind{"forward-char", false},
			Unescape(`\M-[C`):    Bind{"forward-char", false},
			Unescape(` `):        Bind{"forward-char", false},
			Unescape(`l`):        Bind{"forward-char", false},
			Unescape(`\C-s`):     Bind{"forward-search-history", false},
			Unescape(`\M-[1;3C`): Bind{"forward-word", false},
			Unescape(`\M-[1;5C`): Bind{"forward-word", false},
			// glob-complete-word (not bound)
			// glob-expand-word (not bound)
			// glob-list-expansions (not bound)
			// history-and-alias-expand-line (not bound)
			// history-expand-line (not bound)
			// history-search-backward (not bound)
			// history-search-forward (not bound)
			// history-substring-search-backward (not bound)
			// history-substring-search-forward (not bound)
			Unescape(`#`): Bind{"insert-comment", false},
			// insert-completions (not bound)
			// insert-last-argument (not bound)
			Unescape(`\C-k`): Bind{"kill-line", false},
			// kill-region (not bound)
			// kill-whole-line (not bound)
			Unescape(`\M-[3;5~`): Bind{"kill-word", false},
			// magic-space (not bound)
			// menu-complete (not bound)
			// menu-complete-backward (not bound)
			Unescape(`\C-n`):  Bind{"next-history", false},
			Unescape(`\M-OB`): Bind{"next-history", false},
			Unescape(`\M-[B`): Bind{"next-history", false},
			Unescape(`+`):     Bind{"next-history", false},
			Unescape(`j`):     Bind{"next-history", false},
			// next-screen-line (not bound)
			// non-incremental-forward-search-history (not bound)
			// non-incremental-forward-search-history-again (not bound)
			// non-incremental-reverse-search-history (not bound)
			// non-incremental-reverse-search-history-again (not bound)
			// old-menu-complete (not bound)
			// operate-and-get-next (not bound)
			// overwrite-mode (not bound)
			// possible-command-completions (not bound)
			// possible-completions (not bound)
			// possible-filename-completions (not bound)
			// possible-hostname-completions (not bound)
			// possible-username-completions (not bound)
			// possible-variable-completions (not bound)
			Unescape(`\C-p`):  Bind{"previous-history", false},
			Unescape(`\M-OA`): Bind{"previous-history", false},
			Unescape(`\M-[A`): Bind{"previous-history", false},
			Unescape(`-`):     Bind{"previous-history", false},
			Unescape(`k`):     Bind{"previous-history", false},
			// previous-screen-line (not bound)
			// print-last-kbd-macro (not bound)
			Unescape(`\C-q`): Bind{"quoted-insert", false},
			Unescape(`\C-v`): Bind{"quoted-insert", false},
			// re-read-init-file (not bound)
			// redraw-current-line (not bound)
			Unescape(`\C-r`): Bind{"reverse-search-history", false},
			Unescape(`U`):    Bind{"revert-line", false},
			// self-insert (not bound)
			// set-mark (not bound)
			// shell-backward-kill-word (not bound)
			// shell-backward-word (not bound)
			// shell-expand-line (not bound)
			// shell-forward-word (not bound)
			// shell-kill-word (not bound)
			// shell-transpose-words (not bound)
			// skip-csi-sequence (not bound)
			// start-kbd-macro (not bound)
			// tab-insert (not bound)
			// tilde-expand (not bound)
			Unescape(`\C-t`): Bind{"transpose-chars", false},
			// transpose-words (not bound)
			// tty-status (not bound)
			// undo (not bound)
			// universal-argument (not bound)
			// unix-filename-rubout (not bound)
			Unescape(`\C-u`): Bind{"unix-line-discard", false},
			// unix-word-rubout (not bound)
			// upcase-word (not bound)
			Unescape(`A`): Bind{"vi-append-eol", false},
			Unescape(`a`): Bind{"vi-append-mode", false},
			Unescape(`1`): Bind{"vi-arg-digit", false},
			Unescape(`2`): Bind{"vi-arg-digit", false},
			Unescape(`3`): Bind{"vi-arg-digit", false},
			Unescape(`4`): Bind{"vi-arg-digit", false},
			Unescape(`5`): Bind{"vi-arg-digit", false},
			Unescape(`6`): Bind{"vi-arg-digit", false},
			Unescape(`7`): Bind{"vi-arg-digit", false},
			Unescape(`8`): Bind{"vi-arg-digit", false},
			Unescape(`9`): Bind{"vi-arg-digit", false},
			// vi-bWord (not bound)
			// vi-back-to-indent (not bound)
			// vi-backward-bigword (not bound)
			// vi-backward-word (not bound)
			// vi-bword (not bound)
			Unescape(`~`): Bind{"vi-change-case", false},
			Unescape(`r`): Bind{"vi-change-char", false},
			Unescape(`C`): Bind{"vi-change-to", false},
			Unescape(`c`): Bind{"vi-change-to", false},
			Unescape(`,`): Bind{"vi-char-search", false},
			Unescape(`;`): Bind{"vi-char-search", false},
			Unescape(`F`): Bind{"vi-char-search", false},
			Unescape(`T`): Bind{"vi-char-search", false},
			Unescape(`f`): Bind{"vi-char-search", false},
			Unescape(`t`): Bind{"vi-char-search", false},
			Unescape(`|`): Bind{"vi-column", false},
			// vi-complete (not bound)
			Unescape(`x`): Bind{"vi-delete", false},
			Unescape(`D`): Bind{"vi-delete-to", false},
			Unescape(`d`): Bind{"vi-delete-to", false},
			// vi-eWord (not bound)
			// vi-editing-mode (not bound)
			// vi-end-bigword (not bound)
			Unescape(`E`):    Bind{"vi-end-word", false},
			Unescape(`e`):    Bind{"vi-end-word", false},
			Unescape(`\C-d`): Bind{"vi-eof-maybe", false},
			// vi-eword (not bound)
			// vi-fWord (not bound)
			Unescape(`G`): Bind{"vi-fetch-history", false},
			Unescape(`^`): Bind{"vi-first-print", false},
			// vi-forward-bigword (not bound)
			// vi-forward-word (not bound)
			// vi-fword (not bound)
			Unescape("`"): Bind{"vi-goto-mark", false},
			Unescape(`I`): Bind{"vi-insert-beg", false},
			Unescape(`i`): Bind{"vi-insertion-mode", false},
			Unescape(`%`): Bind{"vi-match", false},
			// vi-movement-mode (not bound)
			Unescape(`W`): Bind{"vi-next-word", false},
			Unescape(`w`): Bind{"vi-next-word", false},
			// vi-overstrike (not bound)
			// vi-overstrike-delete (not bound)
			Unescape(`B`):    Bind{"vi-prev-word", false},
			Unescape(`b`):    Bind{"vi-prev-word", false},
			Unescape(`P`):    Bind{"vi-put", false},
			Unescape(`p`):    Bind{"vi-put", false},
			Unescape(`.`):    Bind{"vi-redo", false},
			Unescape(`R`):    Bind{"vi-replace", false},
			Unescape(`X`):    Bind{"vi-rubout", false},
			Unescape(`/`):    Bind{"vi-search", false},
			Unescape(`?`):    Bind{"vi-search", false},
			Unescape(`N`):    Bind{"vi-search-again", false},
			Unescape(`n`):    Bind{"vi-search-again", false},
			Unescape(`m`):    Bind{"vi-set-mark", false},
			Unescape(`S`):    Bind{"vi-subst", false},
			Unescape(`s`):    Bind{"vi-subst", false},
			Unescape(`&`):    Bind{"vi-tilde-expand", false},
			Unescape(`\C-w`): Bind{"vi-unix-word-rubout", false},
			Unescape(`_`):    Bind{"vi-yank-arg", false},
			// vi-yank-pop (not bound)
			Unescape(`Y`):    Bind{"vi-yank-to", false},
			Unescape(`y`):    Bind{"vi-yank-to", false},
			Unescape(`\C-y`): Bind{"yank", false},
			// yank-last-arg (not bound)
			// yank-nth-arg (not bound)
			// yank-pop (not bound)
		},
		"vi-move": map[string]Bind{
			Unescape(`\C-g`): Bind{"abort", false},
			Unescape(`\C-j`): Bind{"accept-line", false},
			Unescape(`\C-m`): Bind{"accept-line", false},
			// alias-expand-line (not bound)
			// arrow-key-prefix (not bound)
			// backward-byte (not bound)
			Unescape(`\C-h`):  Bind{"backward-char", false},
			Unescape(`\M-OD`): Bind{"backward-char", false},
			Unescape(`\M-[D`): Bind{"backward-char", false},
			Unescape(`h`):     Bind{"backward-char", false},
			// backward-delete-char (not bound)
			// backward-kill-line (not bound)
			// backward-kill-word (not bound)
			Unescape(`\M-[1;3D`): Bind{"backward-word", false},
			Unescape(`\M-[1;5D`): Bind{"backward-word", false},
			// beginning-of-history (not bound)
			Unescape(`\M-OH`): Bind{"beginning-of-line", false},
			Unescape(`\M-[H`): Bind{"beginning-of-line", false},
			Unescape(`0`):     Bind{"beginning-of-line", false},
			// bracketed-paste-begin (not bound)
			// call-last-kbd-macro (not bound)
			// capitalize-word (not bound)
			// character-search (not bound)
			// character-search-backward (not bound)
			// clear-display (not bound)
			Unescape(`\C-l`): Bind{"clear-screen", false},
			// complete (not bound)
			// complete-command (not bound)
			// complete-filename (not bound)
			// complete-hostname (not bound)
			// complete-into-braces (not bound)
			// complete-username (not bound)
			// complete-variable (not bound)
			// copy-backward-word (not bound)
			// copy-forward-word (not bound)
			// copy-region-as-kill (not bound)
			// dabbrev-expand (not bound)
			// delete-char (not bound)
			// delete-char-or-list (not bound)
			// delete-horizontal-space (not bound)
			// digit-argument (not bound)
			// display-shell-version (not bound)
			// do-lowercase-version (not bound)
			// downcase-word (not bound)
			// dump-functions (not bound)
			// dump-macros (not bound)
			// dump-variables (not bound)
			// dynamic-complete-history (not bound)
			// edit-and-execute-command (not bound)
			// emacs-editing-mode (not bound)
			// end-kbd-macro (not bound)
			// end-of-history (not bound)
			Unescape(`\M-OF`): Bind{"end-of-line", false},
			Unescape(`\M-[F`): Bind{"end-of-line", false},
			Unescape(`$`):     Bind{"end-of-line", false},
			// exchange-point-and-mark (not bound)
			// forward-backward-delete-char (not bound)
			// forward-byte (not bound)
			Unescape(`\M-OC`):    Bind{"forward-char", false},
			Unescape(`\M-[C`):    Bind{"forward-char", false},
			Unescape(` `):        Bind{"forward-char", false},
			Unescape(`l`):        Bind{"forward-char", false},
			Unescape(`\C-s`):     Bind{"forward-search-history", false},
			Unescape(`\M-[1;3C`): Bind{"forward-word", false},
			Unescape(`\M-[1;5C`): Bind{"forward-word", false},
			// glob-complete-word (not bound)
			// glob-expand-word (not bound)
			// glob-list-expansions (not bound)
			// history-and-alias-expand-line (not bound)
			// history-expand-line (not bound)
			// history-search-backward (not bound)
			// history-search-forward (not bound)
			// history-substring-search-backward (not bound)
			// history-substring-search-forward (not bound)
			Unescape(`#`): Bind{"insert-comment", false},
			// insert-completions (not bound)
			// insert-last-argument (not bound)
			Unescape(`\C-k`): Bind{"kill-line", false},
			// kill-region (not bound)
			// kill-whole-line (not bound)
			Unescape(`\M-[3;5~`): Bind{"kill-word", false},
			// magic-space (not bound)
			// menu-complete (not bound)
			// menu-complete-backward (not bound)
			Unescape(`\C-n`):  Bind{"next-history", false},
			Unescape(`\M-OB`): Bind{"next-history", false},
			Unescape(`\M-[B`): Bind{"next-history", false},
			Unescape(`+`):     Bind{"next-history", false},
			Unescape(`j`):     Bind{"next-history", false},
			// next-screen-line (not bound)
			// non-incremental-forward-search-history (not bound)
			// non-incremental-forward-search-history-again (not bound)
			// non-incremental-reverse-search-history (not bound)
			// non-incremental-reverse-search-history-again (not bound)
			// old-menu-complete (not bound)
			// operate-and-get-next (not bound)
			// overwrite-mode (not bound)
			// possible-command-completions (not bound)
			// possible-completions (not bound)
			// possible-filename-completions (not bound)
			// possible-hostname-completions (not bound)
			// possible-username-completions (not bound)
			// possible-variable-completions (not bound)
			Unescape(`\C-p`):  Bind{"previous-history", false},
			Unescape(`\M-OA`): Bind{"previous-history", false},
			Unescape(`\M-[A`): Bind{"previous-history", false},
			Unescape(`-`):     Bind{"previous-history", false},
			Unescape(`k`):     Bind{"previous-history", false},
			// previous-screen-line (not bound)
			// print-last-kbd-macro (not bound)
			Unescape(`\C-q`): Bind{"quoted-insert", false},
			Unescape(`\C-v`): Bind{"quoted-insert", false},
			// re-read-init-file (not bound)
			// redraw-current-line (not bound)
			Unescape(`\C-r`): Bind{"reverse-search-history", false},
			Unescape(`U`):    Bind{"revert-line", false},
			// self-insert (not bound)
			// set-mark (not bound)
			// shell-backward-kill-word (not bound)
			// shell-backward-word (not bound)
			// shell-expand-line (not bound)
			// shell-forward-word (not bound)
			// shell-kill-word (not bound)
			// shell-transpose-words (not bound)
			// skip-csi-sequence (not bound)
			// start-kbd-macro (not bound)
			// tab-insert (not bound)
			// tilde-expand (not bound)
			Unescape(`\C-t`): Bind{"transpose-chars", false},
			// transpose-words (not bound)
			// tty-status (not bound)
			// undo (not bound)
			// universal-argument (not bound)
			// unix-filename-rubout (not bound)
			Unescape(`\C-u`): Bind{"unix-line-discard", false},
			// unix-word-rubout (not bound)
			// upcase-word (not bound)
			Unescape(`A`): Bind{"vi-append-eol", false},
			Unescape(`a`): Bind{"vi-append-mode", false},
			Unescape(`1`): Bind{"vi-arg-digit", false},
			Unescape(`2`): Bind{"vi-arg-digit", false},
			Unescape(`3`): Bind{"vi-arg-digit", false},
			Unescape(`4`): Bind{"vi-arg-digit", false},
			Unescape(`5`): Bind{"vi-arg-digit", false},
			Unescape(`6`): Bind{"vi-arg-digit", false},
			Unescape(`7`): Bind{"vi-arg-digit", false},
			Unescape(`8`): Bind{"vi-arg-digit", false},
			Unescape(`9`): Bind{"vi-arg-digit", false},
			// vi-bWord (not bound)
			// vi-back-to-indent (not bound)
			// vi-backward-bigword (not bound)
			// vi-backward-word (not bound)
			// vi-bword (not bound)
			Unescape(`~`): Bind{"vi-change-case", false},
			Unescape(`r`): Bind{"vi-change-char", false},
			Unescape(`C`): Bind{"vi-change-to", false},
			Unescape(`c`): Bind{"vi-change-to", false},
			Unescape(`,`): Bind{"vi-char-search", false},
			Unescape(`;`): Bind{"vi-char-search", false},
			Unescape(`F`): Bind{"vi-char-search", false},
			Unescape(`T`): Bind{"vi-char-search", false},
			Unescape(`f`): Bind{"vi-char-search", false},
			Unescape(`t`): Bind{"vi-char-search", false},
			Unescape(`|`): Bind{"vi-column", false},
			// vi-complete (not bound)
			Unescape(`x`): Bind{"vi-delete", false},
			Unescape(`D`): Bind{"vi-delete-to", false},
			Unescape(`d`): Bind{"vi-delete-to", false},
			// vi-eWord (not bound)
			// vi-editing-mode (not bound)
			// vi-end-bigword (not bound)
			Unescape(`E`):    Bind{"vi-end-word", false},
			Unescape(`e`):    Bind{"vi-end-word", false},
			Unescape(`\C-d`): Bind{"vi-eof-maybe", false},
			// vi-eword (not bound)
			// vi-fWord (not bound)
			Unescape(`G`): Bind{"vi-fetch-history", false},
			Unescape(`^`): Bind{"vi-first-print", false},
			// vi-forward-bigword (not bound)
			// vi-forward-word (not bound)
			// vi-fword (not bound)
			Unescape("`"): Bind{"vi-goto-mark", false},
			Unescape(`I`): Bind{"vi-insert-beg", false},
			Unescape(`i`): Bind{"vi-insertion-mode", false},
			Unescape(`%`): Bind{"vi-match", false},
			// vi-movement-mode (not bound)
			Unescape(`W`): Bind{"vi-next-word", false},
			Unescape(`w`): Bind{"vi-next-word", false},
			// vi-overstrike (not bound)
			// vi-overstrike-delete (not bound)
			Unescape(`B`):    Bind{"vi-prev-word", false},
			Unescape(`b`):    Bind{"vi-prev-word", false},
			Unescape(`P`):    Bind{"vi-put", false},
			Unescape(`p`):    Bind{"vi-put", false},
			Unescape(`.`):    Bind{"vi-redo", false},
			Unescape(`R`):    Bind{"vi-replace", false},
			Unescape(`X`):    Bind{"vi-rubout", false},
			Unescape(`/`):    Bind{"vi-search", false},
			Unescape(`?`):    Bind{"vi-search", false},
			Unescape(`N`):    Bind{"vi-search-again", false},
			Unescape(`n`):    Bind{"vi-search-again", false},
			Unescape(`m`):    Bind{"vi-set-mark", false},
			Unescape(`S`):    Bind{"vi-subst", false},
			Unescape(`s`):    Bind{"vi-subst", false},
			Unescape(`&`):    Bind{"vi-tilde-expand", false},
			Unescape(`\C-w`): Bind{"vi-unix-word-rubout", false},
			Unescape(`_`):    Bind{"vi-yank-arg", false},
			// vi-yank-pop (not bound)
			Unescape(`Y`):    Bind{"vi-yank-to", false},
			Unescape(`y`):    Bind{"vi-yank-to", false},
			Unescape(`\C-y`): Bind{"yank", false},
			// yank-last-arg (not bound)
			// yank-nth-arg (not bound)
			// yank-pop (not bound)
		},
		"vi-command": map[string]Bind{
			Unescape(`\C-g`): Bind{"abort", false},
			Unescape(`\C-j`): Bind{"accept-line", false},
			Unescape(`\C-m`): Bind{"accept-line", false},
			// alias-expand-line (not bound)
			// arrow-key-prefix (not bound)
			// backward-byte (not bound)
			Unescape(`\C-h`):  Bind{"backward-char", false},
			Unescape(`\M-OD`): Bind{"backward-char", false},
			Unescape(`\M-[D`): Bind{"backward-char", false},
			Unescape(`h`):     Bind{"backward-char", false},
			// backward-delete-char (not bound)
			// backward-kill-line (not bound)
			// backward-kill-word (not bound)
			Unescape(`\M-[1;3D`): Bind{"backward-word", false},
			Unescape(`\M-[1;5D`): Bind{"backward-word", false},
			// beginning-of-history (not bound)
			Unescape(`\M-OH`): Bind{"beginning-of-line", false},
			Unescape(`\M-[H`): Bind{"beginning-of-line", false},
			Unescape(`0`):     Bind{"beginning-of-line", false},
			// bracketed-paste-begin (not bound)
			// call-last-kbd-macro (not bound)
			// capitalize-word (not bound)
			// character-search (not bound)
			// character-search-backward (not bound)
			// clear-display (not bound)
			Unescape(`\C-l`): Bind{"clear-screen", false},
			// complete (not bound)
			// complete-command (not bound)
			// complete-filename (not bound)
			// complete-hostname (not bound)
			// complete-into-braces (not bound)
			// complete-username (not bound)
			// complete-variable (not bound)
			// copy-backward-word (not bound)
			// copy-forward-word (not bound)
			// copy-region-as-kill (not bound)
			// dabbrev-expand (not bound)
			// delete-char (not bound)
			// delete-char-or-list (not bound)
			// delete-horizontal-space (not bound)
			// digit-argument (not bound)
			// display-shell-version (not bound)
			// do-lowercase-version (not bound)
			// downcase-word (not bound)
			// dump-functions (not bound)
			// dump-macros (not bound)
			// dump-variables (not bound)
			// dynamic-complete-history (not bound)
			// edit-and-execute-command (not bound)
			// emacs-editing-mode (not bound)
			// end-kbd-macro (not bound)
			// end-of-history (not bound)
			Unescape(`\M-OF`): Bind{"end-of-line", false},
			Unescape(`\M-[F`): Bind{"end-of-line", false},
			Unescape(`$`):     Bind{"end-of-line", false},
			// exchange-point-and-mark (not bound)
			// forward-backward-delete-char (not bound)
			// forward-byte (not bound)
			Unescape(`\M-OC`):    Bind{"forward-char", false},
			Unescape(`\M-[C`):    Bind{"forward-char", false},
			Unescape(` `):        Bind{"forward-char", false},
			Unescape(`l`):        Bind{"forward-char", false},
			Unescape(`\C-s`):     Bind{"forward-search-history", false},
			Unescape(`\M-[1;3C`): Bind{"forward-word", false},
			Unescape(`\M-[1;5C`): Bind{"forward-word", false},
			// glob-complete-word (not bound)
			// glob-expand-word (not bound)
			// glob-list-expansions (not bound)
			// history-and-alias-expand-line (not bound)
			// history-expand-line (not bound)
			// history-search-backward (not bound)
			// history-search-forward (not bound)
			// history-substring-search-backward (not bound)
			// history-substring-search-forward (not bound)
			Unescape(`#`): Bind{"insert-comment", false},
			// insert-completions (not bound)
			// insert-last-argument (not bound)
			Unescape(`\C-k`): Bind{"kill-line", false},
			// kill-region (not bound)
			// kill-whole-line (not bound)
			Unescape(`\M-[3;5~`): Bind{"kill-word", false},
			// magic-space (not bound)
			// menu-complete (not bound)
			// menu-complete-backward (not bound)
			Unescape(`\C-n`):  Bind{"next-history", false},
			Unescape(`\M-OB`): Bind{"next-history", false},
			Unescape(`\M-[B`): Bind{"next-history", false},
			Unescape(`+`):     Bind{"next-history", false},
			Unescape(`j`):     Bind{"next-history", false},
			// next-screen-line (not bound)
			// non-incremental-forward-search-history (not bound)
			// non-incremental-forward-search-history-again (not bound)
			// non-incremental-reverse-search-history (not bound)
			// non-incremental-reverse-search-history-again (not bound)
			// old-menu-complete (not bound)
			// operate-and-get-next (not bound)
			// overwrite-mode (not bound)
			// possible-command-completions (not bound)
			// possible-completions (not bound)
			// possible-filename-completions (not bound)
			// possible-hostname-completions (not bound)
			// possible-username-completions (not bound)
			// possible-variable-completions (not bound)
			Unescape(`\C-p`):  Bind{"previous-history", false},
			Unescape(`\M-OA`): Bind{"previous-history", false},
			Unescape(`\M-[A`): Bind{"previous-history", false},
			Unescape(`-`):     Bind{"previous-history", false},
			Unescape(`k`):     Bind{"previous-history", false},
			// previous-screen-line (not bound)
			// print-last-kbd-macro (not bound)
			Unescape(`\C-q`): Bind{"quoted-insert", false},
			Unescape(`\C-v`): Bind{"quoted-insert", false},
			// re-read-init-file (not bound)
			// redraw-current-line (not bound)
			Unescape(`\C-r`): Bind{"reverse-search-history", false},
			Unescape(`U`):    Bind{"revert-line", false},
			// self-insert (not bound)
			// set-mark (not bound)
			// shell-backward-kill-word (not bound)
			// shell-backward-word (not bound)
			// shell-expand-line (not bound)
			// shell-forward-word (not bound)
			// shell-kill-word (not bound)
			// shell-transpose-words (not bound)
			// skip-csi-sequence (not bound)
			// start-kbd-macro (not bound)
			// tab-insert (not bound)
			// tilde-expand (not bound)
			Unescape(`\C-t`): Bind{"transpose-chars", false},
			// transpose-words (not bound)
			// tty-status (not bound)
			// undo (not bound)
			// universal-argument (not bound)
			// unix-filename-rubout (not bound)
			Unescape(`\C-u`): Bind{"unix-line-discard", false},
			// unix-word-rubout (not bound)
			// upcase-word (not bound)
			Unescape(`A`): Bind{"vi-append-eol", false},
			Unescape(`a`): Bind{"vi-append-mode", false},
			Unescape(`1`): Bind{"vi-arg-digit", false},
			Unescape(`2`): Bind{"vi-arg-digit", false},
			Unescape(`3`): Bind{"vi-arg-digit", false},
			Unescape(`4`): Bind{"vi-arg-digit", false},
			Unescape(`5`): Bind{"vi-arg-digit", false},
			Unescape(`6`): Bind{"vi-arg-digit", false},
			Unescape(`7`): Bind{"vi-arg-digit", false},
			Unescape(`8`): Bind{"vi-arg-digit", false},
			Unescape(`9`): Bind{"vi-arg-digit", false},
			// vi-bWord (not bound)
			// vi-back-to-indent (not bound)
			// vi-backward-bigword (not bound)
			// vi-backward-word (not bound)
			// vi-bword (not bound)
			Unescape(`~`): Bind{"vi-change-case", false},
			Unescape(`r`): Bind{"vi-change-char", false},
			Unescape(`C`): Bind{"vi-change-to", false},
			Unescape(`c`): Bind{"vi-change-to", false},
			Unescape(`,`): Bind{"vi-char-search", false},
			Unescape(`;`): Bind{"vi-char-search", false},
			Unescape(`F`): Bind{"vi-char-search", false},
			Unescape(`T`): Bind{"vi-char-search", false},
			Unescape(`f`): Bind{"vi-char-search", false},
			Unescape(`t`): Bind{"vi-char-search", false},
			Unescape(`|`): Bind{"vi-column", false},
			// vi-complete (not bound)
			Unescape(`x`): Bind{"vi-delete", false},
			Unescape(`D`): Bind{"vi-delete-to", false},
			Unescape(`d`): Bind{"vi-delete-to", false},
			// vi-eWord (not bound)
			// vi-editing-mode (not bound)
			// vi-end-bigword (not bound)
			Unescape(`E`):    Bind{"vi-end-word", false},
			Unescape(`e`):    Bind{"vi-end-word", false},
			Unescape(`\C-d`): Bind{"vi-eof-maybe", false},
			// vi-eword (not bound)
			// vi-fWord (not bound)
			Unescape(`G`): Bind{"vi-fetch-history", false},
			Unescape(`^`): Bind{"vi-first-print", false},
			// vi-forward-bigword (not bound)
			// vi-forward-word (not bound)
			// vi-fword (not bound)
			Unescape("`"): Bind{"vi-goto-mark", false},
			Unescape(`I`): Bind{"vi-insert-beg", false},
			Unescape(`i`): Bind{"vi-insertion-mode", false},
			Unescape(`%`): Bind{"vi-match", false},
			// vi-movement-mode (not bound)
			Unescape(`W`): Bind{"vi-next-word", false},
			Unescape(`w`): Bind{"vi-next-word", false},
			// vi-overstrike (not bound)
			// vi-overstrike-delete (not bound)
			Unescape(`B`):    Bind{"vi-prev-word", false},
			Unescape(`b`):    Bind{"vi-prev-word", false},
			Unescape(`P`):    Bind{"vi-put", false},
			Unescape(`p`):    Bind{"vi-put", false},
			Unescape(`.`):    Bind{"vi-redo", false},
			Unescape(`R`):    Bind{"vi-replace", false},
			Unescape(`X`):    Bind{"vi-rubout", false},
			Unescape(`/`):    Bind{"vi-search", false},
			Unescape(`?`):    Bind{"vi-search", false},
			Unescape(`N`):    Bind{"vi-search-again", false},
			Unescape(`n`):    Bind{"vi-search-again", false},
			Unescape(`m`):    Bind{"vi-set-mark", false},
			Unescape(`S`):    Bind{"vi-subst", false},
			Unescape(`s`):    Bind{"vi-subst", false},
			Unescape(`&`):    Bind{"vi-tilde-expand", false},
			Unescape(`\C-w`): Bind{"vi-unix-word-rubout", false},
			Unescape(`_`):    Bind{"vi-yank-arg", false},
			// vi-yank-pop (not bound)
			Unescape(`Y`):    Bind{"vi-yank-to", false},
			Unescape(`y`):    Bind{"vi-yank-to", false},
			Unescape(`\C-y`): Bind{"yank", false},
			// yank-last-arg (not bound)
			// yank-nth-arg (not bound)
			// yank-pop (not bound)
		},
		"vi-insert": map[string]Bind{
			// abort (not bound)
			Unescape(`\C-j`): Bind{"accept-line", false},
			Unescape(`\C-m`): Bind{"accept-line", false},
			// alias-expand-line (not bound)
			// arrow-key-prefix (not bound)
			// backward-byte (not bound)
			Unescape(`\M-OD`): Bind{"backward-char", false},
			Unescape(`\M-[D`): Bind{"backward-char", false},
			Unescape(`\C-h`):  Bind{"backward-delete-char", false},
			Unescape(`\C-?`):  Bind{"backward-delete-char", false},
			// backward-kill-line (not bound)
			// backward-kill-word (not bound)
			Unescape(`\M-[1;3D`): Bind{"backward-word", false},
			Unescape(`\M-[1;5D`): Bind{"backward-word", false},
			// beginning-of-history (not bound)
			Unescape(`\M-OH`):    Bind{"beginning-of-line", false},
			Unescape(`\M-[H`):    Bind{"beginning-of-line", false},
			Unescape(`\M-[200~`): Bind{"bracketed-paste-begin", false},
			// call-last-kbd-macro (not bound)
			// capitalize-word (not bound)
			// character-search (not bound)
			// character-search-backward (not bound)
			// clear-display (not bound)
			// clear-screen (not bound)
			Unescape(`\C-i`): Bind{"complete", false},
			// complete-command (not bound)
			// complete-filename (not bound)
			// complete-hostname (not bound)
			// complete-into-braces (not bound)
			// complete-username (not bound)
			// complete-variable (not bound)
			// copy-backward-word (not bound)
			// copy-forward-word (not bound)
			// copy-region-as-kill (not bound)
			// dabbrev-expand (not bound)
			// delete-char (not bound)
			// delete-char-or-list (not bound)
			// delete-horizontal-space (not bound)
			// digit-argument (not bound)
			// display-shell-version (not bound)
			// do-lowercase-version (not bound)
			// downcase-word (not bound)
			// dump-functions (not bound)
			// dump-macros (not bound)
			// dump-variables (not bound)
			// dynamic-complete-history (not bound)
			// edit-and-execute-command (not bound)
			// emacs-editing-mode (not bound)
			// end-kbd-macro (not bound)
			// end-of-history (not bound)
			Unescape(`\M-OF`): Bind{"end-of-line", false},
			Unescape(`\M-[F`): Bind{"end-of-line", false},
			// exchange-point-and-mark (not bound)
			// forward-backward-delete-char (not bound)
			// forward-byte (not bound)
			Unescape(`\M-OC`):    Bind{"forward-char", false},
			Unescape(`\M-[C`):    Bind{"forward-char", false},
			Unescape(`\C-s`):     Bind{"forward-search-history", false},
			Unescape(`\M-[1;3C`): Bind{"forward-word", false},
			Unescape(`\M-[1;5C`): Bind{"forward-word", false},
			// glob-complete-word (not bound)
			// glob-expand-word (not bound)
			// glob-list-expansions (not bound)
			// history-and-alias-expand-line (not bound)
			// history-expand-line (not bound)
			// history-search-backward (not bound)
			// history-search-forward (not bound)
			// history-substring-search-backward (not bound)
			// history-substring-search-forward (not bound)
			// insert-comment (not bound)
			// insert-completions (not bound)
			// insert-last-argument (not bound)
			// kill-line (not bound)
			// kill-region (not bound)
			// kill-whole-line (not bound)
			Unescape(`\M-[3;5~`): Bind{"kill-word", false},
			// magic-space (not bound)
			Unescape(`\C-n`):  Bind{"menu-complete", false},
			Unescape(`\C-p`):  Bind{"menu-complete-backward", false},
			Unescape(`\M-OB`): Bind{"next-history", false},
			Unescape(`\M-[B`): Bind{"next-history", false},
			// next-screen-line (not bound)
			// non-incremental-forward-search-history (not bound)
			// non-incremental-forward-search-history-again (not bound)
			// non-incremental-reverse-search-history (not bound)
			// non-incremental-reverse-search-history-again (not bound)
			// old-menu-complete (not bound)
			// operate-and-get-next (not bound)
			// overwrite-mode (not bound)
			// possible-command-completions (not bound)
			// possible-completions (not bound)
			// possible-filename-completions (not bound)
			// possible-hostname-completions (not bound)
			// possible-username-completions (not bound)
			// possible-variable-completions (not bound)
			Unescape(`\M-OA`): Bind{"previous-history", false},
			Unescape(`\M-[A`): Bind{"previous-history", false},
			// previous-screen-line (not bound)
			// print-last-kbd-macro (not bound)
			Unescape(`\C-v`): Bind{"quoted-insert", false},
			// re-read-init-file (not bound)
			// redraw-current-line (not bound)
			Unescape(`\C-r`): Bind{"reverse-search-history", false},
			// revert-line (not bound)
			Unescape(`\C-a`):               Bind{"self-insert", false},
			Unescape(`\C-b`):               Bind{"self-insert", false},
			Unescape(`\C-c`):               Bind{"self-insert", false},
			Unescape(`\C-e`):               Bind{"self-insert", false},
			Unescape(`\C-f`):               Bind{"self-insert", false},
			Unescape(`\C-g`):               Bind{"self-insert", false},
			Unescape(`\C-k`):               Bind{"self-insert", false},
			Unescape(`\C-l`):               Bind{"self-insert", false},
			Unescape(`\C-o`):               Bind{"self-insert", false},
			Unescape(`\C-q`):               Bind{"self-insert", false},
			Unescape(`\C-x`):               Bind{"self-insert", false},
			Unescape(`\C-z`):               Bind{"self-insert", false},
			Unescape(`\C-\\`):              Bind{"self-insert", false},
			Unescape(`\C-]`):               Bind{"self-insert", false},
			Unescape(`\C-^`):               Bind{"self-insert", false},
			Unescape(` `):                  Bind{"self-insert", false},
			Unescape(`!`):                  Bind{"self-insert", false},
			Unescape(`\"`):                 Bind{"self-insert", false},
			Unescape(`#`):                  Bind{"self-insert", false},
			Unescape(`$`):                  Bind{"self-insert", false},
			Unescape(`%`):                  Bind{"self-insert", false},
			Unescape(`&`):                  Bind{"self-insert", false},
			Unescape(`'`):                  Bind{"self-insert", false},
			Unescape(`(`):                  Bind{"self-insert", false},
			Unescape(`)`):                  Bind{"self-insert", false},
			Unescape(`*`):                  Bind{"self-insert", false},
			Unescape(`+`):                  Bind{"self-insert", false},
			Unescape(`,`):                  Bind{"self-insert", false},
			Unescape(`-`):                  Bind{"self-insert", false},
			Unescape(`.`):                  Bind{"self-insert", false},
			Unescape(`/`):                  Bind{"self-insert", false},
			Unescape(`0`):                  Bind{"self-insert", false},
			Unescape(`1`):                  Bind{"self-insert", false},
			Unescape(`2`):                  Bind{"self-insert", false},
			Unescape(`3`):                  Bind{"self-insert", false},
			Unescape(`4`):                  Bind{"self-insert", false},
			Unescape(`5`):                  Bind{"self-insert", false},
			Unescape(`6`):                  Bind{"self-insert", false},
			Unescape(`7`):                  Bind{"self-insert", false},
			Unescape(`8`):                  Bind{"self-insert", false},
			Unescape(`9`):                  Bind{"self-insert", false},
			Unescape(`:`):                  Bind{"self-insert", false},
			Unescape(`;`):                  Bind{"self-insert", false},
			Unescape(`<`):                  Bind{"self-insert", false},
			Unescape(`=`):                  Bind{"self-insert", false},
			Unescape(`>`):                  Bind{"self-insert", false},
			Unescape(`?`):                  Bind{"self-insert", false},
			Unescape(`@`):                  Bind{"self-insert", false},
			Unescape(`A`):                  Bind{"self-insert", false},
			Unescape(`B`):                  Bind{"self-insert", false},
			Unescape(`C`):                  Bind{"self-insert", false},
			Unescape(`D`):                  Bind{"self-insert", false},
			Unescape(`E`):                  Bind{"self-insert", false},
			Unescape(`F`):                  Bind{"self-insert", false},
			Unescape(`G`):                  Bind{"self-insert", false},
			Unescape(`H`):                  Bind{"self-insert", false},
			Unescape(`I`):                  Bind{"self-insert", false},
			Unescape(`J`):                  Bind{"self-insert", false},
			Unescape(`K`):                  Bind{"self-insert", false},
			Unescape(`L`):                  Bind{"self-insert", false},
			Unescape(`M`):                  Bind{"self-insert", false},
			Unescape(`N`):                  Bind{"self-insert", false},
			Unescape(`O`):                  Bind{"self-insert", false},
			Unescape(`P`):                  Bind{"self-insert", false},
			Unescape(`Q`):                  Bind{"self-insert", false},
			Unescape(`R`):                  Bind{"self-insert", false},
			Unescape(`S`):                  Bind{"self-insert", false},
			Unescape(`T`):                  Bind{"self-insert", false},
			Unescape(`U`):                  Bind{"self-insert", false},
			Unescape(`V`):                  Bind{"self-insert", false},
			Unescape(`W`):                  Bind{"self-insert", false},
			Unescape(`X`):                  Bind{"self-insert", false},
			Unescape(`Y`):                  Bind{"self-insert", false},
			Unescape(`Z`):                  Bind{"self-insert", false},
			Unescape(`[`):                  Bind{"self-insert", false},
			Unescape(`\\`):                 Bind{"self-insert", false},
			Unescape(`]`):                  Bind{"self-insert", false},
			Unescape(`^`):                  Bind{"self-insert", false},
			Unescape(`_`):                  Bind{"self-insert", false},
			Unescape("`"):                  Bind{"self-insert", false},
			Unescape(`a`):                  Bind{"self-insert", false},
			Unescape(`b`):                  Bind{"self-insert", false},
			Unescape(`c`):                  Bind{"self-insert", false},
			Unescape(`d`):                  Bind{"self-insert", false},
			Unescape(`e`):                  Bind{"self-insert", false},
			Unescape(`f`):                  Bind{"self-insert", false},
			Unescape(`g`):                  Bind{"self-insert", false},
			Unescape(`h`):                  Bind{"self-insert", false},
			Unescape(`i`):                  Bind{"self-insert", false},
			Unescape(`j`):                  Bind{"self-insert", false},
			Unescape(`k`):                  Bind{"self-insert", false},
			Unescape(`l`):                  Bind{"self-insert", false},
			Unescape(`m`):                  Bind{"self-insert", false},
			Unescape(`n`):                  Bind{"self-insert", false},
			Unescape(`o`):                  Bind{"self-insert", false},
			Unescape(`p`):                  Bind{"self-insert", false},
			Unescape(`q`):                  Bind{"self-insert", false},
			Unescape(`r`):                  Bind{"self-insert", false},
			Unescape(`s`):                  Bind{"self-insert", false},
			Unescape(`t`):                  Bind{"self-insert", false},
			Unescape(`u`):                  Bind{"self-insert", false},
			Unescape(`v`):                  Bind{"self-insert", false},
			Unescape(`w`):                  Bind{"self-insert", false},
			Unescape(`x`):                  Bind{"self-insert", false},
			Unescape(`y`):                  Bind{"self-insert", false},
			Unescape(`z`):                  Bind{"self-insert", false},
			Unescape(`{`):                  Bind{"self-insert", false},
			Unescape(`|`):                  Bind{"self-insert", false},
			Unescape(`}`):                  Bind{"self-insert", false},
			Unescape(`~`):                  Bind{"self-insert", false},
			Unescape(`\200`):               Bind{"self-insert", false},
			Unescape(`\201`):               Bind{"self-insert", false},
			Unescape(`\202`):               Bind{"self-insert", false},
			Unescape(`\203`):               Bind{"self-insert", false},
			Unescape(`\204`):               Bind{"self-insert", false},
			Unescape(`\205`):               Bind{"self-insert", false},
			Unescape(`\206`):               Bind{"self-insert", false},
			Unescape(`\207`):               Bind{"self-insert", false},
			Unescape(`\210`):               Bind{"self-insert", false},
			Unescape(`\211`):               Bind{"self-insert", false},
			Unescape(`\212`):               Bind{"self-insert", false},
			Unescape(`\213`):               Bind{"self-insert", false},
			Unescape(`\214`):               Bind{"self-insert", false},
			Unescape(`\215`):               Bind{"self-insert", false},
			Unescape(`\216`):               Bind{"self-insert", false},
			Unescape(`\217`):               Bind{"self-insert", false},
			Unescape(`\220`):               Bind{"self-insert", false},
			Unescape(`\221`):               Bind{"self-insert", false},
			Unescape(`\222`):               Bind{"self-insert", false},
			Unescape(`\223`):               Bind{"self-insert", false},
			Unescape(`\224`):               Bind{"self-insert", false},
			Unescape(`\225`):               Bind{"self-insert", false},
			Unescape(`\226`):               Bind{"self-insert", false},
			Unescape(`\227`):               Bind{"self-insert", false},
			Unescape(`\230`):               Bind{"self-insert", false},
			Unescape(`\231`):               Bind{"self-insert", false},
			Unescape(`\232`):               Bind{"self-insert", false},
			Unescape(`\233`):               Bind{"self-insert", false},
			Unescape(`\234`):               Bind{"self-insert", false},
			Unescape(`\235`):               Bind{"self-insert", false},
			Unescape(`\236`):               Bind{"self-insert", false},
			Unescape(`\237`):               Bind{"self-insert", false},
			Unescape(string([]byte{0xa0})): Bind{"self-insert", false},
			Unescape(string([]byte{0xa1})): Bind{"self-insert", false},
			Unescape(string([]byte{0xa2})): Bind{"self-insert", false},
			Unescape(string([]byte{0xa3})): Bind{"self-insert", false},
			Unescape(string([]byte{0xa4})): Bind{"self-insert", false},
			Unescape(string([]byte{0xa5})): Bind{"self-insert", false},
			Unescape(string([]byte{0xa6})): Bind{"self-insert", false},
			Unescape(string([]byte{0xa7})): Bind{"self-insert", false},
			Unescape(string([]byte{0xa8})): Bind{"self-insert", false},
			Unescape(string([]byte{0xa9})): Bind{"self-insert", false},
			Unescape(string([]byte{0xaa})): Bind{"self-insert", false},
			Unescape(string([]byte{0xab})): Bind{"self-insert", false},
			Unescape(string([]byte{0xac})): Bind{"self-insert", false},
			Unescape(string([]byte{0xad})): Bind{"self-insert", false},
			Unescape(string([]byte{0xae})): Bind{"self-insert", false},
			Unescape(string([]byte{0xaf})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb0})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb1})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb2})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb3})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb4})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb5})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb6})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb7})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb8})): Bind{"self-insert", false},
			Unescape(string([]byte{0xb9})): Bind{"self-insert", false},
			Unescape(string([]byte{0xba})): Bind{"self-insert", false},
			Unescape(string([]byte{0xbb})): Bind{"self-insert", false},
			Unescape(string([]byte{0xbc})): Bind{"self-insert", false},
			Unescape(string([]byte{0xbd})): Bind{"self-insert", false},
			Unescape(string([]byte{0xbe})): Bind{"self-insert", false},
			Unescape(string([]byte{0xbf})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc0})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc1})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc2})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc3})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc4})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc5})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc6})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc7})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc8})): Bind{"self-insert", false},
			Unescape(string([]byte{0xc9})): Bind{"self-insert", false},
			Unescape(string([]byte{0xca})): Bind{"self-insert", false},
			Unescape(string([]byte{0xcb})): Bind{"self-insert", false},
			Unescape(string([]byte{0xcc})): Bind{"self-insert", false},
			Unescape(string([]byte{0xcd})): Bind{"self-insert", false},
			Unescape(string([]byte{0xce})): Bind{"self-insert", false},
			Unescape(string([]byte{0xcf})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd0})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd1})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd2})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd3})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd4})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd5})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd6})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd7})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd8})): Bind{"self-insert", false},
			Unescape(string([]byte{0xd9})): Bind{"self-insert", false},
			Unescape(string([]byte{0xda})): Bind{"self-insert", false},
			Unescape(string([]byte{0xdb})): Bind{"self-insert", false},
			Unescape(string([]byte{0xdc})): Bind{"self-insert", false},
			Unescape(string([]byte{0xdd})): Bind{"self-insert", false},
			Unescape(string([]byte{0xde})): Bind{"self-insert", false},
			Unescape(string([]byte{0xdf})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe0})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe1})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe2})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe3})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe4})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe5})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe6})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe7})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe8})): Bind{"self-insert", false},
			Unescape(string([]byte{0xe9})): Bind{"self-insert", false},
			Unescape(string([]byte{0xea})): Bind{"self-insert", false},
			Unescape(string([]byte{0xeb})): Bind{"self-insert", false},
			Unescape(string([]byte{0xec})): Bind{"self-insert", false},
			Unescape(string([]byte{0xed})): Bind{"self-insert", false},
			Unescape(string([]byte{0xee})): Bind{"self-insert", false},
			Unescape(string([]byte{0xef})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf0})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf1})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf2})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf3})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf4})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf5})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf6})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf7})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf8})): Bind{"self-insert", false},
			Unescape(string([]byte{0xf9})): Bind{"self-insert", false},
			Unescape(string([]byte{0xfa})): Bind{"self-insert", false},
			Unescape(string([]byte{0xfb})): Bind{"self-insert", false},
			Unescape(string([]byte{0xfc})): Bind{"self-insert", false},
			Unescape(string([]byte{0xfd})): Bind{"self-insert", false},
			Unescape(string([]byte{0xfe})): Bind{"self-insert", false},
			Unescape(string([]byte{0xff})): Bind{"self-insert", false},
			// set-mark (not bound)
			// shell-backward-kill-word (not bound)
			// shell-backward-word (not bound)
			// shell-expand-line (not bound)
			// shell-forward-word (not bound)
			// shell-kill-word (not bound)
			// shell-transpose-words (not bound)
			// skip-csi-sequence (not bound)
			// start-kbd-macro (not bound)
			// tab-insert (not bound)
			// tilde-expand (not bound)
			Unescape(`\C-t`): Bind{"transpose-chars", false},
			// transpose-words (not bound)
			// tty-status (not bound)
			// undo (not bound)
			// universal-argument (not bound)
			// unix-filename-rubout (not bound)
			Unescape(`\C-u`): Bind{"unix-line-discard", false},
			// unix-word-rubout (not bound)
			// upcase-word (not bound)
			// vi-append-eol (not bound)
			// vi-append-mode (not bound)
			// vi-arg-digit (not bound)
			// vi-bWord (not bound)
			// vi-back-to-indent (not bound)
			// vi-backward-bigword (not bound)
			// vi-backward-word (not bound)
			// vi-bword (not bound)
			// vi-change-case (not bound)
			// vi-change-char (not bound)
			// vi-change-to (not bound)
			// vi-char-search (not bound)
			// vi-column (not bound)
			// vi-complete (not bound)
			// vi-delete (not bound)
			// vi-delete-to (not bound)
			// vi-eWord (not bound)
			// vi-editing-mode (not bound)
			// vi-end-bigword (not bound)
			// vi-end-word (not bound)
			Unescape(`\C-d`): Bind{"vi-eof-maybe", false},
			// vi-eword (not bound)
			// vi-fWord (not bound)
			// vi-fetch-history (not bound)
			// vi-first-print (not bound)
			// vi-forward-bigword (not bound)
			// vi-forward-word (not bound)
			// vi-fword (not bound)
			// vi-goto-mark (not bound)
			// vi-insert-beg (not bound)
			// vi-insertion-mode (not bound)
			// vi-match (not bound)
			Unescape(`\M-`): Bind{"vi-movement-mode", false},
			// vi-next-word (not bound)
			// vi-overstrike (not bound)
			// vi-overstrike-delete (not bound)
			// vi-prev-word (not bound)
			// vi-put (not bound)
			// vi-redo (not bound)
			// vi-replace (not bound)
			// vi-rubout (not bound)
			// vi-search (not bound)
			// vi-search-again (not bound)
			// vi-set-mark (not bound)
			// vi-subst (not bound)
			// vi-tilde-expand (not bound)
			Unescape(`\C-w`): Bind{"vi-unix-word-rubout", false},
			// vi-yank-arg (not bound)
			// vi-yank-pop (not bound)
			// vi-yank-to (not bound)
			Unescape(`\C-y`): Bind{"yank", false},
			// yank-last-arg (not bound)
			// yank-nth-arg (not bound)
			// yank-pop (not bound)
		},
	}
}
