Skip to content

Instantly share code, notes, and snippets.

@NaokiKuzumi
Created October 21, 2014 14:33
Show Gist options
  • Save NaokiKuzumi/0d6b3f14d0130a964dfe to your computer and use it in GitHub Desktop.
Save NaokiKuzumi/0d6b3f14d0130a964dfe to your computer and use it in GitHub Desktop.
// ========================== KeySnail Init File =========================== //
// この領域は, GUI により設定ファイルを生成した際にも引き継がれます
// 特殊キー, キーバインド定義, フック, ブラックリスト以外のコードは, この中に書くようにして下さい
// ========================================================================= //
//{{%PRESERVE%
// Put your codes here
// Metaplus
plugins.options["metaplus.metakeys"] = ["ESC", "C-t"];
// HoK
key.setViewKey('e', function (aEvent, aArg) {
ext.exec("hok-start-foreground-mode", aArg);
}, 'Hok - Foreground hint mode', true);
key.setViewKey('E', function (aEvent, aArg) {
ext.exec("hok-start-background-mode", aArg);
}, 'HoK - Background hint mode', true);
key.setViewKey(';', function (aEvent, aArg) {
ext.exec("hok-start-extended-mode", aArg);
}, 'HoK - Extented hint mode', true);
//key.setViewKey(['C-c', 'C-e'], function (aEvent, aArg) {
// ext.exec("hok-start-continuous-mode", aArg);
//}, 'Start continuous HaH', true);
// Site local keymap
var local = {};
plugins.options["site_local_keymap.local_keymap"] = local;
function fake(k, i) function () {};
local["^https?://github.com/*"] = [
];
// Tanything
key.setViewKey("a", function (ev, arg) {
ext.exec("tanything", arg);
}, "view all tabs", true);
plugins.options["tanything_opt.keymap"] = {
"C-z" : "prompt-toggle-edit-mode",
"SPC" : "prompt-next-page",
"b" : "prompt-previous-page",
"j" : "prompt-next-completion",
"k" : "prompt-previous-completion",
"g" : "prompt-beginning-of-candidates",
"G" : "prompt-end-of-candidates",
"D" : "prompt-cancel",
// Tanything specific actions
"O" : "localOpen",
"q" : "localClose",
"p" : "localLeftclose",
"n" : "localRightclose",
"a" : "localAllclose",
"d" : "localDomainclose",
"c" : "localClipUT",
"C" : "localClipU",
"e" : "localMovetoend"
};
// bmany
plugins.options["bmany.default_open_type"] = "tab";
key.setViewKey(['M-b'], function (ev, arg) {
ext.exec("bmany-list-all-bookmarks", arg, ev);
}, 'bmany - List all bookmarks');
// key.setViewKey([':', 'B'], function (ev, arg) {
// ext.exec("bmany-list-bookmarklets", arg, ev);
// }, "bmany - List all bookmarklets");
key.setViewKey([':', 'k'], function (ev, arg) {
ext.exec("bmany-list-bookmarks-with-keyword", arg, ev);
}, "bmany - List bookmarks with keyword");
key.setViewKey([':', 't'], function (ev, arg) {
ext.exec("bmany-list-bookmarks-with-tag", arg, ev);
}, "bmany - List bookmarks with tag");
key.setViewKey('s', function (ev, arg) {
let engines = util.suggest.getEngines();
// If you want to use all available suggest engines,
// change suggestEngines value to util.suggest.filterEngines(engines);
let suggestEngines = [util.suggest.ss.getEngineByName("Google")];
let collection = engines.map(
function (engine)[(engine.iconURI || {
spec: ""
}).spec, engine.name, engine.description]);
prompt.selector({
message: "engine:",
collection: collection,
flags: [ICON | IGNORE, 0, 0],
header: ["Name", "Description"],
keymap: {
"s": "prompt-decide",
"j": "prompt-next-completion",
"k": "prompt-previous-completion"
},
callback: function (i) {
if (i >= 0) util.suggest.searchWithSuggest(engines[i], suggestEngines, "tab");
}
});
}, "サジェスト検索", true);
//}}%PRESERVE%
// ========================================================================= //
// ========================= Special key settings ========================== //
key.quitKey = "C-g";
key.helpKey = "<f1>";
key.escapeKey = "C-q";
key.macroStartKey = "<f3>";
key.macroEndKey = "<f4>";
key.universalArgumentKey = "C-u";
key.negativeArgument1Key = "<f5>";
key.negativeArgument2Key = "C-M--";
key.negativeArgument3Key = "M--";
key.suspendKey = "<f2>";
// ================================= Hooks ================================= //
hook.setHook('KeyBoardQuit', function (aEvent) {
if (key.currentKeySequence.length) {
return;
}
command.closeFindBar();
var marked = command.marked(aEvent);
if (util.isCaretEnabled()) {
if (marked) {
command.resetMark(aEvent);
} else {
if ("blur" in aEvent.target) {
aEvent.target.blur();
}
gBrowser.focus();
_content.focus();
}
} else {
goDoCommand("cmd_selectNone");
}
if (KeySnail.windowType === "navigator:browser" && !marked) {
key.generateKey(aEvent.originalTarget, KeyEvent.DOM_VK_ESCAPE, true);
}
});
// ============================= Key bindings ============================== //
key.setGlobalKey('C-M-r', function (ev) {
userscript.reload();
}, 'Reload the initialization file', true);
key.setGlobalKey('M-x', function (ev, arg) {
ext.select(arg, ev);
}, 'List exts and execute selected one', true);
key.setGlobalKey('M-:', function (ev) {
command.interpreter();
}, 'Command interpreter', true);
key.setGlobalKey(['<f1>', 'b'], function (ev) {
key.listKeyBindings();
}, 'List all keybindings');
key.setGlobalKey(['<f1>', 'F'], function (ev) {
openHelpLink("firefox-help");
}, 'Display Firefox help');
key.setGlobalKey('C-m', function (ev) {
key.generateKey(ev.originalTarget, KeyEvent.DOM_VK_RETURN, true);
}, 'Generate the return key code');
key.setGlobalKey(['C-x', '1'], function (ev) {
window.loadURI(ev.target.ownerDocument.location.href);
}, 'Show current frame only', true);
key.setGlobalKey(['C-x', 'l'], function (ev) {
command.focusToById("urlbar");
}, 'Focus to the location bar', true);
key.setGlobalKey(['C-x', 'g'], function (ev) {
command.focusToById("searchbar");
}, 'Focus to the search bar', true);
key.setGlobalKey(['C-x', 't'], function (ev) {
command.focusElement(command.elementsRetrieverTextarea, 0);
}, 'Focus to the first textarea', true);
key.setGlobalKey(['C-x', 's'], function (ev) {
command.focusElement(command.elementsRetrieverButton, 0);
}, 'Focus to the first button', true);
key.setGlobalKey(['C-x', 'k'], function (ev) {
BrowserCloseTabOrWindow();
}, 'Close tab / window');
key.setGlobalKey(['C-x', 'K'], function (ev) {
closeWindow(true);
}, 'Close the window');
key.setGlobalKey(['C-x', 'n'], function (ev) {
OpenBrowserWindow();
}, 'Open new window');
key.setGlobalKey(['C-x', 'C-c'], function (ev) {
goQuitApplication();
}, 'Exit Firefox', true);
key.setGlobalKey(['C-x', 'o'], function (ev, arg) {
// command.focusOtherFrame(arg);
getBrowser().mTabContainer.advanceSelectedTab(1, true);
}, 'Select next tab');
key.setGlobalKey(['C-x', 'C-f'], function (ev) {
BrowserOpenFileWindow();
}, 'Open the local file', true);
key.setGlobalKey(['C-x', 'C-s'], function (ev) {
saveDocument(window.content.document);
}, 'Save current page to the file', true);
key.setGlobalKey('M-w', function (ev) {
command.copyRegion(ev);
}, 'Copy selected text', true);
key.setGlobalKey('C-s', function (ev) {
command.iSearchForwardKs(ev);
}, 'Emacs like incremental search forward', true);
key.setGlobalKey('C-r', function (ev) {
command.iSearchBackwardKs(ev);
}, 'Emacs like incremental search backward', true);
key.setGlobalKey(['C-c', 'u'], function (ev) {
undoCloseTab();
}, 'Undo closed tab');
key.setGlobalKey(['C-c', 'C-c', 'C-v'], function (ev) {
toJavaScriptConsole();
}, 'Display JavaScript console', true);
key.setGlobalKey(['C-c', 'C-c', 'C-c'], function (ev) {
command.clearConsole();
}, 'Clear Javascript console', true);
key.setGlobalKey('C-M-l', function (ev) {
getBrowser().mTabContainer.advanceSelectedTab(1, true);
}, 'Select next tab');
key.setGlobalKey('C-M-h', function (ev) {
getBrowser().mTabContainer.advanceSelectedTab(-1, true);
}, 'Select previous tab');
key.setGlobalKey('C-o', function (ev) {
BrowserBack();
}, 'Back');
key.setGlobalKey('C-i', function (ev) {
BrowserForward();
}, 'Forward');
key.setGlobalKey('C-h', function (ev, arg) {
// Put your codes here
}, 'disable history shortcut');
key.setViewKey('e', function (aEvent, aArg) {
ext.exec("hok-start-foreground-mode", aArg);
}, 'Hok - Foreground hint mode', true);
key.setViewKey('E', function (aEvent, aArg) {
ext.exec("hok-start-background-mode", aArg);
}, 'HoK - Background hint mode', true);
key.setViewKey(';', function (aEvent, aArg) {
ext.exec("hok-start-extended-mode", aArg);
}, 'HoK - Extented hint mode', true);
key.setViewKey(['C-c', 'C-e'], function (aEvent, aArg) {
ext.exec("hok-start-continuous-mode", aArg);
}, 'Start continuous HaH', true);
key.setViewKey('a', function (ev, arg) {
ext.exec("tanything", arg);
}, 'view all tabs', true);
key.setViewKey('M-b', function (ev, arg) {
ext.exec("bmany-list-all-bookmarks", arg, ev);
}, 'bmany - List all bookmarks');
key.setViewKey(':', function (ev, arg) {
shell.input(null, arg);
}, 'List and execute commands', true);
key.setViewKey('s', function (ev, arg) {
let engines = util.suggest.getEngines();
// If you want to use all available suggest engines,
// change suggestEngines value to util.suggest.filterEngines(engines);
let suggestEngines = [util.suggest.ss.getEngineByName("Google")];
let collection = engines.map(
function (engine)[(engine.iconURI || {
spec: ""
}).spec, engine.name, engine.description]);
prompt.selector({
message: "engine:",
collection: collection,
flags: [ICON | IGNORE, 0, 0],
header: ["Name", "Description"],
keymap: {
"s": "prompt-decide",
"j": "prompt-next-completion",
"k": "prompt-previous-completion"
},
callback: function (i) {
if (i >= 0) util.suggest.searchWithSuggest(engines[i], suggestEngines, "tab");
}
});
}, 'サジェスト検索', true);
key.setViewKey([['C-n'], ['j']], function (ev) {
key.generateKey(ev.originalTarget, KeyEvent.DOM_VK_DOWN, true);
}, 'Scroll line down');
key.setViewKey([['C-p'], ['k']], function (ev) {
key.generateKey(ev.originalTarget, KeyEvent.DOM_VK_UP, true);
}, 'Scroll line up');
key.setViewKey([['C-f'], ['.']], function (ev) {
key.generateKey(ev.originalTarget, KeyEvent.DOM_VK_RIGHT, true);
}, 'Scroll right');
key.setViewKey([['C-b'], [',']], function (ev) {
key.generateKey(ev.originalTarget, KeyEvent.DOM_VK_LEFT, true);
}, 'Scroll left');
key.setViewKey([['M-v'], ['b']], function (ev) {
goDoCommand("cmd_scrollPageUp");
}, 'Scroll page up');
key.setViewKey('C-v', function (ev) {
goDoCommand("cmd_scrollPageDown");
}, 'Scroll page down');
key.setViewKey([['M-<'], ['g']], function (ev) {
goDoCommand("cmd_scrollTop");
}, 'Scroll to the top of the page', true);
key.setViewKey([['M->'], ['G']], function (ev) {
goDoCommand("cmd_scrollBottom");
}, 'Scroll to the bottom of the page', true);
key.setViewKey('l', function (ev) {
getBrowser().mTabContainer.advanceSelectedTab(1, true);
}, 'Select next tab');
key.setViewKey('h', function (ev) {
getBrowser().mTabContainer.advanceSelectedTab(-1, true);
}, 'Select previous tab');
key.setViewKey('R', function (ev) {
BrowserReload();
}, 'Reload the page', true);
key.setViewKey('B', function (ev) {
BrowserBack();
}, 'Back');
key.setViewKey('F', function (ev) {
BrowserForward();
}, 'Forward');
key.setViewKey(['C-x', 'h'], function (ev) {
goDoCommand("cmd_selectAll");
}, 'Select all', true);
key.setViewKey('f', function (ev) {
command.focusElement(command.elementsRetrieverTextarea, 0);
}, 'Focus to the first textarea', true);
key.setViewKey('M-p', function (ev) {
command.walkInputElement(command.elementsRetrieverButton, true, true);
}, 'Focus to the next button');
key.setViewKey('M-n', function (ev) {
command.walkInputElement(command.elementsRetrieverButton, false, true);
}, 'Focus to the previous button');
key.setEditKey(['C-x', 'h'], function (ev) {
command.selectAll(ev);
}, 'Select whole text', true);
key.setEditKey([['C-x', 'u'], ['C-_']], function (ev) {
display.echoStatusBar("Undo!", 2000);
goDoCommand("cmd_undo");
}, 'Undo');
key.setEditKey(['C-x', 'r', 'd'], function (ev, arg) {
command.replaceRectangle(ev.originalTarget, "", false, !arg);
}, 'Delete text in the region-rectangle', true);
key.setEditKey(['C-x', 'r', 't'], function (ev) {
prompt.read("String rectangle: ", function (aStr, aInput) {command.replaceRectangle(aInput, aStr);}, ev.originalTarget);
}, 'Replace text in the region-rectangle with user inputted string', true);
key.setEditKey(['C-x', 'r', 'o'], function (ev) {
command.openRectangle(ev.originalTarget);
}, 'Blank out the region-rectangle, shifting text right', true);
key.setEditKey(['C-x', 'r', 'k'], function (ev, arg) {
command.kill.buffer = command.killRectangle(ev.originalTarget, !arg);
}, 'Delete the region-rectangle and save it as the last killed one', true);
key.setEditKey(['C-x', 'r', 'y'], function (ev) {
command.yankRectangle(ev.originalTarget, command.kill.buffer);
}, 'Yank the last killed rectangle with upper left corner at point', true);
key.setEditKey([['C-SPC'], ['C-@']], function (ev) {
command.setMark(ev);
}, 'Set the mark', true);
key.setEditKey('C-o', function (ev) {
command.openLine(ev);
}, 'Open line');
key.setEditKey('C-\\', function (ev) {
display.echoStatusBar("Redo!", 2000);
goDoCommand("cmd_redo");
}, 'Redo');
key.setEditKey('C-a', function (ev) {
command.beginLine(ev);
}, 'Beginning of the line');
key.setEditKey('C-e', function (ev) {
command.endLine(ev);
}, 'End of the line');
key.setEditKey('C-f', function (ev) {
command.nextChar(ev);
}, 'Forward char');
key.setEditKey('C-b', function (ev) {
command.previousChar(ev);
}, 'Backward char');
key.setEditKey('M-f', function (ev) {
command.forwardWord(ev);
}, 'Next word');
key.setEditKey('M-b', function (ev) {
command.backwardWord(ev);
}, 'Previous word');
key.setEditKey('C-n', function (ev) {
command.nextLine(ev);
}, 'Next line');
key.setEditKey('C-p', function (ev) {
command.previousLine(ev);
}, 'Previous line');
key.setEditKey('C-v', function (ev) {
command.pageDown(ev);
}, 'Page down');
key.setEditKey('M-v', function (ev) {
command.pageUp(ev);
}, 'Page up');
key.setEditKey('M-<', function (ev) {
command.moveTop(ev);
}, 'Beginning of the text area');
key.setEditKey('M->', function (ev) {
command.moveBottom(ev);
}, 'End of the text area');
key.setEditKey('C-d', function (ev) {
goDoCommand("cmd_deleteCharForward");
}, 'Delete forward char');
key.setEditKey('C-h', function (ev) {
goDoCommand("cmd_deleteCharBackward");
}, 'Delete backward char');
key.setEditKey('M-d', function (ev) {
command.deleteForwardWord(ev);
}, 'Delete forward word');
key.setEditKey([['C-<backspace>'], ['M-<delete>']], function (ev) {
command.deleteBackwardWord(ev);
}, 'Delete backward word');
key.setEditKey('M-u', function (ev, arg) {
command.wordCommand(ev, arg, command.upcaseForwardWord, command.upcaseBackwardWord);
}, 'Convert following word to upper case');
key.setEditKey('M-l', function (ev, arg) {
command.wordCommand(ev, arg, command.downcaseForwardWord, command.downcaseBackwardWord);
}, 'Convert following word to lower case');
key.setEditKey('M-c', function (ev, arg) {
command.wordCommand(ev, arg, command.capitalizeForwardWord, command.capitalizeBackwardWord);
}, 'Capitalize the following word');
key.setEditKey('C-k', function (ev) {
command.killLine(ev);
}, 'Kill the rest of the line');
key.setEditKey('C-y', command.yank, 'Paste (Yank)');
key.setEditKey('M-y', command.yankPop, 'Paste pop (Yank pop)', true);
key.setEditKey('C-M-y', function (ev) {
if (!command.kill.ring.length) {
return;
}
let (ct = command.getClipboardText()) (!command.kill.ring.length || ct != command.kill.ring[0]) &&
command.pushKillRing(ct);
prompt.selector({message: "Paste:", collection: command.kill.ring, callback: function (i) {if (i >= 0) {key.insertText(command.kill.ring[i]);}}});
}, 'Show kill-ring and select text to paste', true);
key.setEditKey('C-w', function (ev) {
goDoCommand("cmd_copy");
goDoCommand("cmd_delete");
command.resetMark(ev);
}, 'Cut current region', true);
key.setEditKey('M-n', function (ev) {
command.walkInputElement(command.elementsRetrieverTextarea, true, true);
}, 'Focus to the next text area');
key.setEditKey('M-p', function (ev) {
command.walkInputElement(command.elementsRetrieverTextarea, false, true);
}, 'Focus to the previous text area');
key.setCaretKey([['C-a'], ['^']], function (ev) {
ev.target.ksMarked ? goDoCommand("cmd_selectBeginLine") : goDoCommand("cmd_beginLine");
}, 'Move caret to the beginning of the line');
key.setCaretKey([['C-e'], ['$'], ['M->'], ['G']], function (ev) {
ev.target.ksMarked ? goDoCommand("cmd_selectEndLine") : goDoCommand("cmd_endLine");
}, 'Move caret to the end of the line');
key.setCaretKey([['C-n'], ['j']], function (ev) {
ev.target.ksMarked ? goDoCommand("cmd_selectLineNext") : goDoCommand("cmd_scrollLineDown");
}, 'Move caret to the next line');
key.setCaretKey([['C-p'], ['k']], function (ev) {
ev.target.ksMarked ? goDoCommand("cmd_selectLinePrevious") : goDoCommand("cmd_scrollLineUp");
}, 'Move caret to the previous line');
key.setCaretKey([['C-f'], ['l']], function (ev) {
ev.target.ksMarked ? goDoCommand("cmd_selectCharNext") : goDoCommand("cmd_scrollRight");
}, 'Move caret to the right');
key.setCaretKey([['C-b'], ['h'], ['C-h']], function (ev) {
ev.target.ksMarked ? goDoCommand("cmd_selectCharPrevious") : goDoCommand("cmd_scrollLeft");
}, 'Move caret to the left');
key.setCaretKey([['M-f'], ['w']], function (ev) {
ev.target.ksMarked ? goDoCommand("cmd_selectWordNext") : goDoCommand("cmd_wordNext");
}, 'Move caret to the right by word');
key.setCaretKey([['M-b'], ['W']], function (ev) {
ev.target.ksMarked ? goDoCommand("cmd_selectWordPrevious") : goDoCommand("cmd_wordPrevious");
}, 'Move caret to the left by word');
key.setCaretKey([['C-v'], ['SPC']], function (ev) {
ev.target.ksMarked ? goDoCommand("cmd_selectPageNext") : goDoCommand("cmd_movePageDown");
}, 'Move caret down by page');
key.setCaretKey([['M-v'], ['b']], function (ev) {
ev.target.ksMarked ? goDoCommand("cmd_selectPagePrevious") : goDoCommand("cmd_movePageUp");
}, 'Move caret up by page');
key.setCaretKey([['M-<'], ['g']], function (ev) {
ev.target.ksMarked ? goDoCommand("cmd_selectTop") : goDoCommand("cmd_scrollTop");
}, 'Move caret to the top of the page');
key.setCaretKey('J', function (ev) {
util.getSelectionController().scrollLine(true);
}, 'Scroll line down');
key.setCaretKey('K', function (ev) {
util.getSelectionController().scrollLine(false);
}, 'Scroll line up');
key.setCaretKey(',', function (ev) {
util.getSelectionController().scrollHorizontal(true);
goDoCommand("cmd_scrollLeft");
}, 'Scroll left');
key.setCaretKey('.', function (ev) {
goDoCommand("cmd_scrollRight");
util.getSelectionController().scrollHorizontal(false);
}, 'Scroll right');
key.setCaretKey('z', function (ev) {
command.recenter(ev);
}, 'Scroll to the cursor position');
key.setCaretKey([['C-SPC'], ['C-@']], function (ev) {
command.setMark(ev);
}, 'Set the mark', true);
key.setCaretKey(':', function (ev, arg) {
shell.input(null, arg);
}, 'List and execute commands', true);
key.setCaretKey('R', function (ev) {
BrowserReload();
}, 'Reload the page', true);
key.setCaretKey('B', function (ev) {
BrowserBack();
}, 'Back');
key.setCaretKey('F', function (ev) {
BrowserForward();
}, 'Forward');
key.setCaretKey(['C-x', 'h'], function (ev) {
goDoCommand("cmd_selectAll");
}, 'Select all', true);
key.setCaretKey('f', function (ev) {
command.focusElement(command.elementsRetrieverTextarea, 0);
}, 'Focus to the first textarea', true);
key.setCaretKey('M-p', function (ev) {
command.walkInputElement(command.elementsRetrieverButton, true, true);
}, 'Focus to the next button');
key.setCaretKey('M-n', function (ev) {
command.walkInputElement(command.elementsRetrieverButton, false, true);
}, 'Focus to the previous button');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment