NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Twitch Hotkeys // @author Flipperbw // @license MIT // @version 1.3 // @include /^https?://(www\.|beta\.)?twitch\.tv/ // @require http://code.jquery.com/jquery-latest.min.js // ==/UserScript== // /^https?://(www|beta)\.twitch\.tv\/[a-zA-Z0-9]\w{3,24}\/[a-z]/\d+/ // Does not work for fullscreen due to browsers sucking var offset = 5; var ks = { "106": "j", "107": "k", "108": "l" }; var current_secs = 0; var new_secs = 0; var player; var player_status; $(document).on("keypress", function (e) { var trgt = e.target; if (trgt && trgt.className && trgt.className.indexOf('chat_input') == -1 && trgt.getAttribute('data-a-target') != 'chat-input') { var k = ks[e.keyCode]; if ((k == "j") || (k == "l") || (k == "k")) { player = $('#player object')[0]; if (player) { if (k == "j") { current_secs = player.getVideoTime(); new_secs = Math.max(current_secs - offset, 0.1); player.videoSeek(new_secs); } else if (k == "l") { current_secs = player.getVideoTime(); new_secs = current_secs + offset; player.videoSeek(new_secs); } else if (k == "k") { player_status = player.isPaused(); if (!player_status) { player.playVideo(); } else { player.pauseVideo(); } } } else { player = $('.player-video video')[0]; if (player) { if (k == "j") { current_secs = player.currentTime; new_secs = Math.max(current_secs - offset, 0.1); player.currentTime = new_secs; } else if (k == "l") { current_secs = player.currentTime; new_secs = current_secs + offset; player.currentTime = new_secs; } else if (k == "k") { player_status = player.paused; if (player_status) { player.play(); } else { player.pause(); } } } } } } });