keysnail: 如何将把Scrapbook的收集快捷键从Ctrl+Shift+L改为其它键?

(这篇文章是基于一个网友的来信和我的答复。因为对其它朋友使用keysnail有帮助,所以贴出来)

2011/8/8 xxxx <xxxx@gmail.com>:

> 在使用 Vimperator 中,可以把拓展中的命令映射到键盘快捷键上
> 比如:把 Scrapbook 的收集快捷键从 Ctrl+Shift+L 改为 S
> 不知道这点在 Keysnail 下如何实现?
> 现在 Keysnail 还没有一个完整的帮助文档
> 而且我对 JavaScript 也不熟悉
> 因此我不太懂得怎么去写自己的命令
>
> 盼百忙中得到答复,不胜感激!
>
> Yibie 上
>

 



你好,

我不知道你说的“把拓展中的命令映射到键盘快捷键上“具体是什么方法,我只知道vimperator本身可以通过:emenu来执行菜单项,再将:emenu命令映射到键盘就可以的。

但keysnail目前并没有vimperator里面:emenu这样的功能。这个问题我一般是这么解决的:


1. 首先查看Scrapbook的代码,看它的overlay信息:

打开 ~/.mozilla/firefox/xxxxxx.default/exteionsions/scrapbookplus@addons.mozilla.org.xpi (这是个zip文件)

查看chrome.manifest, 找到以overlay开头的行

    overlay chrome://browser/content/browser.xul    chrome://scrapbook/content/overlay.xul

这说明这个扩展在firefox主界面(chrome://browser/content/browser.xul) 添加了一些元素,这些元素在chrome://scrapbook/content/overlay.xul这个文件里面描述

2. 继续查看刚才xpi里面的chrome/content/scrapbook/overlay.xul,里面能看到如下描述

<menubar id="main-menubar">
<menu id="ScrapBookMenu" label="ScrapBook Plus"
datasources
="rdf:null" ref="urn:scrapbook:root" flags="dont-test-empty"
insertafter
="bookmarks-menu bookmarksMenu" accesskey="&sb.key.menubar;"
oncommand
="sbMenuHandler.onClick(event);"
onclick
="if (event.button == 1) sbMenuHandler.onClick(event);">
<menupopup onpopupshowing="sbMenuHandler.onPopupShowing(event, this);">
<menuitem id="ScrapBookMenubarItem1" key="key_ScrapBookCapture"/>
<menuitem id="ScrapBookMenubarItem2" key="key_ScrapBookCaptureAs"/>
<menuitem id="ScrapBookMenubarItem3"
key
="key_BookmarkWithScrapBook" label="&sb.capture.bookmark;..."
oncommand
="sbBrowserOverlay.execBookmark('ScrapBookContextPicking');
event.stopPropagation();"
/>
<menuitem id="ScrapBookMenubarItem4"
label
="&sb.capture.alltabs;..."
oncommand
="sbMenuHandler.execCaptureAllTabs();
event.stopPropagation();"
/>
<menuitem id="ScrapBookMenubarItem5" sblabel="&sb.sidebar;"
observes
="viewScrapBookSidebar" key="key_openScrapBookSidebar"/>
<menuseparator />
</menupopup>
...


这说明这个扩展在Firefox主界面的菜单栏(main-menu-bar)插入了一个菜单项(ScrapBookMenu),其下第一个子菜单项目是

<menuitem id="ScrapBookMenubarItem1" key="key_ScrapBookCapture" />

这就是你说的那个快捷键为Ctrl+Shift+L的菜单(有时根据XUL文件不太容易看出来到底是哪一项对应我们所说的菜单项,就需要先在chrome/locale/zh-CN下面按菜单文字搜索一下),它的按键为key_ScrapBookCapture,在这个overlay.xul中往上找这个key的定义,找到

<key id="key_ScrapBookCapture"      key="&sb.key.capture;"
modifiers
="accel alt" oncommand="sbBrowserOverlay.execCapture(0, null,
false, 'urn:scrapbook:root');"
/>

 

于是你知道这个菜单项对应的JavaScript代码是: sbBrowserOverlay.execCapture(0, null, false, 'urn:scrapbook:root');

3. 下一步就是在Keysnail的配置界面里面添加一个original command,在实现部分填入上面看到的代码,变成:

function (ev, arg) {
sbBrowserOverlay.execCapture(
0, null, false, 'urn:scrapbook:root');
}

 

然后在界面上输入你想要的热键,就行啦

 

总的来说,对新手有点复杂哈,这需要了解一点XUL方面的知识,你多琢磨一下。

不过,对于这种已有快捷键(Ctrl+Shift+L)的,我一般不再添加别的键。

巴蛮子

 

 

 

转载于:https://www.cnblogs.com/bamanzi/archive/2011/08/20/firefox-addon-2-keysnail.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值