自己动手,修改 Firefox3 的快捷键

 

一、源起

Firefox下的这几个快捷键始终让我不习惯:

1. 右键菜单中的“另存为”

IE内核的浏览器,在链接上点右键弹出的菜单是这样的:
image
快捷键为A 

而Firefox的默认菜单是这样的
image 
快捷键为K

2. Tab前后切换


在MT和TW里,我一般将Tab向前向后切换分别设置为 Ctrl + Left   和 Ctrl + Right

但在Firefox中,对应的却是 Ctrl + PageUp 和 Ctrl + PageDown   ( 或者 Ctrl + Tab 和 Ctrl + Shift + Tab )


我在网上找了一下修改Firefox默认快捷键的方法,基本上说的都是用一个叫 keyconfig 的扩展。

我不大想再给我本已显臃肿的Firefox再加包袱,就自己研究了一下firefox下的一堆jar文件,结果居然让我给找到了。

下面贴出修改方法,大家可以举一反三,进行定制。

二、修改

我使用的Firefox版本是portableFirefox3, update to 2009011913 Firefox 3.0.6
先来看看怎么修改“另存为”…

1. 修改“链接另存为(K)…”快捷键

首先我把 FireFoxPortable3/App/Firefox/chrome 下的jar包都解压到对应名字的目录中,然后用 TotalCommand 在整个目录查找字符串“链接另存为”
结果直接让我找到了这个文件:

zh-CN.jar/locale/browser/browser.dtd



估计就是这里了,于是我把上面两个对调了一下


好了,先确保关掉firefox,然后把这个文件放回zh-CN.jar这个包的对应路径下
重新打开firefox看看!
哈哈,成功!
 image

2. 修改Tab切换快捷键

第一次尝试就修改成功,这极大地增强了我的信心,接着来改tab前后切换的快捷键。
这个感觉会麻烦一点,因为没有确切的关键字给我作为依据进行搜索。

我试着用"Tab"作为关键字在整个目录找文件,结果中过滤掉图片资源,有如下结果:

 

browser.jar/content/browser/preferences/tabs.js
chrome.jar/test/browser/content/browser/preferences/tabs.xul
chrome.jar/test/browser/content/browser/tabbrowser.css
browser.jar/content/browser/tabbrowser.xml
classic.jar/skin/classic/aero/global/tabbox.css
classic.jar/skin/classic/global/tabbox.css
en-US.jar/locale/browser/preferences/tabs.dtd
en-US.jar/locale/browser/tabbrowser.dtd
en-US.jar/locale/browser/tabbrowser.properties
toolkit.jar/content/global/bindings/tabbox.xml
zh-CN.jar/locale/browser/preferences/tabs.dtd
zh-CN.jar/locale/browser/tabbrowser.dtd
zh-CN.jar/locale/browser/tabbrowser.properties


我再试着在这些文件里搜索字符串"pageDown"(不区分大小写)
结果一个都没搜到
重新试着搜"page_down",结果就搜到了这个文件

toolkit.jar/content/global/bindings/tabbox.xml

我把定位到的这部分整块代码抄下来给大家看看:(绿色部分是我后来加的注释)


<method name="handleEvent">
    <parameter name="event"/>
    <body>
        <![CDATA[
            if (!event.isTrusted) {
                // Don't let untrusted events mess with tabs.
                    return;
            }

            switch (event.keyCode) {
                case event.DOM_VK_TAB:
                    if (event.ctrlKey && !event.altKey && !event.metaKey)
                        if (this.tabs && this.handleCtrlTab) {
                            this.tabs.advanceSelectedTab(event.shiftKey ? -1 : 1, true);
                            event.stopPropagation();
                            event.preventDefault();
                        }
                    break;
                case event.DOM_VK_PAGE_UP: //1, tab向前切换
                    if (event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey)
                        if (this.tabs && this.handleCtrlPageUpDown) {
                            this.tabs.advanceSelectedTab(-1, true);
                            event.stopPropagation();
                            event.preventDefault();
                        }
                    break;
                case event.DOM_VK_PAGE_DOWN//2, tab向后切换
                    if (event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey)
                        if (this.tabs && this.handleCtrlPageUpDown) {
                            this.tabs.advanceSelectedTab(1, true);
                            event.stopPropagation();
                            event.preventDefault();
                        }
                    break;
                case event.DOM_VK_LEFT: //3,功能未研究
                    if (event.metaKey && event.altKey && !event.shiftKey && !event.ctrlKey)
                        if (this.tabs && this._handleMetaAltArrows) {
                            var offset = window.getComputedStyle(this, "").direction == "ltr" ? -1 : 1;
                            this.tabs.advanceSelectedTab(offset, true);
                            event.stopPropagation();
                            event.preventDefault();
                        }
                    break;
                case event.DOM_VK_RIGHT: //4,功能未研究
                    if (event.metaKey && event.altKey && !event.shiftKey && !event.ctrlKey)
                        if (this.tabs && this._handleMetaAltArrows) {
                            var offset = window.getComputedStyle(this, "").direction == "ltr" ? 1 : -1;
                            this.tabs.advanceSelectedTab(offset, true);
                            event.stopPropagation();
                            event.preventDefault();
                        }
                    break;
            }
        ]]>
    </body>
</method>


结合我知道的默认快捷键,我很快定位了要修改的地方(上图注释的四行)
把1和3两行对调,2和4两行对调
我想这样应该满足预期的行为了,所以保存,把它压缩回原jar的相应路径
再次打开firefox

哈哈,又成功了!

好了,我的经验就介绍到这里。
相信对这些jar文件动动手脚,我们还能做更多的事儿~
这些以后有时间再研究吧,如果你有什么新的发现,欢迎给我留言提供线索!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值