From 94ece08a1e04d9ba1f62000b04c7b7ca707c6ab6 Mon Sep 17 00:00:00 2001
From: zrose584 <57181548+zrose584@users.noreply.github.com>
Date: Fri, 11 Sep 2020 21:21:56 +0200
Subject: hotkeys.js: add 'c' for transcript

---
 youtube/static/js/common.js  | 23 +++++++++++++++++++++++
 youtube/static/js/hotkeys.js | 16 +++++++++++++---
 2 files changed, 36 insertions(+), 3 deletions(-)
 create mode 100644 youtube/static/js/common.js

(limited to 'youtube/static/js')

diff --git a/youtube/static/js/common.js b/youtube/static/js/common.js
new file mode 100644
index 0000000..f2e62fe
--- /dev/null
+++ b/youtube/static/js/common.js
@@ -0,0 +1,23 @@
+Q = document.querySelector.bind(document);
+function text(msg) { return document.createTextNode(msg); }
+function clearNode(node) { while (node.firstChild) node.removeChild(node.firstChild); }
+function toMS(s) {
+  var s = Math.floor(s);
+  var m = Math.floor(s/60); var s = s % 60;
+  return `0${m}:`.slice(-3) + `0${s}`.slice(-2);
+}
+
+
+var cur_tt_idx = 0;
+function getActiveTranscriptTrackIdx() {
+    let tts = Q("video").textTracks;
+    if (!tts.length) return;
+    for (let i=0; i < tts.length; i++) {
+        if (tts[i].mode == "showing") {
+            cur_tt_idx = i;
+            return cur_tt_idx;
+        }
+    }
+    return cur_tt_idx;
+}
+function getActiveTranscriptTrack() { return Q("video").textTracks[getActiveTranscriptTrackIdx()]; }
\ No newline at end of file
diff --git a/youtube/static/js/hotkeys.js b/youtube/static/js/hotkeys.js
index c696ac0..8b28f28 100644
--- a/youtube/static/js/hotkeys.js
+++ b/youtube/static/js/hotkeys.js
@@ -1,9 +1,7 @@
-Q = document.querySelector.bind(document);
-
 function onKeyDown(e) {
     if (['INPUT', 'TEXTAREA'].includes(document.activeElement.tagName)) return false;
 
-    console.log(e);
+    // console.log(e);
     let v = Q("video");
     let c = e.key.toLowerCase();
     if (c == "k") {
@@ -25,6 +23,18 @@ function onKeyDown(e) {
         e.preventDefault();
         v.currentTime = v.currentTime + 10;
     }
+    else if (c == "f") {
+        e.preventDefault();
+        if (document.fullscreen) document.exitFullscreen();
+        else v.requestFullscreen();
+    }
+    else if (c == "c") {
+        e.preventDefault();
+        let tt = getActiveTranscriptTrack();
+        if (tt == null) return;
+        if (tt.mode == "showing") tt.mode = "disabled";
+        else tt.mode = "showing";
+    }
 }
 
 window.addEventListener('DOMContentLoaded', function() {
-- 
cgit v1.2.3