YouTube Better Keys

arrow keys controls even if player not selected + fine tune settings

// ==UserScript==
// @name        YouTube Better Keys
// @author      Dev Amr Hejazi
// @namespace   namespace_devamrhejazi
// @license     MIT
// @match       https://www.youtube.com/*
// @noframes
// @grant       none
// @version     2021.11.26
// @description arrow keys controls even if player not selected + fine tune settings
// ==/UserScript==

// tested in ViolentMonkey

(function() {
   "use strict";

   // ------- SETTINGS ---------
   const seekJump = 10; // in seconds
   const volStep = 10; // in %


   // ------- Main Code ---------
   function main() {
      let player = document.getElementById("movie_player") || document.getElementsByClassName("html5-video-player")[0];
      //console.log(Object.getOwnPropertyNames(player));
      window.onkeydown = function(e) { 
         if(e.keyCode == 38) { // Arrow key UP
            e.preventDefault();
            player.unMute();
            player.setVolume(player.getVolume() + volStep);
            
         }
         if(e.keyCode == 40) { // Arrow key Down
            e.preventDefault();
            player.setVolume(player.getVolume() - volStep);
         }
         
         // TODO: figure out how to disable yt 5 second seek when arrow keys are pressed
         
         if(e.keyCode == 37) { // Arrow key LEFT
            player.seekTo(player.getCurrentTime() - seekJump + 5);
         }
         if(e.keyCode == 39) { // Arrow key RIGHT
            player.seekTo(player.getCurrentTime() + seekJump - 5);
         }
         
      }
      window.removeEventListener("yt-navigate-finish", main, true);
   }

   main();
   window.addEventListener("yt-navigate-finish", main, true);

})();