commands

Typ Object
Verpflichtend Nein
Manifest-Version 2 oder höher
Beispiel
json
"commands": {
  "toggle-feature": {
    "suggested_key": {
      "default": "Ctrl+Shift+Y",
      "linux": "Ctrl+Shift+U"
    },
    "description": "Send a 'toggle-feature' event"
  }
}

Verwenden Sie den commands-Schlüssel, um eine oder mehrere Tastenkombinationen für Ihre Erweiterung zu definieren.

Jede Tastenkombination wird mit einem Namen, einer Tastenkombination und einer Beschreibung definiert. Nachdem Sie Befehle in der manifest.json-Datei Ihrer Erweiterung definiert haben, können Sie die zugehörigen Tastenkombinationen mit der commands-API überwachen.

Syntax

Der commands-Schlüssel ist ein Objekt, und jeder Shortcut ist eine Eigenschaft davon. Der Name der Eigenschaft ist der Name des Shortcuts.

Der Wert jedes Shortcuts ist ein Objekt mit bis zu 2 Eigenschaften:

  1. suggested_key Optional: die Tastenkombination, die den Shortcut aktiviert.
  2. description Optional: ein String, der den Shortcut beschreibt, d.h. was er tut.

Die Eigenschaft suggested_key ist ein Objekt mit beliebigen oder keinen dieser Eigenschaften (alle Strings):

  • "default"
  • "mac"
  • "linux"
  • "windows"
  • "chromeos"
  • "android"
  • "ios"

Der Wert jeder Eigenschaft ist der Tastatur-Shortcut für den Befehl auf dieser Plattform, als ein String mit durch "+" getrennten Tasten. Der Wert für "default" wird auf allen Plattformen verwendet, die nicht explizit aufgeführt sind. Wenn "default" nicht enthalten ist, hat der Befehl keinen Tastatur-Shortcut auf Plattformen, die nicht enthalten sind, es sei denn, ein Shortcut wird vom Benutzer oder durch die commands.update-API konfiguriert.

Zum Beispiel:

json
"commands": {
  "toggle-feature": {
    "suggested_key": {
      "default": "Alt+Shift+U",
      "linux": "Ctrl+Shift+U"
    },
    "description": "Send a 'toggle-feature' event to the extension"
  },
  "do-another-thing": {
    "suggested_key": {
      "default": "Ctrl+Shift+Y"
    }
  },
  "do-something-else": {
    "suggested_key": {
      "linux": "Ctrl+Shift+P"
    }
  },
  "do-nothing-yet": {}
}

Dieses JSON definiert diese Shortcuts:

  1. "toggle-feature", zugänglich mit Ctrl + Shift + U auf Linux und Alt + Shift + U auf allen anderen Plattformen.
  2. "do-another-thing", zugänglich mit Ctrl + Shift + Y auf allen Plattformen.
  3. "do-something-else", zugänglich mit Ctrl + Shift + P nur auf Linux, und kein Standard-Shortcut auf anderen Plattformen.
  4. "do-nothing-yet", setzt keinen Tastatur-Shortcut, ermöglicht aber einen Shortcut vom Benutzer oder mit der commands.update-API zu setzen.

Sie können für die Befehle mit Code wie diesem lauschen, in diesem Fall für den "toggle-feature"-Befehl:

js
browser.commands.onCommand.addListener((command) => {
  if (command === "toggle-feature") {
    console.log("Toggling the feature!");
  }
});

Spezielle Shortcuts

Es gibt 4 spezielle Shortcuts mit Standardaktionen, für die das Ereignis commands.onCommand nicht ausgelöst wird:

Die Verfügbarkeit dieser speziellen Shortcuts variiert zwischen Manifest-Versionen und Browsern, wie folgt:

Manifest V2 Manifest V3
_execute_browser_action Ja Nein
_execute_action Nein Ja
_execute_page_action Ja Nur Firefox
_execute_sidebar_action Nur Firefox Nur Firefox

Hinweis: Wenn der Benutzer den Shortcut des Befehls _execute_browser_action ändert, wird dieser automatisch auf den Befehl _execute_action übertragen, wenn die Erweiterung von Manifest V2 auf V3 migriert. Dies wurde in Chrome 111 und Firefox 127 implementiert.

Zum Beispiel definiert dieses JSON eine Tastenkombination, die die Browser-Aktion der Erweiterung klickt:

json
"commands": {
  "_execute_browser_action": {
    "suggested_key": {
      "default": "Ctrl+Shift+Y"
    }
  }
}

Shortcut-Werte

Es gibt zwei gültige Formate für Shortcut-Tasten: als Tastenkombination oder als Medientaste.

Tastenkombinationen

Hinweis: Auf Macs wird "Ctrl" als "Command" interpretiert, wenn Sie also tatsächlich "Ctrl" benötigen, geben Sie "MacCtrl" an.

Tastenkombinationen müssen aus 2 oder 3 Tasten bestehen:

  1. Modifier (obligatorisch, außer bei Funktionstasten). Dies kann einer der folgenden sein: "Ctrl", "Alt", "Command" oder "MacCtrl".

  2. Zweit-Modifier (optional). Wenn angegeben, muss dies entweder "Shift" oder (für Firefox ≥ 63) einer von "Ctrl", "Alt", "Command" oder "MacCtrl" sein. Darf nicht der bereits als Hauptmodifier verwendete Modifier sein.

  3. Taste (obligatorisch). Dies kann eine der folgenden sein:

    • die Buchstaben AZ
    • die Zahlen 09
    • die Funktionstasten F1F12

      Hinweis: Ab Firefox 135 können Benutzer die Tasten F13 bis F19 einer Erweiterung zuweisen, indem sie Erweiterungs-Shortcuts verwalten verwenden. Ihre Erweiterung kann diese Tasten nicht aus der Manifest-Datei zuweisen. Sie kann sie jedoch mit commands.update zuweisen.

    • Comma, Period, Home, End, PageUp, PageDown, Space, Insert, Delete, Up, Down, Left, Right

Die Taste wird dann als ein String angegeben, der die Menge der Tastenwerte in der oben aufgeführten Reihenfolge enthält, getrennt durch "+". Zum Beispiel, "Ctrl+Shift+Z".

Wenn eine Tastenkombination bereits vom Browser (wie "Ctrl+P") oder durch ein vorhandenes Add-on verwendet wird, können Sie diese nicht überschreiben. Sie können sie definieren, aber Ihr Ereignishandler wird nicht aufgerufen, wenn der Benutzer die Tastenkombination drückt.

Medientasten

Alternativ kann der Shortcut als eine dieser Medientasten angegeben werden:

  • "MediaNextTrack"
  • "MediaPlayPause"
  • "MediaPrevTrack"
  • "MediaStop"

Aktualisierung von Shortcuts

In Firefox kann Ihre Erweiterung die Einstellung der Shortcut-Tasten mithilfe von commands.update() aktualisieren. Benutzer können Shortcuts mit der Option Erweiterungs-Shortcuts verwalten unter about:addons aktualisieren, wie in diesem Video gezeigt. Ihre Erweiterung kann diese Option mit commands.openShortcutSettings() öffnen.

In Chrome können Erweiterungen Shortcut-Tasten nicht programmatisch aktualisieren. Benutzer können Shortcuts unter chrome://extensions/shortcuts ändern, das mit tabs.create() geöffnet werden kann.

Safari unterstützt keine programmatische oder benutzergesteuerte Änderung von Shortcuts für Erweiterungen.

Beispiel

Definieren Sie einen Tastatur-Shortcut, der nur die Standard-Tastenkombination verwendet:

json
"commands": {
  "toggle-feature": {
    "suggested_key": {
      "default": "Ctrl+Shift+Y"
    },
    "description": "Send a 'toggle-feature' event"
  }
}

Definieren Sie zwei Tastatur-Shortcuts, einen mit einer plattformenspezifischen Tastenkombination:

json
"commands": {
  "toggle-feature": {
    "suggested_key": {
      "default": "Alt+Shift+U",
      "linux": "Ctrl+Shift+U"
    },
    "description": "Send a 'toggle-feature' event"
  },
  "do-another-thing": {
    "suggested_key": {
      "default": "Ctrl+Shift+Y"
    }
  }
}

Browser-Kompatibilität

BCD tables only load in the browser