Git Product home page Git Product logo

browser-media-keys's People

Contributors

carlin-q-scott avatar cennoxx avatar davidjb avatar gmelikov avatar jakusotsu avatar joshdreagan avatar koenkk avatar kosmodrey avatar mecury421 avatar mfoxru avatar miicha avatar noitidart avatar regs01 avatar sleepypikachu avatar urbancmc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

browser-media-keys's Issues

Add support for Pluralsight

The website actually has hotkeys but they aren't the media keys.

HTML

<button tabindex="100" id="previous-control" class="icon-previous control-button" title="Previous (<)" data-reactid="26"></button>
<button tabindex="100" id="play-control" class="control-button icon-pause" title="Pause (Spacebar)" data-reactid="27"></button>
<button tabindex="100" id="play-control" class="control-button icon-play" title="Play (Spacebar)" data-reactid="27"></button>
<button tabindex="100" id="next-control" class="icon-next control-button" title="Next (>)" data-reactid="28"></button>

Listening for global audio key events (XF86Audio) on Linux

I'm interested to see whether it's possible to make Firefox act like other applications on Linux that respond to global multimedia key presses. Before I start getting into this, have you looked into this at all? It'd be helpful to know straight up if the answer is that it's impossible.

Essentially, Linux applications respond to global key presses by, at least in GNOME-based environments, listening to specific DBus signals. There's a Python-based example at https://gist.github.com/davidjb/e6cee3a040b1532e728d (from https://stackoverflow.com/questions/5744041/cant-get-dbus-signal-listener-to-work-in-c-with-gnome-multimedia-keys) that works, but obviously this would need to be made compatible with Firefox in JavaScript (if accessing dbus is possible). C examples exist also, but I don't know how feasible this would be in an add-on. I see that accessing the win32api was possible via ctypes for Windows, so presumably it's possible.

I'm interested in making this happen but wanted to see if you had any input first.

Add support for Spotify

play.spotify.com

I'm not sure how useful this one is because they have a pretty good desktop client.

Play/Pause not working in windows 7 Enterprise

I'm trying to use the extension on Windows 7 Enterprise, on a Thinkpad with external Microsoft comfort curve keyboard v1.0 and I cannot get youtube to pause when hitting Play / pause. I tried the key with widows media player to confirm the key is working and... it is working.
I restarted firefox, reloaded youtube, focused on the page, focused on different tabs, on different applications but nothing at all.
Any information I can provide you with just let me know.

Add support for coursera

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/30086800-add-support-for-coursera?utm_campaign=plugin&utm_content=tracker%2F7600490&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7600490&utm_medium=issues&utm_source=github).

New VK design

Update for a new VK design please. Doesn't work with it.

Restarting listening for Linux DBus signals on Firefox regaining focus

As mentioned in #7, there's a caveat for Linux DBus support that another DBus application (eg Rhythmbox) opens after Media Keys starts listening to DBus, that application takes over listening and Media Keys won't get any signals until that application exits.

Normally, other DBus applications (the ones I've seen, like Rhythmbox) take DBus precedence back (eg they restart listening) if/when they re-gain focus. So, what Media Keys should do is restart listening (eg DetachEventListeners and AttachEventListeners in the DBus module) upon Firefox regaining focus to one of its windows.

This isn't a huge issue for me as quitting the other application is just as easy to do (or disable/re-enable Media Keys), but it's worth mentioning in case a fix is simple. It might be too much overhead to worry about.

stop using unsafeWindow for accessing Youtube API

AMO reviewer made this suggestion:

The idea was to only send an event from the content script to execute the function directly in the page script, instead of accessing potentially unsafe page content from the content script of your add-on. See also https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Accessing_the_DOM?redirect=no#Adding_Event_Listeners and https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts/Interacting_with_page_scripts

So the idea is to inject the orchestrator functions into the page and then relay the media key events to them through the content script.

Can't get it to work and add supoort for Napster

I'm using Windows 10 and a Microsoft SideWinder X4 keyboard, but the add-on seems to do nothing.
Firefox is up to date.

Also support for Napster would be great.

Would be great to be able to use those media keys in Firefox.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/32177089-can-t-get-it-to-work-and-add-supoort-for-napster?utm_campaign=plugin&utm_content=tracker%2F7600490&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7600490&utm_medium=issues&utm_source=github).

linuxDBusHotkeys work for PrtScn button?

Hey there man!
I was trying to hook up one of my addons with a global hotkey for the Print Screen button. Does your dbus method work for that key? Or was it just media keys?

Edit:
Im pretty sure its media keys only after further thought.

So I am going different ways but if you could help that would be awesome:

I tried gdk_add_window_filter but it only detects the button from within firefox:

(in comments below I am going with xcb method - i like that method because we can run from chromeworker if we can just get it to work)

Cu.import('resource://gre/modules/ctypes.jsm');

var GdkXEvent = ctypes.StructType('XKeyEvent', [ // https://tronche.com/gui/x/xlib/events/keyboard-pointer/keyboard-pointer.html#XKeyEvent
    { type: ctypes.int },
    { serial: ctypes.unsigned_long },
    { send_event: ctypes.bool },
    { display: ctypes.voidptr_t },
    { window: ctypes.unsigned_long },
    { root: ctypes.unsigned_long },
    { subwindow: ctypes.unsigned_long },
    { time: ctypes.unsigned_long },
    { x: ctypes.int },
    { y: ctypes.int },
    { x_root: ctypes.int },
    { y_root: ctypes.int },
    { state: ctypes.unsigned_int },
    { keycode: ctypes.unsigned_int },
    { same_screen: ctypes.bool }
]);

var GdkFilterFunc = ctypes.FunctionType(ctypes.default_abi, ctypes.int, [GdkXEvent.ptr, ctypes.voidptr_t, ctypes.voidptr_t]).ptr;

var lib = ctypes.open(parseInt(Services.appinfo.version) <= 45 ? 'libgdk-x11-2.0.so.0' : 'libgdk-3.so.0');
var gdk_window_remove_filter = lib.declare('gdk_window_remove_filter', ctypes.default_abi, ctypes.void_t, ctypes.voidptr_t, GdkFilterFunc, ctypes.voidptr_t);
var gdk_window_add_filter = lib.declare('gdk_window_add_filter', ctypes.default_abi, ctypes.void_t, ctypes.voidptr_t, GdkFilterFunc, ctypes.voidptr_t);

var OSStuff = {};
OSStuff.hotkeyCallback = GdkFilterFunc(function(xeventPtr, eventPtr, data) {
    // console.error('type:', xeventPtr.contents.type);

    if (xeventPtr.contents.type == 2) { // KeyPress
        console.error('keycode:', xeventPtr.contents.keycode);
    }

    // return 2; // block it
    return 0; // dont block
});

gdk_window_add_filter(null, OSStuff.hotkeyCallback, null);

Handle Pandora "Reload" dialog after play event

When Pandora is open for a long time it sometimes experiences an error or update which blocks the player from playing music. This plugin should automatically click the reload button in order to complete the play operation.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/7935161-handle-pandora-reload-dialog-after-play-event?utm_campaign=plugin&utm_content=tracker%2F7600490&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7600490&utm_medium=issues&utm_source=github).

Add support for Plex

Would be nice to add Plex support. Trick is that you can view your Plex library from "plex.tv" domain, or from localhost.

Pandora Site Update Causing Issues

Pandora have updated their site a few days ago.

If pandora is playing in another tab and I hit pause on my keyboard, the song very slowly lowers its volume until it stops after about 10 seconds.

If during this "slow pause" process I switch to the tab, then it pauses instantly.

Trying to start audio is a bit hit and miss, sometimes it starts, sometimes it doesn't.

Possible drop in? For other addons?

I wanted to create a hotkey global hotkey for my addon. Would it be easy for you to make a distributable of the workers so other addon devs could easily setup global hotkeys in their addons? :)

This would be a huge one up on firefox addons versus chrome addons, as google chrome addons can only do numpad for global hotkeys. :d

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/28242774-possible-drop-in-for-other-addons?utm_campaign=plugin&utm_content=tracker%2F7600490&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7600490&utm_medium=issues&utm_source=github).

Add support for Fedora 22

One of our users has reported that the add-on doesn't work on Fedora 22. Can someone confirm this issue?

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/28972105-add-support-for-fedora-22?utm_campaign=plugin&utm_content=tracker%2F7600490&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7600490&utm_medium=issues&utm_source=github).

Lock media control to manually selected tab

Would be a nice feature. Dunno if and how this could be made though.

Use case: Ability to have a separate tab with music which could be controlled independently of other undesirable tabs that may also have media sources.

Only resume automatically paused media

We don't want media that we manually paused or never even started playing to start automatically after playback finishes for some other media.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/33890134-only-resume-automatically-paused-media?utm_campaign=plugin&utm_content=tracker%2F7600490&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7600490&utm_medium=issues&utm_source=github).

Stopped working (Sort of)

Everytime I launch Firefox this addon does not work and I have to disable it and reenable it again for it to work but if I close Firefox anc load it up the media keys won't work again.

Detect apps that interfere with native hotkeys in Windows

People using Microsoft's Sidewinder keyboard application or Logitech's SetPoint application are unable to use this add-on because these applications assume control of the media keys from Windows. We should detect if one of these apps are running and fall back to Firefox hotkeys if one is. Optimally we should alert the user as to why this has happened.

Notification of new track for Pandora

It would be cool if I was notified about the currently playing track when it starts playing. It would be even better if I was also notified at the end of the track as well.

No link to github

Hi there,
There is no link to the github repository (and/or issues page) from the AMO listing. This may not be an issue, but i just spent a while digging on github to find this repo :P

Fails when localhost is open in other tab

This is an excellent addon. It works perfectly for me, except in the following scenario:

  1. Play youtube/spotify/other with any number of other "normal" tabs open => works perfectly
  2. Open new tab with a page/app served from localhost (e.g. http://localhost:8080) => stops working
  3. Navigate to any other tab without closing the localhost tab => still broken
  4. Close the localhost tab => still broken
  5. Activate spotify/youtube/other tab => works perfectly again
  6. Navigate to any other "normal" tab => still works
  7. Open the same locally served page/app, but now from 127.0.0.1 (e.g. http://127.0.0.1:8080) => still works

So their seems to be a bug that breaks things specifically with localhost tabs, but not on 127.0.0.1 tabs. I had a quick look at the code, but couldn't find any obvious causes.

I'm running the addon in Firefox 44.0.2 on Ubuntu 15.10

Add support for HTML5 built-in player

On Linux and Firefox 43.0.1 with the version 0.6.5 of this plugin there seems to be no support for the built-in HTML5 media player.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/29678922-add-support-for-html5-built-in-player?utm_campaign=plugin&utm_content=tracker%2F7600490&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7600490&utm_medium=issues&utm_source=github).

Add support for Amazon Music

This might be more challenging than is worthwhile because they don't use a subdomain for their player and people will obviously be doing other things on Amazon.com than listening to music.

Fix support for Windows 10

A user reported problems with the latest Firefox update (v39) on Windows 10. They said an older version worked fine.

Add support for Mac OS X

From what I can tell, the add-on currently doesn't support media keys within Mac OS X (I tested it with Youtube on Firefox 39.0, running OS X 10.8.5).

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/25342256-add-support-for-mac-os-x?utm_campaign=plugin&utm_content=tracker%2F7600490&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7600490&utm_medium=issues&utm_source=github).

As a user, I want to be able to control non-full-screen youtube videos

This is really easy except for dealing with player overlap, such as having both Pandora.com and YouTube.com open at the same time. I think the last active media tab should be controlled except if another tab is currently playing something and play/pause is pressed; in this situation, the other player should be paused and the current player should play if it isn't already.

Media Keys Stop Responding after extended use

After using this addon for an extended period of time, my media keys stop working. Reloading the page does not resolve the issue and I am forced to restart Firefox to continue using my media keys.

Tests fail

On Windows 7
With JPM of version 1.0.4

When jpm test is invoked, following output is produced and process does not terminate (in minutes).

JPM [info] Starting jpm test on Media Keys
Creating XPI
JPM [info] XPI created at C:\Users\basil\AppData\Local\Temp\[email protected] (159ms)
Created XPI at C:\Users\basil\AppData\Local\Temp\[email protected]
JPM [info] Creating a new profile
Running tests on Firefox 45.0a2/Gecko 45.0a2 (Build 20151221004011) ({ec8030f7-c20a-464f-9b0e-13a3a9e97384}) under winnt/x86.
...JPM [error] *************************

A coding exception was thrown in a Promise resolution callback.
See https://developer.mozilla.org/Mozilla/JavaScript_code_modules/Promise.jsm/Promise

Full message: TypeError: tab is null
Full stack: getTabId@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/tabs/utils.js:206:1
done/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/deprecated/unit-test.js:335:22
Handler.prototype.process@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:933:23
this.PromiseWalker.walkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:812:7
Promise*this.PromiseWalker.scheduleWalkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:743:11
this.PromiseWalker.schedulePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:775:7
this.PromiseWalker.completePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:710:7
checkForCompletion@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:567:9
Promise.all/</resolver@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:574:29
promise callback*Promise.all/<@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:577:9
Promise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:384:5
Promise.all@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:554:1
done@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/deprecated/unit-test.js:332:12
@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/test.js:68:15
TestMediaEvent/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://jid1-4gp7z3tkud3tzg-at-jetpack/tests/test-firefoxHotkeys.js:50:9
KeyEventHandler@resource://gre/modules/commonjs/toolkit/loader.js -> resource://jid1-4gp7z3tkud3tzg-at-jetpack/lib/firefoxHotkeys.js:66:1
TestMediaEvent@resource://gre/modules/commonjs/toolkit/loader.js -> resource://jid1-4gp7z3tkud3tzg-at-jetpack/tests/test-firefoxHotkeys.js:52:5
exports["test media next track"]/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://jid1-4gp7z3tkud3tzg-at-jetpack/tests/test-firefoxHotkeys.js:20:9
TestMediaEvent/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://jid1-4gp7z3tkud3tzg-at-jetpack/tests/test-firefoxHotkeys.js:50:9
KeyEventHandler@resource://gre/modules/commonjs/toolkit/loader.js -> resource://jid1-4gp7z3tkud3tzg-at-jetpack/lib/firefoxHotkeys.js:66:1
TestMediaEvent@resource://gre/modules/commonjs/toolkit/loader.js -> resource://jid1-4gp7z3tkud3tzg-at-jetpack/tests/test-firefoxHotkeys.js:52:5
exports["test media next track"]@resource://gre/modules/commonjs/toolkit/loader.js -> resource://jid1-4gp7z3tkud3tzg-at-jetpack/tests/test-firefoxHotkeys.js:19:5
@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/test.js:67:13
start@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/deprecated/unit-test.js:576:7
startMany/runNextTest/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/deprecated/unit-test.js:538:11
Handler.prototype.process@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:933:23
this.PromiseWalker.walkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:812:7
Promise*this.PromiseWalker.scheduleWalkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:743:11
this.PromiseWalker.schedulePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:775:7
this.PromiseWalker.completePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:710:7
promise callback*this.PromiseWalker.completePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:701:1
Handler.prototype.process@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:969:5
Promise*this.PromiseWalker.scheduleWalkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:743:11
this.PromiseWalker.schedulePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:775:7
Promise.prototype.then@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:450:5
this.XPIDatabase.getAddon@resource://gre/modules/addons/XPIProvider.jsm -> resource://gre/modules/addons/XPIProviderUtils.js:1101:12
this.XPIDatabase.getVisibleAddonForID@resource://gre/modules/addons/XPIProvider.jsm -> resource://gre/modules/addons/XPIProviderUtils.js:1150:1
this.XPIProvider.getAddonByID@resource://gre/modules/addons/XPIProvider.jsm:3936:5
callProviderAsync@resource://gre/modules/AddonManager.jsm:254:12
promiseCallProvider/<@resource://gre/modules/AddonManager.jsm:279:53
Promise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:384:5
promiseCallProvider@resource://gre/modules/AddonManager.jsm:278:1
AddonManagerInternal.getAddonByID/promises<@resource://gre/modules/AddonManager.jsm:2421:12
AddonManagerInternal.getAddonByID@resource://gre/modules/AddonManager.jsm:2420:20
this.AddonManager.getAddonByID@resource://gre/modules/AddonManager.jsm:3162:5
getAddon@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/addon/installer.js:118:3
getSuites@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/deprecated/unit-test-finder.js:56:10
findTests@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/deprecated/unit-test-finder.js:143:12
findAndRunTests@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/deprecated/unit-test.js:26:3
findAndRunTests@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/test/runner.js:83:1
checkForEnd@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/test/harness.js:406:5
nextIteration@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/test/harness.js:397:5
runTests@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/test/harness.js:618:5
runTests/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/test/runner.js:42:1
notify@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/timers.js:40:9

JPM [error] *************************

console.error: browsermediakeys: 
JPM [error]   Message: TypeError: tab is null
  Stack:
    getTabId@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/tabs/utils.js:206:1
done/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/deprecated/unit-test.js:335:22
Handler.prototype.process@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:933:23
this.PromiseWalker.walkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:812:7
Promise*this.PromiseWalker.scheduleWalkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:743:11
this.PromiseWalker.schedulePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:775:7
this.PromiseWalker.completePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:710:7
checkForCompletion@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:567:9
Promise.all/</resolver@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:574:29
promise callback*Promise.all/<@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:577:9
Promise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:384:5
Promise.all@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:554:1
done@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/deprecated/unit-test.js:332:12
@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/test.js:68:15
TestMediaEvent/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://jid1-4gp7z3tkud3tzg-at-jetpack/tests/test-firefoxHotkeys.js:50:9
KeyEventHandler@resource://gre/modules/commonjs/toolkit/loader.js -> resource://jid1-4gp7z3tkud3tzg-at-jetpack/lib/firefoxHotkeys.js:66:1
TestMediaEvent@resource://gre/modules/commonjs/toolkit/loader.js -> resource://jid1-4gp7z3tkud3tzg-at-jetpack/tests/test-firefoxHotkeys.js:52:5
exports["test media next track"]/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://jid1-4gp7z3tkud3tzg-at-jetpack/tests/test-firefoxHotkeys.js:20:9
TestMediaEvent/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://jid1-4gp7z3tkud3tzg-at-jetpack/tests/test-firefoxHotkeys.js:50:9
KeyEventHandler@resource://gre/modules/commonjs/toolkit/loader.js -> resource://jid1-4gp7z3tkud3tzg-at-jetpack/lib/firefoxHotkeys.js:66:1
TestMediaEvent@resource://gre/modules/commonjs/toolkit/loader.js -> resource://jid1-4gp7z3tkud3tzg-at-jetpack/tests/test-firefoxHotkeys.js:52:5
exports["test media next track"]@resource://gre/modules/commonjs/toolkit/loader.js -> resource://jid1-4gp7z3tkud3tzg-at-jetpack/tests/test-firefoxHotkeys.js:19:5
@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/test.js:67:13
start@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/deprecated/unit-test.js:576:7
startMany/runNextTest/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/deprecated/unit-test.js:538:11
Handler.prototype.process@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:933:23
this.PromiseWalker.walkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:812:7
Promise*this.PromiseWalker.scheduleWalkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:743:11
this.PromiseWalker.schedulePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:775:7
this.PromiseWalker.completePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:710:7
promise callback*this.PromiseWalker.completePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:701:1
Handler.prototype.process@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:969:5
Promise*this.PromiseWalker.scheduleWalkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:743:11
this.PromiseWalker.schedulePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:775:7
Promise.prototype.then@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:450:5
this.XPIDatabase.getAddon@resource://gre/modules/addons/XPIProvider.jsm -> resource://gre/modules/addons/XPIProviderUtils.js:1101:12
this.XPIDatabase.getVisibleAddonForID@resource://gre/modules/addons/XPIProvider.jsm -> resource://gre/modules/addons/XPIProviderUtils.js:1150:1
this.XPIProvider.getAddonByID@resource://gre/modules/addons/XPIProvider.jsm:3936:5
callProviderAsync@resource://gre/modules/AddonManager.jsm:254:12
promiseCallProvider/<@resource://gre/modules/AddonManager.jsm:279:53
Promise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:384:5
promiseCallProvider@resource://gre/modules/AddonManager.jsm:278:1

AddonManagerInternal.getAddonByID/promises<@resource://gre/modules/AddonManager.jsm:2421:12
AddonManagerInternal.getAddonByID@resource://gre/modules/AddonManager.jsm:2420:20
this.AddonManager.getAddonByID@resource://gre/modules/AddonManager.jsm:3162:5
getAddon@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/addon/installer.js:118:3
getSuites@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/deprecated/unit-test-finder.js:56:10
findTests@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/deprecated/unit-test-finder.js:143:12
findAndRunTests@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/deprecated/unit-test.js:26:3
findAndRunTests@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/test/runner.js:83:1
checkForEnd@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/test/harness.js:406:5
nextIteration@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/test/harness.js:397:5
runTests@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/test/harness.js:618:5
runTests/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/test/runner.js:42:1
notify@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/timers.js:40:9

console.log: browsermediakeys: [JavaScript Warning: "TypeError: useless expression" {file: "resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/util/sequence.js" line: 333}]

Feature Request: Bandcamp Support

Please add support to control the Bandcamp media player. I'd also request YouTube, but I've noticed it is already in your plans. Thanks for your work!

Can't seem to get this to work in Linux

Running Debian testing, Iceweasel 44.0.2. Pretty minimal install, startx with no display manager running awesomewm.

I've installed the latest version from the Firefox addon site and tried using both my keyboard and bluetooth headset next/previous buttons on youtube and jamstash. No combinations seem to do anything.

xev shows events for XF86Audio{Prev,Next,Play,Pause}.

I don't believe there are any other applications grabbing media keys (I had awesomewm binds, but I've removed them).

Any way I can debug this further?

Dependency on GnomeSettingsDaemon, MPRIS support?

The README states that this addon requires DBUS/glib, but neglects to mention that it is using this to interact with the GnomeSettingsDaemon, which is usually only available when using Gnome.

I was at first really excited when I found this addon, then kind of disappointed when I couldn't make it work in my KDE desktop, then I got excited again when I realized that it was using DBUS.

Is there any chance I could convince you to switch from using GSD to instead exposing an MPRIS service?

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/26935823-dependency-on-gnomesettingsdaemon-mpris-support?utm_campaign=plugin&utm_content=tracker%2F7600490&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7600490&utm_medium=issues&utm_source=github).

Youtube plays audio twice

When the plugin attaches to the youtube player a second audio track for the video begins playing and it's slightly offset from the visible video. It can be worked around by reloading the page and doesn't happen every time. It even applies to the ad.

options for previous and next actions

I think it would be nice to have the option to switch previous and next to act like pressing left or right arrow keys. I have a headset with customizable media keys I like to use to control youtube but the profile system can only detect programs, not webpages, so whenever I have firefox in focus I can't use them to control media players.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/27598110-options-for-previous-and-next-actions?utm_campaign=plugin&utm_content=tracker%2F7600490&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7600490&utm_medium=issues&utm_source=github).

Logitech Setpoint issue

Hi,

I using Logitech MK520 with SetPoint application on windows 7. I quit the SetPoint, "Media Keys" is working good. What can I do ,work with the SetPoint.

I did changes in "players.ini" file for AIMP to work with Setpoint. Like this: http://blog.nickdamoulakis.com/2013/03/make-logitech-keyboard-media-keys-work.html

For "Media Keys" is such a thing possible?

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/32082924-logitech-setpoint-issue?utm_campaign=plugin&utm_content=tracker%2F7600490&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7600490&utm_medium=issues&utm_source=github).

Linux: Doesn't work with playerctl for media control

OS: Ubuntu 15.04 Desktop
Desktop Environment: i3 (gaps fork), 4.11
Firefox: 43.0, 64-bit

I use playerctl to control my music on my computer. After downloading and installing this extension, it doesn't appear to work at all. I restarted Firefox, and even if the window is focused, it doesn't work.

Sites tested: Youtube, Google Play Music, Spotify.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/29384979-linux-doesn-t-work-with-playerctl-for-media-control?utm_campaign=plugin&utm_content=tracker%2F7600490&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F7600490&utm_medium=issues&utm_source=github).

Add configurable preference for Plex domains

As per #40:

Plex can be hosted on any arbitrary domain (eg self-hosted or using a different port). As such, a "Plex domains" preference (like Jamstash) would avoid the restriction on the host needing to be plex.tv or localhost. In addition, this would make page loads more efficient as the current PR applies pagemod scripts to all of localhost.

As Plex defaults to being run on port :32400, a "Plex domains" preference for this addon could default to :32400 plex.tv (which gets split on whitespace, if following Jamstash's existing example). A quick search looks to indicate that Plex is the only known app for :32400. For others using different ports or domains, the preference is easily adjustable.

This may require extra changes to the preference system (as per @carlin-q-scott's comments), but just noting this as an issue so it's on the radar.

Send media key events to first media tab on launch

When a browser session is restored, there could be a tab with a supported music site loaded. This will cause everything to run that needs to except that the tab isn't made active in the add-on which is required to route the media events to it.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.