Skip to content

Code snippets for custom keyboard shortcuts(ja)

lv7777 edited this page May 3, 2016 · 1 revision

Firefoxはこれまで非常にたくさんのキーボードショートカットを作成し、他のアドオンもまた自分自身のキーボードショートカットを提供しています。

私は他のアドオンと重複しないショートカットを見つけるのが難しいため、他のアドオンのためにAPIを提供することに決めました。他のスクリプトを使って動きを定義することのできるアドオン(例えばDorando keyconfigなど)を使い、キーボードショートカットをカスタマイズしてください。すいません。

関連項目:

tabにフォーカスを移動する

Firefoxはフォーカスをタブ間で移動させるための自分自身のショートカットを持っていますが、デフォルトでは無効化されています。そのため下記userChrome.cssを使い有効化する必要があります。(訳注:このcssを有効にするとtabキーによって選択することができます。)

.tabbrowser-tab {
  -moz-user-focus: normal !important;
}

ちなみに、前のタブや後ろのタブを選ぶ Ctrl-PageUpCtrl-PageDown というショートカットがデフォルトで使用可能です。

Toggle show/hide the tab bar

if (gBrowser.treeStyleTab.tabbarShown) {
  gBrowser.treeStyleTab.hideTabbar();
} else {
  gBrowser.treeStyleTab.showTabbar();
}

現在のタブとその下のタブをすべて閉じる

gBrowser.treeStyleTab.removeTabSubtree(gBrowser.selectedTab);

Reload ancestor tabs

TreeStyleTabService.getAncestorTabs(gBrowser.selectedTab).forEach(function(aTab) {
  gBrowser.reloadTab(aTab);
});

Jump to the previous tree

var root = TreeStyleTabService.getRootTab(gBrowser.selectedTab);
var prev = TreeStyleTabService.getPreviousSiblingTab(root);
if (prev)
  gBrowser.selectedTab = prev;

Jump to the next tree

var root = TreeStyleTabService.getRootTab(gBrowser.selectedTab);
var next = TreeStyleTabService.getNextSiblingTab(root);
if (next)
  gBrowser.selectedTab = next;

新しいタブを開く

...as Child Tab

TreeStyleTabService.readyToOpenChildTab(gBrowser.selectedTab);
openUILinkIn(BROWSER_NEW_TAB_URL, "tab");

...as Sibling Tab

var parent = TreeStyleTabService.getParentTab(gBrowser.selectedTab);
if (parent)
	TreeStyleTabService.readyToOpenChildTab(parent);
openUILinkIn(BROWSER_NEW_TAB_URL, "tab");

tabの移動

Right

gBrowser.treeStyleTab.demoteCurrentTab();

Left

gBrowser.treeStyleTab.promoteCurrentTab();

Down

var tab = gBrowser.selectedTab, b = gBrowser.treeStyleTab.getTabBrowserFromChild(tab).treeStyleTab, next = b.getNextVisibleTab(tab);
if (next) {
    var getTabLevel = (tab) => b.getAncestorTabs(tab).length;
    var nextLevel = getTabLevel(next), tabLevel = getTabLevel(tab);
    if (nextLevel >= tabLevel) {
        if (nextLevel > tabLevel)
            next = b.getNextSiblingTab(tab);
        if (next) {
            while (b.hasChildTabs(next))
                next = b.getLastChildTab(next);
            gBrowser.moveTabTo(tab, next._tPos);
        }
    }
}

Up

var tab = gBrowser.selectedTab, b = gBrowser.treeStyleTab.getTabBrowserFromChild(tab).treeStyleTab, prev = b.getPreviousVisibleTab(tab);
if (prev) {
	var getTabLevel = (tab) => b.getAncestorTabs(tab).length;
	var prevLevel = getTabLevel(prev), tabLevel = getTabLevel(tab);
	if (prevLevel >= tabLevel) {
		if (prevLevel > tabLevel)
			prev = b.getPreviousSiblingTab(tab);
		gBrowser.moveTabTo(tab, prev._tPos);
		var newLevel = getTabLevel(tab);
		while (newLevel-- > tabLevel)
			b.promoteTab(tab);
	}
}
Clone this wiki locally