/NetflixController

Control Netflix from your couch with a gamepad/controller using this Chrome extension.

Primary LanguageJavaScript

Netflix Controller Chrome Extension

Control Netflix in your browser with a gamepad or controller using this Chrome extension.

Netflix Controller

Getting Started

Add Netflix Controller to your browser here, then open Netflix and press a button on your controller to load the plugin.

Features

  • Navigate Netflix using a controller
  • Control the video player
  • Search for media using virtual keyboard
  • See current actions in the hints bar at the bottom of the viewport
  • Choose options when watching interactive media like Black Mirror Bandersnatch
  • Choose your button icons (Xbox 360 / Xbox One / PS3 / PS4)
  • Test your gamepad mapping in the browser icon popup
  • Customize your experience in the extension options

Video Player Controls

Action Xbox Playstation Switch
Play / Pause A Cross B
Mute X Square Y
Fullscreen Y Triangle X
Go Back B Square A
Volume Up Dpad Up Dpad Up Dpad Up
Volume Down Dpad Down Dpad Down Dpad Down
Jump 10s Dpad Right Dpad Right Dpad Right
Jump Back 10s Dpad Left Dpad Left Dpad Left
Skip Intro Start Start Start

| Next Episode | RB | R1 |R |

Screenshots

Navigate the homepage Control the video player Search for content Explore specific titles Watch interactive media

TODO

  • Firefox/Edge support (convert manifests, fullscreen action)
  • Continue mapping navigation controls to additional page elements (such as other jawbone options)
  • Support non-standard gamepad mappings / offer way to configure mappings
  • Configure right joystick to control a virtual mouse
  • Dual action hints for action pairs like volume up/down
  • CSS classes for content outlines
  • Fix visual bug that occurs on some billboard MyList buttons
  • Scale bottom bar elements according to page size
  • Hide jump 10s actions when unavailable, such as in Bandersnatch (player class preplay?)
  • Identify interactive videos and only apply related settings/observers if needed
  • Fix bug where search page handler does not finish loading until keyboard is closed when only one character has been entered into the search bar
  • Organize page handler logic such that navigatables have clean access to the enclosing page handler
  • Add additional styling to jawbone buttons to better indicate the selected option
  • Use mutation observers or parse CSS transitions instead of using static timing in slider timeouts
  • Fix bug where jawbone changes due to removing from my list the title with an open jawbone
  • Show video controls when in fullscreen mode
  • Add remaining jawbone pane types
  • Auto skip intro

Libraries and Materials Used

  • pseudo:styler - A module that allows for forcing an element to be styled with a pseudo-class.
  • Gamepads.js - A module for tracking Gamepads and events pertaining to their usage.
  • Chrome Live Storage - A module that provides chrome.storage data as native JavaScript objects that automatically synchronize between all extension views (background, content scripts, popups, options, etc.).
  • Xbox controller image courtesy of http://gamepadviewer.com/
  • Project icons courtesy of https://material.io/icons/ and https://iconfu.com.
  • Many thanks to Tyler Sedlar for creating pseudo:styler and for letting me bounce ideas off of him throughout development of this project.

Changelog

Version Date Changes
1.0.5 October 25, 2020 Updated the fullscreen action in the video player to remove the debugger popup message.
1.0.4 July 25, 2020 Fixed the title panel handler.
1.0.3 June 3, 2020 Fixed the billboard handler and added support for the latest page.
1.0.2 March 21, 2020 Fixed crashing at the end of episodes in a playlist and added support for the top 10 slider.
1.0.1 January 27, 2020 Updated gamepads.js to fix Chrome support.
1.0.0 June 28, 2019 Initial release.