一、源起
Firefox下的這幾個快速鍵始終讓我不習慣:
1. 右鍵菜單中的“另存新檔”
IE核心的瀏覽器,在連結上點右鍵彈出的菜單是這樣的:
快速鍵為A
而Firefox的預設菜單是這樣的
快速鍵為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
<!ENTITY saveLinkCmd.label "連結另存新檔…"><br /><!ENTITY saveLinkCmd.accesskey "k"><br />...<br /><!ENTITY copyLinkCmd.label "複製連結地址"><br /><!ENTITY copyLinkCmd.accesskey "a">
估計就是這裡了,於是我把上面兩個對調了一下
<!ENTITY saveLinkCmd.label "連結另存新檔…"><br /><!ENTITY saveLinkCmd.accesskey "a"><br />...<br /><!ENTITY copyLinkCmd.label "複製連結地址"><br /><!ENTITY copyLinkCmd.accesskey "k">
好了,先確保關掉firefox,然後把這個檔案放回zh-CN.jar這個包的對應路徑下
重新開啟firefox看看!
哈哈,成功!
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檔案動動手腳,我們還能做更多的事兒~
這些以後有時間再研究吧,如果你有什麼新的發現,歡迎給我留言提供線索!