Hook (Japanese) - mooz/keysnail GitHub Wiki
- ããã
- äŊŋãæš
- Tips
- ãĢãšãŋãã¤ãē
- ããã¯
- ããŠã°ã¤ãŗãå Ĩæ
- ããŠã°ã¤ãŗãæ¸ã
äģĨä¸ãĢį¤ēããŗãŧããŽåäŊãįĸēčĒããįēãĢ㯠Eval ãŗããŗããåŊšãĢįĢãĄãžãã
M-: (Alt + : ãĒãŠ) ã¨å ĨåããéãããããŗãããĢãŗãŧããæãĄčžŧãŋ Enter ããŧãæŧãã Eval ãŗããŗãã¯éįēč ãŽč¯ãåã§ãã
čŠŗããčĒŦæãĢéĸããĻ㯠ããŽããŧ㸠ãåį §ããĻãã ããã
KeySnail ãŽããã¯ãˇãšãã ãåŠį¨ããã¨ãããã°ãŠã ãŽæ§ã ãĒé¨åãĢč¨ããããããã¯ãã¤ãŗãã¸éĸæ°ãå˛ãåŊãĻãĻãããã¨ãå¯čŊã¨ãĒããžãããžããããŠã°ã¤ãŗãĒãŠãããã¯ãįŦčĒãĢ፿ãããã¨ãã§ããžãã
äžãã° KeyPress ããã¯ã¸éĸæ°ãįģé˛ããå ´å㯠.keysnail.js ãŽæĢå°žã¸æŦĄãŽãããĒãŗãŧããč¨čŋ°ããžãã
hook.addToHook("KeyPress",
function (aKey) {
display.prettyPrint(aKey + " pressed");
});
ããŽãããĢããĻããã¨ããĻãŧãļãããŧãå ĨåããåēĻãĢ display.prettyPrint(aKey + " pressed") ãåŽčĄããããããĢãĒããžããããã§ã¯å ĨåãããããŧãŽååãįģéĸã¸čĄ¨į¤ēããĻããžãã
ããã¯ãã¤ãŗãã¸ãŽéĸæ°å˛ãåŊãĻãĢ㯠addToHook ã setHook ãį¨ããžãã严č
ã¨ãåãåŧæ°ã¯åãã§ããã addToHook ãããã¯ãã¤ãŗããŽæĢå°žã¸éĸæ°ãčŋŊå ãããŽãĢ寞ãã setHook ã¯ãããžã§ãĢããã¯ãã¤ãŗãã¸įģé˛ãããéĸæ°å
¨ãĻãæļåģããåžãĢéĸæ°įģé˛ãčĄããžãã
ãããĢãããŠã°ã¤ãŗå ã§ããã¯įģé˛ãčĄãå ´åã¯åŋ ã addToHook ãäŊŋããããĢããĻãã ããã
ããŠã°ã¤ãŗã¯ãã¨ãĻããˇãŗããĢãĒæšæŗã§įŦčĒãŽããã¯ãã¤ãŗãã፿ãããã¨ãå¯čŊã§ãã
ããã¯ãã¤ãŗãã¨ãããå ´æãĢ hook.callHook("ããã¯ãã¤ãŗãå", åŧæ°) ãŽä¸čĄãč¨čŋ°ããĻä¸ãããããããĻãããã¨ã§ãããŽããã¯ãã¤ãŗããĢå˛ãåŊãĻãããéĸæ°ã¸åŧæ°ãæ¸ĄãããåŽčĄãããžãã
äžãã° KeySnail å é¨ãŽ key ãĸã¸ãĨãŧãĢã§ã¯ãæŦĄãŽãããĢããĻããã¯ãã¤ãŗããæäžãããĻããžãã
hook.callHook("KeyBoardQuit", aEvent);
hook.callHook("PostCommand", hookArg);
ããŽäžãčĻãĻåãããããĢãåããã¯ãã¤ãŗããĢããŖãĻéĸæ°ãĢæ¸Ąãããåŧæ°ã¯į°ãĒããžããäģĨä¸ãĢč¨ãããčĒŦæãåčãĢããĻãã ããã
ãĻãŧãļãããŧãå ĨåããåēĻãĢããŽããã¯ã¸įģé˛ãããéĸæ°ãåŧã°ããžãã
ããŽããã¯ã¸įģé˛ãããéĸæ°ãĢ㯠ããŧã¤ããŗã ãæ¸Ąãããžãã
hook.addToHook("KeyPress",
function (aKey) {
display.prettyPrint(key.keyEventToString(aKey) + " pressed");
});
aKey ãĢã¯å ĨåãããããŧãŽããŧã¤ããŗããæ¸ĄããŽã§ãããã§ã¯ãããæåååŊĸåŧã¸å¤æããįģéĸã¸ã¨čĄ¨į¤ēããĻããžãã
ãĻãŧãļã key.quitKey (ãããŠãĢã㯠C-g) ãå ĨåããéãĢåŧã°ããžãã
ããŽããã¯ã¸įģé˛ãããéĸæ°ãĢ㯠ããŧã¤ããŗã ãæ¸Ąãããžãã
hook.setHook('KeyBoardQuit', function (aEvent) {
if (key.currentKeySequence.length)
return;
command.closeFindBar();
if (util.isCaretEnabled())
command.resetMark(aEvent);
else
goDoCommand("cmd_selectNone");
if (KeySnail.windowType == "navigator:browser")
key.generateKey(aEvent.originalTarget, KeyEvent.DOM_VK_ESCAPE, true);
});
ããã¯å¤ããŽãĻãŧãļ㎠.keysnail.js ã¸åŽéãĢč¨čŋ°ãããĻããã§ãããč¨åŽã§ããéå¸¸ãŽæšæŗã§ã¯ key.quitKey ãĢãŗããŗããå˛ãåŊãĻããã¨ãã§ããĒããããããŽãããĢããĻããã¯ãã¤ãŗãã¸ã¨ãŗããŗããįģé˛ãããã¨ã§ã寞åŋããĻããžãã
ããŧãĢå˛ãåŊãĻããããŗããŗããåŧã°ããå (PreCommand) ã¨åŧã°ããåž (PostCommand) ãĢãããŽããã¯ãã¤ãŗãã¸įģé˛ãããéĸæ°ãåŧã°ããžãã
ããŽããã¯ã¸įģé˛ãããéĸæ°ãĢã¯æŦĄãŽãããĒãĒãã¸ã§ã¯ããæ¸Ąãããžãã
var hookArg = {
func : aFunc,
event : aEvent,
arg : aArg
};
func ãĢ㯠ãŗããŗãæŦäŊ (éĸæ°) ãã event ãĢ㯠ããŧã¤ããŗã ãã arg ãĢ㯠åįŊŽåŧæ° ãããããæ ŧį´ãããžãã
PreCommand ããã¯ã¸å˛ãåŊãĻãããéĸæ°å ã§äžå¤ãæããã¨ãããŽãŗããŗããŽåŽčĄãããŖãŗãģãĢãããã¨ãå¯čŊã§ãã
hook.addToHook("PostCommand",
function (aHookArg) {
var func = aHookArg.func;
display.prettyPrint(func.ksDescription + " executed");
});
ããã§ã¯ aHookArg.func ã¨ããĻããŗããŗãæŦäŊããå ĨæããããŽãŗããŗããŽčĒŦæã func.ksDescription ã¨ããĻåžããŽãĄãįģéĸã¸ã¨čĄ¨į¤ēããĻããžãã
ã¯ãĒããããŧããŽå 厚ãå¤åããã¨ã (ãĻãŧãļããããšãããŗããŧããã¨ã) ãĢåŧã°ããžãã
ãĻãŧãļããŗããŧãããããšããŽå
厚 ãæ¸Ąããžãã
PreCommand ããã¯ã¸å˛ãåŊãĻãããéĸæ°å ã§äžå¤ãæããã¨ãããŽãããšã㯠KeySnail ãŽããĢãĒãŗã°ã¸æ ŧį´ãããžããã
hook.addToHook("ClipboardChanged",
function (aText) {
util.alert("Clipboard Changed!", aText + " copied");
});
ããã§ã¯æ°ãããŗããŧããããããšããŽå 厚ãããã¤ãĸãã°čĄ¨į¤ēããĻããžãã
ããąãŧãˇã§ãŗããŧãŽå¤ãå¤åããã¨ããã¤ãžãããŧã¸ãããŧããããéããŋããåãæŋããŖãéãĢåŧã°ããžãã
ããŧããããããŧã¸ãåãæŋããŖããŋããŽããŧã¸ãŽ URI ãæ ŧį´ããããĒãã¸ã§ã¯ããæ¸Ąããžãã
æååã¨ããĻ㎠URL 㯠spec ãããããŖãĢæ ŧį´ãããĻããžãã
hook.addToHook('LocationChange', function (aNsURI) {
if (aNsURI || aNsURI.spec) {
var url = aNsURI.spec;
display.prettyPrint(url);
}
});
ããŽäžã§ã¯ããŋããåãæŋããŖãéãĒãŠãĢãšã¯ãĒãŧãŗãŽåŗä¸ã¸ã㎠URL ã襨į¤ēããĻããžãã
GreaseMonkey ãŽãããĢãįšåŽãŽãĩã¤ããĢ寞ããåĻįãčĄãããå ´åãĢäžŋåŠã§ãããã
å ¨ããŠã°ã¤ãŗãŽããŧããįĩããŖãéãĢåŧã°ããžãã
ããŽããã¯ã¯įšãĢåŧæ°ãæ¸Ąããžããã
ããŽããã¯ã¯ããŠã°ã¤ãŗå ã§ããäģãŽããŠã°ã¤ãŗãŽå¤ãåŠį¨ãããã䏿¸ãããéãĢæį¨ã§ãã
KeySnail ã¯æŦĄãŽãããĒé įĒã§ããŠã°ã¤ãŗãããŧãããžãã
- ååã _ ã§å§ãžãããŠã°ã¤ãŗ (ãŠã¤ããŠãĒ)
- åæåããĄã¤ãĢ (.keysnail.js)
- åããŠã°ã¤ãŗãååé ãĢããŧã
ããŽįēããã§ãŧãē 3 ãŽãåããŠã°ã¤ãŗãå ã§äģãŽããŠã°ã¤ãŗãŽå¤ãåŠį¨ããã䏿¸ããããã¨ããã¨ãå¯žčąĄã¨ãĒãããŠã°ã¤ãŗãããŽããŠã°ã¤ãŗããå ãĢããŧããããĻããäŋč¨ŧããĒããã (ããĄããååã夿´ãããã¨ã§é įĒãæäŊãããã¨ã¯å¯čŊã§ãã) ããžããããžããã
ããã§ PluginLoaded ããã¯ãŽåēįĒã§ããããŽããã¯ã¸įģé˛ãããéĸæ°ã¯ãå ãģãŠãŽãĒãšãã§ããã¨æŦĄãŽãããĒäŊįŊŽã§åŧã°ããžãã
- ååã _ ã§å§ãžãããŠã°ã¤ãŗ (ãŠã¤ããŠãĒ)
- åæåããĄã¤ãĢ (.keysnail.js)
- åããŠã°ã¤ãŗãååé ãĢããŧã
- PluginLoaded ãĢįģé˛ãããéĸæ°ãŽåŽčĄ
PluginLoaded ãĢįģé˛ãããéĸæ°ãåŧã°ããæįšã§ã¯åããŠã°ã¤ãŗãŽããŧããįĩããŖãĻãããããåŽåŋããĻããŠã°ã¤ãŗãŽå¤ãäŊŋį¨ããã夿´ããããããã¨ãåēæĨãã¨ããããã§ãã
äžãã° Caret hint ããŠã°ã¤ãŗã§ã¯ HoK ããŠã°ã¤ãŗãŽæĄåŧĩããŗããĸãŧããĸã¯ãˇã§ãŗãŽå¤ã䏿¸ãããįēãĢãããŽããã¯ã¸éĸæ°ãįģé˛ããĻããžãã
hook.addToHook('PluginLoaded', function () {
if (!plugins.hok)
return;
var actions = [
[headMode, M({ja: "ããŖãŦãããčĻį´ ãŽå
é ã¸į§ģå", en: "Move caret to the head of the selected element"}),
function (e) moveCaret(e, true, false)],
[tailMode, M({ja: "ããŖãŦãããčĻį´ ãŽæĢå°žã¸į§ģå", en: "Move caret to the tail of the selected element"}),
function (e) moveCaret(e, false, false)],
[selectHeadMode, M({ja: "čĻį´ ã鏿ããĻããŖãŦãããå
é ã¸į§ģå", en: "Select element and move caret to the head"}),
function (e) moveCaret(e, false, true)],
[selectTailMode, M({ja: "čĻį´ ã鏿ããĻããŖãŦãããæĢå°žã¸į§ģå", en: "Select element and move caret to the tail"}),
function (e) moveCaret(e, false, true)]
];
// äģĨä¸įįĨ
Firefox ãŽãĄã¤ãŗãĻãŖãŗããĻãéããããéãĢåŧã°ããžãã
ããŽããã¯ã¯įšãĢåŧæ°ãæ¸Ąããžããã
ããŽããã¯ãĢįģé˛ãããéĸæ°ã¯ããšããŠã¯ãŋãŽãããĢæ¯ãčãŖãĻãããžããããŠã°ã¤ãŗãŽåžåĻįãĒãŠãčĄãããå ´åãĢäžŋåŠã§ãããã
Unload ããã¯ã¯ KeySnail 1.1.8 ãã፿ãããĻããžãã
KeySnail ãŽåæåãįĩäēããéãĢåŧã°ããžãã
įšãĢåŧæ°ãæ¸Ąããžããã
Unload ããã¯ã¯ KeySnail 1.3.2 ãã፿ãããĻããžãã