forked from zaclys/searxng
[mod] reformatted keyBindingLayouts in JS client (default, vim)
This commit is contained in:
parent
cf985811c1
commit
208e458b32
|
@ -55,26 +55,14 @@ searxng.ready(function () {
|
||||||
}
|
}
|
||||||
}, true);
|
}, true);
|
||||||
|
|
||||||
// these bindings are always on
|
/* common base for layouts */
|
||||||
var keyBindings = {
|
var baseKeyBinding = {
|
||||||
'Escape': {
|
'Escape': {
|
||||||
key: 'ESC',
|
key: 'ESC',
|
||||||
fun: removeFocus,
|
fun: removeFocus,
|
||||||
des: 'remove focus from the focused input',
|
des: 'remove focus from the focused input',
|
||||||
cat: 'Control'
|
cat: 'Control'
|
||||||
},
|
},
|
||||||
'ArrowLeft': {
|
|
||||||
key: '⬅',
|
|
||||||
fun: highlightResult('up'),
|
|
||||||
des: 'Use left arrow to select previous search result',
|
|
||||||
cat: 'Results'
|
|
||||||
},
|
|
||||||
'ArrowRight': {
|
|
||||||
key: '➡',
|
|
||||||
fun: highlightResult('down'),
|
|
||||||
des: 'Use right arrow to select next search result',
|
|
||||||
cat: 'Results'
|
|
||||||
},
|
|
||||||
'h': {
|
'h': {
|
||||||
key: 'h',
|
key: 'h',
|
||||||
fun: toggleHelp,
|
fun: toggleHelp,
|
||||||
|
@ -117,65 +105,80 @@ searxng.ready(function () {
|
||||||
des: 'open the result in a new tab',
|
des: 'open the result in a new tab',
|
||||||
cat: 'Results'
|
cat: 'Results'
|
||||||
},
|
},
|
||||||
}
|
|
||||||
|
|
||||||
// these bindings are enabled by user preferences
|
|
||||||
var vimKeys = {
|
|
||||||
'b': {
|
|
||||||
key: 'b',
|
|
||||||
fun: scrollPage(-window.innerHeight),
|
|
||||||
des: 'scroll one page up',
|
|
||||||
cat: 'Navigation'
|
|
||||||
},
|
|
||||||
'f': {
|
|
||||||
key: 'f',
|
|
||||||
fun: scrollPage(window.innerHeight),
|
|
||||||
des: 'scroll one page down',
|
|
||||||
cat: 'Navigation'
|
|
||||||
},
|
|
||||||
'u': {
|
|
||||||
key: 'u',
|
|
||||||
fun: scrollPage(-window.innerHeight / 2),
|
|
||||||
des: 'scroll half a page up',
|
|
||||||
cat: 'Navigation'
|
|
||||||
},
|
|
||||||
'd': {
|
|
||||||
key: 'd',
|
|
||||||
fun: scrollPage(window.innerHeight / 2),
|
|
||||||
des: 'scroll half a page down',
|
|
||||||
cat: 'Navigation'
|
|
||||||
},
|
|
||||||
'g': {
|
|
||||||
key: 'g',
|
|
||||||
fun: scrollPageTo(-document.body.scrollHeight, 'top'),
|
|
||||||
des: 'scroll to the top of the page',
|
|
||||||
cat: 'Navigation'
|
|
||||||
},
|
|
||||||
'v': {
|
|
||||||
key: 'v',
|
|
||||||
fun: scrollPageTo(document.body.scrollHeight, 'bottom'),
|
|
||||||
des: 'scroll to the bottom of the page',
|
|
||||||
cat: 'Navigation'
|
|
||||||
},
|
|
||||||
'k': {
|
|
||||||
key: 'k',
|
|
||||||
fun: highlightResult('up'),
|
|
||||||
des: 'select previous search result',
|
|
||||||
cat: 'Results'
|
|
||||||
},
|
|
||||||
'j': {
|
|
||||||
key: 'j',
|
|
||||||
fun: highlightResult('down'),
|
|
||||||
des: 'select next search result',
|
|
||||||
cat: 'Results'
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
var keyBindingLayouts = {
|
||||||
|
|
||||||
if (searxng.settings.hotkeys) {
|
"default": Object.assign(
|
||||||
// To add Vim-like key bindings, merge the 'vimKeys' into 'keyBindings'.
|
{ /* SearXNG layout */
|
||||||
Object.assign(keyBindings, vimKeys);
|
'ArrowLeft': {
|
||||||
|
key: '←',
|
||||||
|
fun: highlightResult('up'),
|
||||||
|
des: 'select previous search result',
|
||||||
|
cat: 'Results'
|
||||||
|
},
|
||||||
|
'ArrowRight': {
|
||||||
|
key: '→',
|
||||||
|
fun: highlightResult('down'),
|
||||||
|
des: 'select next search result',
|
||||||
|
cat: 'Results'
|
||||||
|
},
|
||||||
|
}, baseKeyBinding),
|
||||||
|
|
||||||
|
'vim': Object.assign(
|
||||||
|
{ /* Vim-like Key Layout. */
|
||||||
|
'b': {
|
||||||
|
key: 'b',
|
||||||
|
fun: scrollPage(-window.innerHeight),
|
||||||
|
des: 'scroll one page up',
|
||||||
|
cat: 'Navigation'
|
||||||
|
},
|
||||||
|
'f': {
|
||||||
|
key: 'f',
|
||||||
|
fun: scrollPage(window.innerHeight),
|
||||||
|
des: 'scroll one page down',
|
||||||
|
cat: 'Navigation'
|
||||||
|
},
|
||||||
|
'u': {
|
||||||
|
key: 'u',
|
||||||
|
fun: scrollPage(-window.innerHeight / 2),
|
||||||
|
des: 'scroll half a page up',
|
||||||
|
cat: 'Navigation'
|
||||||
|
},
|
||||||
|
'd': {
|
||||||
|
key: 'd',
|
||||||
|
fun: scrollPage(window.innerHeight / 2),
|
||||||
|
des: 'scroll half a page down',
|
||||||
|
cat: 'Navigation'
|
||||||
|
},
|
||||||
|
'g': {
|
||||||
|
key: 'g',
|
||||||
|
fun: scrollPageTo(-document.body.scrollHeight, 'top'),
|
||||||
|
des: 'scroll to the top of the page',
|
||||||
|
cat: 'Navigation'
|
||||||
|
},
|
||||||
|
'v': {
|
||||||
|
key: 'v',
|
||||||
|
fun: scrollPageTo(document.body.scrollHeight, 'bottom'),
|
||||||
|
des: 'scroll to the bottom of the page',
|
||||||
|
cat: 'Navigation'
|
||||||
|
},
|
||||||
|
'k': {
|
||||||
|
key: 'k',
|
||||||
|
fun: highlightResult('up'),
|
||||||
|
des: 'select previous search result',
|
||||||
|
cat: 'Results'
|
||||||
|
},
|
||||||
|
'j': {
|
||||||
|
key: 'j',
|
||||||
|
fun: highlightResult('down'),
|
||||||
|
des: 'select next search result',
|
||||||
|
cat: 'Results'
|
||||||
|
},
|
||||||
|
}, baseKeyBinding)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var keyBindings = keyBindingLayouts[searxng.settings.hotkeys] || keyBindingLayouts.default;
|
||||||
|
|
||||||
searxng.on(document, "keydown", function (e) {
|
searxng.on(document, "keydown", function (e) {
|
||||||
// check for modifiers so we don't break browser's hotkeys
|
// check for modifiers so we don't break browser's hotkeys
|
||||||
if (
|
if (
|
||||||
|
|
Loading…
Reference in New Issue