1

I love using the Picture in Picture feature for use cases like :

  • Learning some stuffs, while doing the thing. Not switching windows/apps anymore.
  • Binging some shows, movies, while working.

But the thing is, once you missed a thing, you either :

  • Close the 􀑧 Picture-in-Picture mode, go back to that app again, and rewind it back (Mac's 􀊉 Rewind and 􀊋 Fast Forward kb shortcuts don't work) (if you happen to not know macOS have a Media Menu bar icon)
  • Or click the 􀊕 Media Menu bar icon, and click 􀅉 Rewind Back or 􀅈 Rewind icons.

Check the screen capture here for the demo : https://cln.sh/MDzsof

So is there anyway to control the PiP states/media controls with just keyboard shortcuts :

  • Play/Pause
  • Toggle PiP on/off
  • Hide PiP to the side
  • Rewind/Rewind Back
  • PiP window placement
  • Close the PiP

Do we have any official Apple documentation regarding kb shortcuts about this?

If not, any Siri Shortcuts, Apple Scripts, Applets or app tweaks that can help me with this?

PS : to any devs reading, if this solution don't exist yet. This will be a great feature idea for you to solve on your next Mac app.

1
  • 2
    I can't see those icons on either Big Sur or iOS 15
    – Tetsujin
    Mar 17, 2022 at 11:27

2 Answers 2

3

I have created the following Shortcuts that can be activated with F9 and F7 (Tested in macOS Ventura 13):

Just double check that "Pin in Menu Bar" is checked and "Run with" have the desired keyboard shortcut. This way they will work even if the Shortcuts app is not active:

Screenshot of the settings to double check

I just noticed some apps already have F7 and F9 shortcuts that will override the action for these shortcuts. So you probably can change them to +F7 and +F9 or whatever shortcut that doesn't conflict with the active app you use regularly with picture-in-picture.

0
2

Here's a piece of JavaScript to put a video from the current Safari tab into a Picture-in-Picture window. You need a way to activate it. Personally I'm using a Keyboard Maestro macro to do it.

(function() {var video; document.querySelectorAll('video').forEach(function(vid) { if (!vid.paused) video = vid; }); if (video) { video.webkitSetPresentationMode('picture-in-picture') } })()

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .