Initial work on new keyconfig
This commit is contained in:
parent
e4278a69ac
commit
67afc06d79
@ -177,7 +177,7 @@ def init(parent=None):
|
|||||||
newconfig.init(parent)
|
newconfig.init(parent)
|
||||||
val = newconfig.val
|
val = newconfig.val
|
||||||
instance = newconfig.instance
|
instance = newconfig.instance
|
||||||
_init_key_config(parent)
|
# _init_key_config(parent)
|
||||||
_init_misc()
|
_init_misc()
|
||||||
|
|
||||||
|
|
||||||
|
@ -77,398 +77,6 @@ MONOSPACE = (' xos4 Terminus, Terminus, Monospace, '
|
|||||||
'monospace, Fixed, Consolas, Terminal')
|
'monospace, Fixed, Consolas, Terminal')
|
||||||
|
|
||||||
|
|
||||||
KEY_FIRST_COMMENT = """
|
|
||||||
# vim: ft=conf
|
|
||||||
#
|
|
||||||
# In this config file, qutebrowser's key bindings are configured.
|
|
||||||
# The format looks like this:
|
|
||||||
#
|
|
||||||
# [keymode]
|
|
||||||
#
|
|
||||||
# command
|
|
||||||
# keychain
|
|
||||||
# keychain2
|
|
||||||
# ...
|
|
||||||
#
|
|
||||||
# All blank lines and lines starting with '#' are ignored.
|
|
||||||
# Inline-comments are not permitted.
|
|
||||||
#
|
|
||||||
# keymode is a comma separated list of modes in which the key binding should be
|
|
||||||
# active. If keymode starts with !, the key binding is active in all modes
|
|
||||||
# except the listed modes.
|
|
||||||
#
|
|
||||||
# For special keys (can't be part of a keychain), enclose them in `<`...`>`.
|
|
||||||
# For modifiers, you can use either `-` or `+` as delimiters, and these names:
|
|
||||||
#
|
|
||||||
# * Control: `Control`, `Ctrl`
|
|
||||||
# * Meta: `Meta`, `Windows`, `Mod4`
|
|
||||||
# * Alt: `Alt`, `Mod1`
|
|
||||||
# * Shift: `Shift`
|
|
||||||
#
|
|
||||||
# For simple keys (no `<>`-signs), a capital letter means the key is pressed
|
|
||||||
# with Shift. For special keys (with `<>`-signs), you need to explicitly add
|
|
||||||
# `Shift-` to match a key pressed with shift.
|
|
||||||
#
|
|
||||||
# Note that default keybindings are always bound, and need to be explicitly
|
|
||||||
# unbound if you wish to remove them:
|
|
||||||
#
|
|
||||||
# <unbound>
|
|
||||||
# keychain
|
|
||||||
# keychain2
|
|
||||||
# ...
|
|
||||||
"""
|
|
||||||
|
|
||||||
KEY_SECTION_DESC = {
|
|
||||||
'all': "Keybindings active in all modes.",
|
|
||||||
'normal': "Keybindings for normal mode.",
|
|
||||||
'insert': (
|
|
||||||
"Keybindings for insert mode.\n"
|
|
||||||
"Since normal keypresses are passed through, only special keys are "
|
|
||||||
"supported in this mode.\n"
|
|
||||||
"Useful hidden commands to map in this section:\n\n"
|
|
||||||
" * `open-editor`: Open a texteditor with the focused field.\n"
|
|
||||||
" * `paste-primary`: Paste primary selection at cursor position."),
|
|
||||||
'hint': (
|
|
||||||
"Keybindings for hint mode.\n"
|
|
||||||
"Since normal keypresses are passed through, only special keys are "
|
|
||||||
"supported in this mode.\n"
|
|
||||||
"Useful hidden commands to map in this section:\n\n"
|
|
||||||
" * `follow-hint`: Follow the currently selected hint."),
|
|
||||||
'passthrough': (
|
|
||||||
"Keybindings for passthrough mode.\n"
|
|
||||||
"Since normal keypresses are passed through, only special keys are "
|
|
||||||
"supported in this mode."),
|
|
||||||
'command': (
|
|
||||||
"Keybindings for command mode.\n"
|
|
||||||
"Since normal keypresses are passed through, only special keys are "
|
|
||||||
"supported in this mode.\n"
|
|
||||||
"Useful hidden commands to map in this section:\n\n"
|
|
||||||
" * `command-history-prev`: Switch to previous command in history.\n"
|
|
||||||
" * `command-history-next`: Switch to next command in history.\n"
|
|
||||||
" * `completion-item-focus`: Select another item in completion.\n"
|
|
||||||
" * `command-accept`: Execute the command currently in the "
|
|
||||||
"commandline."),
|
|
||||||
'prompt': (
|
|
||||||
"Keybindings for prompts in the status line.\n"
|
|
||||||
"You can bind normal keys in this mode, but they will be only active "
|
|
||||||
"when a yes/no-prompt is asked. For other prompt modes, you can only "
|
|
||||||
"bind special keys.\n"
|
|
||||||
"Useful hidden commands to map in this section:\n\n"
|
|
||||||
" * `prompt-accept`: Confirm the entered value.\n"
|
|
||||||
" * `prompt-accept yes`: Answer yes to a yes/no question.\n"
|
|
||||||
" * `prompt-accept no`: Answer no to a yes/no question."),
|
|
||||||
'caret': (
|
|
||||||
""),
|
|
||||||
}
|
|
||||||
|
|
||||||
# Keys which are similar to Return and should be bound by default where Return
|
|
||||||
# is bound.
|
|
||||||
|
|
||||||
RETURN_KEYS = ['<Return>', '<Ctrl-M>', '<Ctrl-J>', '<Shift-Return>', '<Enter>',
|
|
||||||
'<Shift-Enter>']
|
|
||||||
|
|
||||||
|
|
||||||
KEY_DATA = collections.OrderedDict([
|
|
||||||
('!normal', collections.OrderedDict([
|
|
||||||
('leave-mode', ['<Escape>', '<Ctrl-[>']),
|
|
||||||
])),
|
|
||||||
|
|
||||||
('normal', collections.OrderedDict([
|
|
||||||
('clear-keychain ;; search ;; fullscreen --leave',
|
|
||||||
['<Escape>', '<Ctrl-[>']),
|
|
||||||
('set-cmd-text -s :open', ['o']),
|
|
||||||
('set-cmd-text :open {url:pretty}', ['go']),
|
|
||||||
('set-cmd-text -s :open -t', ['O']),
|
|
||||||
('set-cmd-text :open -t -i {url:pretty}', ['gO']),
|
|
||||||
('set-cmd-text -s :open -b', ['xo']),
|
|
||||||
('set-cmd-text :open -b -i {url:pretty}', ['xO']),
|
|
||||||
('set-cmd-text -s :open -w', ['wo']),
|
|
||||||
('set-cmd-text :open -w {url:pretty}', ['wO']),
|
|
||||||
('set-cmd-text /', ['/']),
|
|
||||||
('set-cmd-text ?', ['?']),
|
|
||||||
('set-cmd-text :', [':']),
|
|
||||||
('open -t', ['ga', '<Ctrl-T>']),
|
|
||||||
('open -w', ['<Ctrl-N>']),
|
|
||||||
('tab-close', ['d', '<Ctrl-W>']),
|
|
||||||
('tab-close -o', ['D']),
|
|
||||||
('tab-only', ['co']),
|
|
||||||
('tab-focus', ['T']),
|
|
||||||
('tab-move', ['gm']),
|
|
||||||
('tab-move -', ['gl']),
|
|
||||||
('tab-move +', ['gr']),
|
|
||||||
('tab-next', ['J', '<Ctrl-PgDown>']),
|
|
||||||
('tab-prev', ['K', '<Ctrl-PgUp>']),
|
|
||||||
('tab-clone', ['gC']),
|
|
||||||
('reload', ['r', '<F5>']),
|
|
||||||
('reload -f', ['R', '<Ctrl-F5>']),
|
|
||||||
('back', ['H', '<back>']),
|
|
||||||
('back -t', ['th']),
|
|
||||||
('back -w', ['wh']),
|
|
||||||
('forward', ['L', '<forward>']),
|
|
||||||
('forward -t', ['tl']),
|
|
||||||
('forward -w', ['wl']),
|
|
||||||
('fullscreen', ['<F11>']),
|
|
||||||
('hint', ['f']),
|
|
||||||
('hint all tab', ['F']),
|
|
||||||
('hint all window', ['wf']),
|
|
||||||
('hint all tab-bg', [';b']),
|
|
||||||
('hint all tab-fg', [';f']),
|
|
||||||
('hint all hover', [';h']),
|
|
||||||
('hint images', [';i']),
|
|
||||||
('hint images tab', [';I']),
|
|
||||||
('hint links fill :open {hint-url}', [';o']),
|
|
||||||
('hint links fill :open -t -i {hint-url}', [';O']),
|
|
||||||
('hint links yank', [';y']),
|
|
||||||
('hint links yank-primary', [';Y']),
|
|
||||||
('hint --rapid links tab-bg', [';r']),
|
|
||||||
('hint --rapid links window', [';R']),
|
|
||||||
('hint links download', [';d']),
|
|
||||||
('hint inputs', [';t']),
|
|
||||||
('scroll left', ['h']),
|
|
||||||
('scroll down', ['j']),
|
|
||||||
('scroll up', ['k']),
|
|
||||||
('scroll right', ['l']),
|
|
||||||
('undo', ['u', '<Ctrl-Shift-T>']),
|
|
||||||
('scroll-perc 0', ['gg']),
|
|
||||||
('scroll-perc', ['G']),
|
|
||||||
('search-next', ['n']),
|
|
||||||
('search-prev', ['N']),
|
|
||||||
('enter-mode insert', ['i']),
|
|
||||||
('enter-mode caret', ['v']),
|
|
||||||
('enter-mode set_mark', ['`']),
|
|
||||||
('enter-mode jump_mark', ["'"]),
|
|
||||||
('yank', ['yy']),
|
|
||||||
('yank -s', ['yY']),
|
|
||||||
('yank title', ['yt']),
|
|
||||||
('yank title -s', ['yT']),
|
|
||||||
('yank domain', ['yd']),
|
|
||||||
('yank domain -s', ['yD']),
|
|
||||||
('yank pretty-url', ['yp']),
|
|
||||||
('yank pretty-url -s', ['yP']),
|
|
||||||
('open -- {clipboard}', ['pp']),
|
|
||||||
('open -- {primary}', ['pP']),
|
|
||||||
('open -t -- {clipboard}', ['Pp']),
|
|
||||||
('open -t -- {primary}', ['PP']),
|
|
||||||
('open -w -- {clipboard}', ['wp']),
|
|
||||||
('open -w -- {primary}', ['wP']),
|
|
||||||
('quickmark-save', ['m']),
|
|
||||||
('set-cmd-text -s :quickmark-load', ['b']),
|
|
||||||
('set-cmd-text -s :quickmark-load -t', ['B']),
|
|
||||||
('set-cmd-text -s :quickmark-load -w', ['wb']),
|
|
||||||
('bookmark-add', ['M']),
|
|
||||||
('set-cmd-text -s :bookmark-load', ['gb']),
|
|
||||||
('set-cmd-text -s :bookmark-load -t', ['gB']),
|
|
||||||
('set-cmd-text -s :bookmark-load -w', ['wB']),
|
|
||||||
('save', ['sf']),
|
|
||||||
('set-cmd-text -s :set', ['ss']),
|
|
||||||
('set-cmd-text -s :set -t', ['sl']),
|
|
||||||
('set-cmd-text -s :bind', ['sk']),
|
|
||||||
('zoom-out', ['-']),
|
|
||||||
('zoom-in', ['+']),
|
|
||||||
('zoom', ['=']),
|
|
||||||
('navigate prev', ['[[']),
|
|
||||||
('navigate next', [']]']),
|
|
||||||
('navigate prev -t', ['{{']),
|
|
||||||
('navigate next -t', ['}}']),
|
|
||||||
('navigate up', ['gu']),
|
|
||||||
('navigate up -t', ['gU']),
|
|
||||||
('navigate increment', ['<Ctrl-A>']),
|
|
||||||
('navigate decrement', ['<Ctrl-X>']),
|
|
||||||
('inspector', ['wi']),
|
|
||||||
('download', ['gd']),
|
|
||||||
('download-cancel', ['ad']),
|
|
||||||
('download-clear', ['cd']),
|
|
||||||
('view-source', ['gf']),
|
|
||||||
('set-cmd-text -s :buffer', ['gt']),
|
|
||||||
('tab-focus last', ['<Ctrl-Tab>', '<Ctrl-6>', '<Ctrl-^>']),
|
|
||||||
('enter-mode passthrough', ['<Ctrl-V>']),
|
|
||||||
('quit', ['<Ctrl-Q>', 'ZQ']),
|
|
||||||
('wq', ['ZZ']),
|
|
||||||
('scroll-page 0 1', ['<Ctrl-F>']),
|
|
||||||
('scroll-page 0 -1', ['<Ctrl-B>']),
|
|
||||||
('scroll-page 0 0.5', ['<Ctrl-D>']),
|
|
||||||
('scroll-page 0 -0.5', ['<Ctrl-U>']),
|
|
||||||
('tab-focus 1', ['<Alt-1>', 'g0', 'g^']),
|
|
||||||
('tab-focus 2', ['<Alt-2>']),
|
|
||||||
('tab-focus 3', ['<Alt-3>']),
|
|
||||||
('tab-focus 4', ['<Alt-4>']),
|
|
||||||
('tab-focus 5', ['<Alt-5>']),
|
|
||||||
('tab-focus 6', ['<Alt-6>']),
|
|
||||||
('tab-focus 7', ['<Alt-7>']),
|
|
||||||
('tab-focus 8', ['<Alt-8>']),
|
|
||||||
('tab-focus -1', ['<Alt-9>', 'g$']),
|
|
||||||
('home', ['<Ctrl-h>']),
|
|
||||||
('stop', ['<Ctrl-s>']),
|
|
||||||
('print', ['<Ctrl-Alt-p>']),
|
|
||||||
('open qute://settings', ['Ss']),
|
|
||||||
('follow-selected', RETURN_KEYS),
|
|
||||||
('follow-selected -t', ['<Ctrl-Return>', '<Ctrl-Enter>']),
|
|
||||||
('repeat-command', ['.']),
|
|
||||||
('tab-pin', ['<Ctrl-p>']),
|
|
||||||
('record-macro', ['q']),
|
|
||||||
('run-macro', ['@']),
|
|
||||||
])),
|
|
||||||
|
|
||||||
('insert', collections.OrderedDict([
|
|
||||||
('open-editor', ['<Ctrl-E>']),
|
|
||||||
('insert-text {primary}', ['<Shift-Ins>']),
|
|
||||||
])),
|
|
||||||
|
|
||||||
('hint', collections.OrderedDict([
|
|
||||||
('follow-hint', RETURN_KEYS),
|
|
||||||
('hint --rapid links tab-bg', ['<Ctrl-R>']),
|
|
||||||
('hint links', ['<Ctrl-F>']),
|
|
||||||
('hint all tab-bg', ['<Ctrl-B>']),
|
|
||||||
])),
|
|
||||||
|
|
||||||
('passthrough', {}),
|
|
||||||
|
|
||||||
('command', collections.OrderedDict([
|
|
||||||
('command-history-prev', ['<Ctrl-P>']),
|
|
||||||
('command-history-next', ['<Ctrl-N>']),
|
|
||||||
('completion-item-focus prev', ['<Shift-Tab>', '<Up>']),
|
|
||||||
('completion-item-focus next', ['<Tab>', '<Down>']),
|
|
||||||
('completion-item-focus next-category', ['<Ctrl-Tab>']),
|
|
||||||
('completion-item-focus prev-category', ['<Ctrl-Shift-Tab>']),
|
|
||||||
('completion-item-del', ['<Ctrl-D>']),
|
|
||||||
('command-accept', RETURN_KEYS),
|
|
||||||
])),
|
|
||||||
|
|
||||||
('prompt', collections.OrderedDict([
|
|
||||||
('prompt-accept', RETURN_KEYS),
|
|
||||||
('prompt-accept yes', ['y']),
|
|
||||||
('prompt-accept no', ['n']),
|
|
||||||
('prompt-open-download', ['<Ctrl-X>']),
|
|
||||||
('prompt-item-focus prev', ['<Shift-Tab>', '<Up>']),
|
|
||||||
('prompt-item-focus next', ['<Tab>', '<Down>']),
|
|
||||||
])),
|
|
||||||
|
|
||||||
('command,prompt', collections.OrderedDict([
|
|
||||||
('rl-backward-char', ['<Ctrl-B>']),
|
|
||||||
('rl-forward-char', ['<Ctrl-F>']),
|
|
||||||
('rl-backward-word', ['<Alt-B>']),
|
|
||||||
('rl-forward-word', ['<Alt-F>']),
|
|
||||||
('rl-beginning-of-line', ['<Ctrl-A>']),
|
|
||||||
('rl-end-of-line', ['<Ctrl-E>']),
|
|
||||||
('rl-unix-line-discard', ['<Ctrl-U>']),
|
|
||||||
('rl-kill-line', ['<Ctrl-K>']),
|
|
||||||
('rl-kill-word', ['<Alt-D>']),
|
|
||||||
('rl-unix-word-rubout', ['<Ctrl-W>']),
|
|
||||||
('rl-backward-kill-word', ['<Alt-Backspace>']),
|
|
||||||
('rl-yank', ['<Ctrl-Y>']),
|
|
||||||
('rl-delete-char', ['<Ctrl-?>']),
|
|
||||||
('rl-backward-delete-char', ['<Ctrl-H>']),
|
|
||||||
])),
|
|
||||||
|
|
||||||
('caret', collections.OrderedDict([
|
|
||||||
('toggle-selection', ['v', '<Space>']),
|
|
||||||
('drop-selection', ['<Ctrl-Space>']),
|
|
||||||
('enter-mode normal', ['c']),
|
|
||||||
('move-to-next-line', ['j']),
|
|
||||||
('move-to-prev-line', ['k']),
|
|
||||||
('move-to-next-char', ['l']),
|
|
||||||
('move-to-prev-char', ['h']),
|
|
||||||
('move-to-end-of-word', ['e']),
|
|
||||||
('move-to-next-word', ['w']),
|
|
||||||
('move-to-prev-word', ['b']),
|
|
||||||
('move-to-start-of-next-block', [']']),
|
|
||||||
('move-to-start-of-prev-block', ['[']),
|
|
||||||
('move-to-end-of-next-block', ['}']),
|
|
||||||
('move-to-end-of-prev-block', ['{']),
|
|
||||||
('move-to-start-of-line', ['0']),
|
|
||||||
('move-to-end-of-line', ['$']),
|
|
||||||
('move-to-start-of-document', ['gg']),
|
|
||||||
('move-to-end-of-document', ['G']),
|
|
||||||
('yank selection -s', ['Y']),
|
|
||||||
('yank selection', ['y'] + RETURN_KEYS),
|
|
||||||
('scroll left', ['H']),
|
|
||||||
('scroll down', ['J']),
|
|
||||||
('scroll up', ['K']),
|
|
||||||
('scroll right', ['L']),
|
|
||||||
])),
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
# A list of (regex, replacement) tuples of changed key commands.
|
|
||||||
|
|
||||||
CHANGED_KEY_COMMANDS = [
|
|
||||||
(re.compile(r'^open -([twb]) about:blank$'), r'open -\1'),
|
|
||||||
|
|
||||||
(re.compile(r'^download-page$'), r'download'),
|
|
||||||
(re.compile(r'^cancel-download$'), r'download-cancel'),
|
|
||||||
|
|
||||||
(re.compile(r"""^search (''|"")$"""),
|
|
||||||
r'clear-keychain ;; search ;; fullscreen --leave'),
|
|
||||||
(re.compile(r'^search$'),
|
|
||||||
r'clear-keychain ;; search ;; fullscreen --leave'),
|
|
||||||
(re.compile(r'^clear-keychain ;; search$'),
|
|
||||||
r'clear-keychain ;; search ;; fullscreen --leave'),
|
|
||||||
|
|
||||||
(re.compile(r"""^set-cmd-text ['"](.*) ['"]$"""), r'set-cmd-text -s \1'),
|
|
||||||
(re.compile(r"""^set-cmd-text ['"](.*)['"]$"""), r'set-cmd-text \1'),
|
|
||||||
|
|
||||||
(re.compile(r"^hint links rapid$"), r'hint --rapid links tab-bg'),
|
|
||||||
(re.compile(r"^hint links rapid-win$"), r'hint --rapid links window'),
|
|
||||||
|
|
||||||
(re.compile(r'^scroll -50 0$'), r'scroll left'),
|
|
||||||
(re.compile(r'^scroll 0 50$'), r'scroll down'),
|
|
||||||
(re.compile(r'^scroll 0 -50$'), r'scroll up'),
|
|
||||||
(re.compile(r'^scroll 50 0$'), r'scroll right'),
|
|
||||||
(re.compile(r'^scroll ([-\d]+ [-\d]+)$'), r'scroll-px \1'),
|
|
||||||
|
|
||||||
(re.compile(r'^search *;; *clear-keychain$'),
|
|
||||||
r'clear-keychain ;; search ;; fullscreen --leave'),
|
|
||||||
(re.compile(r'^clear-keychain *;; *leave-mode$'), r'leave-mode'),
|
|
||||||
|
|
||||||
(re.compile(r'^download-remove --all$'), r'download-clear'),
|
|
||||||
|
|
||||||
(re.compile(r'^hint links fill "([^"]*)"$'), r'hint links fill \1'),
|
|
||||||
|
|
||||||
(re.compile(r'^yank -t(\S+)'), r'yank title -\1'),
|
|
||||||
(re.compile(r'^yank -t'), r'yank title'),
|
|
||||||
(re.compile(r'^yank -d(\S+)'), r'yank domain -\1'),
|
|
||||||
(re.compile(r'^yank -d'), r'yank domain'),
|
|
||||||
(re.compile(r'^yank -p(\S+)'), r'yank pretty-url -\1'),
|
|
||||||
(re.compile(r'^yank -p'), r'yank pretty-url'),
|
|
||||||
(re.compile(r'^yank-selected -p'), r'yank selection -s'),
|
|
||||||
(re.compile(r'^yank-selected'), r'yank selection'),
|
|
||||||
|
|
||||||
(re.compile(r'^paste$'), r'open -- {clipboard}'),
|
|
||||||
(re.compile(r'^paste -s$'), r'open -- {primary}'),
|
|
||||||
(re.compile(r'^paste -([twb])$'), r'open -\1 -- {clipboard}'),
|
|
||||||
(re.compile(r'^paste -([twb])s$'), r'open -\1 -- {primary}'),
|
|
||||||
(re.compile(r'^paste -s([twb])$'), r'open -\1 -- {primary}'),
|
|
||||||
|
|
||||||
(re.compile(r'^completion-item-next'), r'completion-item-focus next'),
|
|
||||||
(re.compile(r'^completion-item-prev'), r'completion-item-focus prev'),
|
|
||||||
|
|
||||||
(re.compile(r'^open {clipboard}$'), r'open -- {clipboard}'),
|
|
||||||
(re.compile(r'^open -([twb]) {clipboard}$'), r'open -\1 -- {clipboard}'),
|
|
||||||
(re.compile(r'^open {primary}$'), r'open -- {primary}'),
|
|
||||||
(re.compile(r'^open -([twb]) {primary}$'), r'open -\1 -- {primary}'),
|
|
||||||
|
|
||||||
(re.compile(r'^paste-primary$'), r'insert-text {primary}'),
|
|
||||||
|
|
||||||
(re.compile(r'^set-cmd-text -s :search$'), r'set-cmd-text /'),
|
|
||||||
(re.compile(r'^set-cmd-text -s :search -r$'), r'set-cmd-text ?'),
|
|
||||||
(re.compile(r'^set-cmd-text -s :$'), r'set-cmd-text :'),
|
|
||||||
(re.compile(r'^set-cmd-text -s :set keybind$'), r'set-cmd-text -s :bind'),
|
|
||||||
|
|
||||||
(re.compile(r'^prompt-yes$'), r'prompt-accept yes'),
|
|
||||||
(re.compile(r'^prompt-no$'), r'prompt-accept no'),
|
|
||||||
|
|
||||||
(re.compile(r'^tab-close -l$'), r'tab-close --prev'),
|
|
||||||
(re.compile(r'^tab-close --left$'), r'tab-close --prev'),
|
|
||||||
(re.compile(r'^tab-close -r$'), r'tab-close --next'),
|
|
||||||
(re.compile(r'^tab-close --right$'), r'tab-close --next'),
|
|
||||||
|
|
||||||
(re.compile(r'^tab-only -l$'), r'tab-only --prev'),
|
|
||||||
(re.compile(r'^tab-only --left$'), r'tab-only --prev'),
|
|
||||||
(re.compile(r'^tab-only -r$'), r'tab-only --next'),
|
|
||||||
(re.compile(r'^tab-only --right$'), r'tab-only --next'),
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
Option = collections.namedtuple('Option', ['name', 'typ', 'default',
|
Option = collections.namedtuple('Option', ['name', 'typ', 'default',
|
||||||
'backends', 'description'])
|
'backends', 'description'])
|
||||||
|
|
||||||
|
@ -1800,3 +1800,341 @@ fonts.web.size.minimum_logical:
|
|||||||
minval: 0
|
minval: 0
|
||||||
maxval: maxint
|
maxval: maxint
|
||||||
desc: The minimum logical font size that is applied when zooming out.
|
desc: The minimum logical font size that is applied when zooming out.
|
||||||
|
|
||||||
|
## keybindings
|
||||||
|
|
||||||
|
bindings.key_mappings:
|
||||||
|
default:
|
||||||
|
<Ctrl-[>: <Escape>
|
||||||
|
<Ctrl-6>: <Ctrl-^>
|
||||||
|
<Ctrl-M>: <Return>
|
||||||
|
<Ctrl-J>: <Return>
|
||||||
|
<Shift-Return>: <Return>
|
||||||
|
<Enter>: <Return>
|
||||||
|
<Shift-Enter>: <Return>
|
||||||
|
<Ctrl-Enter>: <Ctrl-Return>
|
||||||
|
<Ctrl-[>: <Escape>
|
||||||
|
type:
|
||||||
|
name: Dict
|
||||||
|
keytype: String
|
||||||
|
valtype: String
|
||||||
|
desc: >-
|
||||||
|
This setting can be used to map keys to other keys.
|
||||||
|
|
||||||
|
When the key used as dictionary-key is pressed, the binding for the key used
|
||||||
|
as dictionary-value is invoked instead.
|
||||||
|
|
||||||
|
This is useful for global remappings of keys, for example to map Ctrl-[ to
|
||||||
|
Escape.
|
||||||
|
|
||||||
|
bindings.commands:
|
||||||
|
default:
|
||||||
|
normal:
|
||||||
|
<Escape>: clear-keychain ;; search ;; fullscreen --leave
|
||||||
|
o: set-cmd-text -s :open
|
||||||
|
go: set-cmd-text :open {url:pretty}
|
||||||
|
O: set-cmd-text -s :open -t
|
||||||
|
gO: set-cmd-text :open -t -i {url:pretty}
|
||||||
|
xo: set-cmd-text -s :open -b
|
||||||
|
xO: set-cmd-text :open -b -i {url:pretty}
|
||||||
|
wo: set-cmd-text -s :open -w
|
||||||
|
wO: set-cmd-text :open -w {url:pretty}
|
||||||
|
/: set-cmd-text /
|
||||||
|
?: set-cmd-text ?
|
||||||
|
":": "set-cmd-text :"
|
||||||
|
ga: open -t
|
||||||
|
<Ctrl-T>: open -t
|
||||||
|
<Ctrl-N>: open -w
|
||||||
|
d: tab-close
|
||||||
|
<Ctrl-W>: tab-close
|
||||||
|
D: tab-close -o
|
||||||
|
co: tab-only
|
||||||
|
T: tab-focus
|
||||||
|
gm: tab-move
|
||||||
|
gl: tab-move -
|
||||||
|
gr: tab-move +
|
||||||
|
J: tab-next
|
||||||
|
<Ctrl-PgDown>: tab-next
|
||||||
|
K: tab-prev
|
||||||
|
<Ctrl-PgUp>: tab-prev
|
||||||
|
gC: tab-clone
|
||||||
|
r: reload
|
||||||
|
<F5>: reload
|
||||||
|
R: reload -f
|
||||||
|
<Ctrl-F5>: reload -f
|
||||||
|
H: back
|
||||||
|
<back>: back
|
||||||
|
th: back -t
|
||||||
|
wh: back -w
|
||||||
|
L: forward
|
||||||
|
<forward>: forward
|
||||||
|
tl: forward -t
|
||||||
|
wl: forward -w
|
||||||
|
<F11>: fullscreen
|
||||||
|
f: hint
|
||||||
|
F: hint all tab
|
||||||
|
wf: hint all window
|
||||||
|
;b: hint all tab-bg
|
||||||
|
;f: hint all tab-fg
|
||||||
|
;h: hint all hover
|
||||||
|
;i: hint images
|
||||||
|
;I: hint images tab
|
||||||
|
;o: hint links fill :open {hint-url}
|
||||||
|
;O: hint links fill :open -t -i {hint-url}
|
||||||
|
;y: hint links yank
|
||||||
|
;Y: hint links yank-primary
|
||||||
|
;r: hint --rapid links tab-bg
|
||||||
|
;R: hint --rapid links window
|
||||||
|
;d: hint links download
|
||||||
|
;t: hint inputs
|
||||||
|
h: scroll left
|
||||||
|
j: scroll down
|
||||||
|
k: scroll up
|
||||||
|
l: scroll right
|
||||||
|
u: undo
|
||||||
|
<Ctrl-Shift-T>: undo
|
||||||
|
gg: scroll-perc 0
|
||||||
|
G: scroll-perc
|
||||||
|
n: search-next
|
||||||
|
N: search-prev
|
||||||
|
i: enter-mode insert
|
||||||
|
v: enter-mode caret
|
||||||
|
"`": enter-mode set_mark
|
||||||
|
"'": enter-mode jump_mark
|
||||||
|
yy: yank
|
||||||
|
yY: yank -s
|
||||||
|
yt: yank title
|
||||||
|
yT: yank title -s
|
||||||
|
yd: yank domain
|
||||||
|
yD: yank domain -s
|
||||||
|
yp: yank pretty-url
|
||||||
|
yP: yank pretty-url -s
|
||||||
|
pp: open -- {clipboard}
|
||||||
|
pP: open -- {primary}
|
||||||
|
Pp: open -t -- {clipboard}
|
||||||
|
PP: open -t -- {primary}
|
||||||
|
wp: open -w -- {clipboard}
|
||||||
|
wP: open -w -- {primary}
|
||||||
|
m: quickmark-save
|
||||||
|
b: set-cmd-text -s :quickmark-load
|
||||||
|
B: set-cmd-text -s :quickmark-load -t
|
||||||
|
wb: set-cmd-text -s :quickmark-load -w
|
||||||
|
M: bookmark-add
|
||||||
|
gb: set-cmd-text -s :bookmark-load
|
||||||
|
gB: set-cmd-text -s :bookmark-load -t
|
||||||
|
wB: set-cmd-text -s :bookmark-load -w
|
||||||
|
sf: save
|
||||||
|
ss: set-cmd-text -s :set
|
||||||
|
sl: set-cmd-text -s :set -t
|
||||||
|
sk: set-cmd-text -s :bind
|
||||||
|
-: zoom-out
|
||||||
|
+: zoom-in
|
||||||
|
=: zoom
|
||||||
|
"[[": navigate prev
|
||||||
|
"]]": navigate next
|
||||||
|
"{{": navigate prev -t
|
||||||
|
"}}": navigate next -t
|
||||||
|
gu: navigate up
|
||||||
|
gU: navigate up -t
|
||||||
|
<Ctrl-A>: navigate increment
|
||||||
|
<Ctrl-X>: navigate decrement
|
||||||
|
wi: inspector
|
||||||
|
gd: download
|
||||||
|
ad: download-cancel
|
||||||
|
cd: download-clear
|
||||||
|
gf: view-source
|
||||||
|
gt: set-cmd-text -s :buffer
|
||||||
|
<Ctrl-Tab>: tab-focus last
|
||||||
|
<Ctrl-^>: tab-focus last
|
||||||
|
<Ctrl-V>: enter-mode passthrough
|
||||||
|
<Ctrl-Q>: quit
|
||||||
|
ZQ: quit
|
||||||
|
ZZ: wq
|
||||||
|
<Ctrl-F>: scroll-page 0 1
|
||||||
|
<Ctrl-B>: scroll-page 0 -1
|
||||||
|
<Ctrl-D>: scroll-page 0 0.5
|
||||||
|
<Ctrl-U>: scroll-page 0 -0.5
|
||||||
|
<Alt-1>: tab-focus 1
|
||||||
|
g0: tab-focus 1
|
||||||
|
g^: tab-focus 1
|
||||||
|
<Alt-2>: tab-focus 2
|
||||||
|
<Alt-3>: tab-focus 3
|
||||||
|
<Alt-4>: tab-focus 4
|
||||||
|
<Alt-5>: tab-focus 5
|
||||||
|
<Alt-6>: tab-focus 6
|
||||||
|
<Alt-7>: tab-focus 7
|
||||||
|
<Alt-8>: tab-focus 8
|
||||||
|
<Alt-9>: tab-focus -1
|
||||||
|
g$: tab-focus -1
|
||||||
|
<Ctrl-h>: home
|
||||||
|
<Ctrl-s>: stop
|
||||||
|
<Ctrl-Alt-p>: print
|
||||||
|
Ss: open qute://settings
|
||||||
|
<Return>: follow-selected
|
||||||
|
<Ctrl-Return>: follow-selected -t
|
||||||
|
.: repeat-command
|
||||||
|
<Ctrl-p>: tab-pin
|
||||||
|
q: record-macro
|
||||||
|
"@": run-macro
|
||||||
|
insert:
|
||||||
|
<Ctrl-E>: open-editor
|
||||||
|
<Shift-Ins>: insert-text {primary}
|
||||||
|
<Escape>: leave-mode
|
||||||
|
hint:
|
||||||
|
<Return>: follow-hint
|
||||||
|
<Ctrl-R>: hint --rapid links tab-bg
|
||||||
|
<Ctrl-F>: hint links
|
||||||
|
<Ctrl-B>: hint all tab-bg
|
||||||
|
<Escape>: leave-mode
|
||||||
|
passthrough:
|
||||||
|
<Escape>: leave-mode
|
||||||
|
command:
|
||||||
|
# FIXME:conf what to do about up/down?
|
||||||
|
<Ctrl-P>: command-history-prev
|
||||||
|
<Ctrl-N>: command-history-next
|
||||||
|
<Shift-Tab>: completion-item-focus prev
|
||||||
|
<Up>: completion-item-focus prev
|
||||||
|
<Tab>: completion-item-focus next
|
||||||
|
<Down>: completion-item-focus next
|
||||||
|
<Ctrl-Tab>: completion-item-focus next-category
|
||||||
|
<Ctrl-Shift-Tab>: completion-item-focus prev-category
|
||||||
|
<Ctrl-D>: completion-item-del
|
||||||
|
<Return>: command-accept
|
||||||
|
<Ctrl-B>: rl-backward-char
|
||||||
|
<Ctrl-F>: rl-forward-char
|
||||||
|
<Alt-B>: rl-backward-word
|
||||||
|
<Alt-F>: rl-forward-word
|
||||||
|
<Ctrl-A>: rl-beginning-of-line
|
||||||
|
<Ctrl-E>: rl-end-of-line
|
||||||
|
<Ctrl-U>: rl-unix-line-discard
|
||||||
|
<Ctrl-K>: rl-kill-line
|
||||||
|
<Alt-D>: rl-kill-word
|
||||||
|
<Ctrl-W>: rl-unix-word-rubout
|
||||||
|
<Alt-Backspace>: rl-backward-kill-word
|
||||||
|
<Ctrl-Y>: rl-yank
|
||||||
|
<Ctrl-?>: rl-delete-char
|
||||||
|
<Ctrl-H>: rl-backward-delete-char
|
||||||
|
<Escape>: leave-mode
|
||||||
|
prompt:
|
||||||
|
<Return>: prompt-accept
|
||||||
|
y: prompt-accept yes
|
||||||
|
n: prompt-accept no
|
||||||
|
<Ctrl-X>: prompt-open-download
|
||||||
|
<Shift-Tab>: prompt-item-focus prev
|
||||||
|
<Up>: prompt-item-focus prev
|
||||||
|
<Tab>: prompt-item-focus next
|
||||||
|
<Down>: prompt-item-focus next
|
||||||
|
<Ctrl-B>: rl-backward-char
|
||||||
|
<Ctrl-F>: rl-forward-char
|
||||||
|
<Alt-B>: rl-backward-word
|
||||||
|
<Alt-F>: rl-forward-word
|
||||||
|
<Ctrl-A>: rl-beginning-of-line
|
||||||
|
<Ctrl-E>: rl-end-of-line
|
||||||
|
<Ctrl-U>: rl-unix-line-discard
|
||||||
|
<Ctrl-K>: rl-kill-line
|
||||||
|
<Alt-D>: rl-kill-word
|
||||||
|
<Ctrl-W>: rl-unix-word-rubout
|
||||||
|
<Alt-Backspace>: rl-backward-kill-word
|
||||||
|
<Ctrl-Y>: rl-yank
|
||||||
|
<Ctrl-?>: rl-delete-char
|
||||||
|
<Ctrl-H>: rl-backward-delete-char
|
||||||
|
<Escape>: leave-mode
|
||||||
|
caret:
|
||||||
|
v: toggle-selection
|
||||||
|
<Space>: toggle-selection
|
||||||
|
<Ctrl-Space>: drop-selection
|
||||||
|
c: enter-mode normal
|
||||||
|
j: move-to-next-line
|
||||||
|
k: move-to-prev-line
|
||||||
|
l: move-to-next-char
|
||||||
|
h: move-to-prev-char
|
||||||
|
e: move-to-end-of-word
|
||||||
|
w: move-to-next-word
|
||||||
|
b: move-to-prev-word
|
||||||
|
"]": move-to-start-of-next-block
|
||||||
|
"[": move-to-start-of-prev-block
|
||||||
|
"}": move-to-end-of-next-block
|
||||||
|
"{": move-to-end-of-prev-block
|
||||||
|
0: move-to-start-of-line
|
||||||
|
$: move-to-end-of-line
|
||||||
|
gg: move-to-start-of-document
|
||||||
|
G: move-to-end-of-document
|
||||||
|
Y: yank selection -s
|
||||||
|
y: yank selection
|
||||||
|
<Return>: yank selection
|
||||||
|
H: scroll left
|
||||||
|
J: scroll down
|
||||||
|
K: scroll up
|
||||||
|
L: scroll right
|
||||||
|
<Escape>: leave-mode
|
||||||
|
type:
|
||||||
|
name: Dict
|
||||||
|
keytype: String # section name
|
||||||
|
fixed_keys: ['normal', 'insert', 'hint', 'passthrough', 'command',
|
||||||
|
'prompt', 'caret']
|
||||||
|
valtype:
|
||||||
|
name: Dict
|
||||||
|
keytype: String # key
|
||||||
|
valtype: Command
|
||||||
|
desc: >-
|
||||||
|
Keybindings mapping keys to commands in different modes.
|
||||||
|
|
||||||
|
This setting is a dictionary containing mode names and dictionaries mapping
|
||||||
|
keys to commands:
|
||||||
|
|
||||||
|
`{mode: {key: command}}`
|
||||||
|
|
||||||
|
If you want to map a key to another key, check the `bindings.key_mappings`
|
||||||
|
setting instead.
|
||||||
|
|
||||||
|
For special keys (can't be part of a keychain), enclose them in `<`...`>`.
|
||||||
|
For modifiers, you can use either `-` or `+` as delimiters, and these names:
|
||||||
|
|
||||||
|
* Control: `Control`, `Ctrl`
|
||||||
|
|
||||||
|
* Meta: `Meta`, `Windows`, `Mod4`
|
||||||
|
|
||||||
|
* Alt: `Alt`, `Mod1`
|
||||||
|
|
||||||
|
* Shift: `Shift`
|
||||||
|
|
||||||
|
For simple keys (no `<>`-signs), a capital letter means the key is pressed
|
||||||
|
with Shift. For special keys (with `<>`-signs), you need to explicitly add
|
||||||
|
`Shift-` to match a key pressed with shift.
|
||||||
|
|
||||||
|
To completely unbind a default binding, bind it to the `nop` command.
|
||||||
|
|
||||||
|
Note that some commands which are only useful for bindings (but not used
|
||||||
|
interactively) are hidden from the command completion. See `:help` for a
|
||||||
|
full list of available commands.
|
||||||
|
|
||||||
|
The following modes are available:
|
||||||
|
|
||||||
|
* normal: The default mode, where most commands are invoked.
|
||||||
|
|
||||||
|
* insert: Entered when an input field is focused on a website, or by
|
||||||
|
pressing `i` in normal mode. Passes through almost all keypresses to the
|
||||||
|
website, but has some bindings like `<Ctrl-e>` to open an external editor.
|
||||||
|
Note that single keys can't be bound in this mode.
|
||||||
|
|
||||||
|
* hint: Entered when `f` is pressed to select links with the keyboard. Note
|
||||||
|
that single keys can't be bound in this mode.
|
||||||
|
|
||||||
|
* passthrough: Similar to insert mode, but passes through all keypresses
|
||||||
|
except `<Escape>` to leave the mode. It might be useful to bind `<Escape>`
|
||||||
|
to some other key in this mode if you want to be able to send an Escape
|
||||||
|
key to the website as well. Note that single keys can't be bound in this
|
||||||
|
mode.
|
||||||
|
|
||||||
|
* command: Entered when pressing the `:` key in order to enter a command.
|
||||||
|
Note that single keys can't be bound in this mode.
|
||||||
|
|
||||||
|
* prompt: Entered when there's a prompt to display, like for download
|
||||||
|
locations or when invoked from JavaScript.
|
||||||
|
|
||||||
|
You can bind normal keys in this mode, but they will be only active when a
|
||||||
|
yes/no-prompt is asked. For other prompt modes, you can only bind special
|
||||||
|
keys.
|
||||||
|
|
||||||
|
* caret: Entered when pressing the `v` mode, used to select text using the
|
||||||
|
keyboard.
|
||||||
|
@ -325,3 +325,9 @@ def window_only(current_win_id):
|
|||||||
|
|
||||||
if win_id != current_win_id:
|
if win_id != current_win_id:
|
||||||
window.close()
|
window.close()
|
||||||
|
|
||||||
|
|
||||||
|
@cmdutils.register(hide=True)
|
||||||
|
def nop():
|
||||||
|
"""Do nothing."""
|
||||||
|
return
|
||||||
|
Loading…
Reference in New Issue
Block a user