mirror of
https://gitlab.com/vyla-entertainment/TV.git
synced 2026-11-09 17:47:20 -05:00
112 lines
3.9 KiB
JavaScript
112 lines
3.9 KiB
JavaScript
if (window.tizen && window.tizen.tvinputdevice) {
|
|
try {
|
|
['MediaPlay', 'MediaPause', 'MediaPlayPause', 'MediaStop', 'MediaFastForward', 'MediaRewind', '10009']
|
|
.forEach(k => tizen.tvinputdevice.registerKey(k));
|
|
} catch (_) { }
|
|
}
|
|
|
|
const KM = {
|
|
37: 'l', 21: 'l',
|
|
38: 'u', 19: 'u',
|
|
39: 'r', 22: 'r',
|
|
40: 'd', 20: 'd',
|
|
13: 'e', 23: 'e', 66: 'e',
|
|
27: 'b', 8: 'b', 4: 'b', 10009: 'b', 461: 'b'
|
|
};
|
|
|
|
document.addEventListener('keydown', e => {
|
|
fast = e.repeat;
|
|
document.body.classList.add('kbm');
|
|
|
|
if (e.keyCode === 85 || e.keyCode === 179 || e.keyCode === 10252 || e.keyCode === 415) {
|
|
e.preventDefault();
|
|
tgl();
|
|
return;
|
|
}
|
|
if (e.keyCode === 126 || e.keyCode === 250) {
|
|
e.preventDefault();
|
|
vd.play();
|
|
return;
|
|
}
|
|
if (e.keyCode === 127 || e.keyCode === 413) {
|
|
e.preventDefault();
|
|
vd.pause();
|
|
return;
|
|
}
|
|
if (e.keyCode === 89 || e.keyCode === 227 || e.keyCode === 412) {
|
|
e.preventDefault();
|
|
vd.currentTime = Math.max(0, vd.currentTime - 10);
|
|
return;
|
|
}
|
|
if (e.keyCode === 90 || e.keyCode === 228 || e.keyCode === 417) {
|
|
e.preventDefault();
|
|
vd.currentTime = Math.min(vd.duration || Infinity, vd.currentTime + 10);
|
|
return;
|
|
}
|
|
|
|
if (pl.classList.contains('show')) {
|
|
showCtl();
|
|
if (e.key === ' ' || e.keyCode === 32) { e.preventDefault(); tgl(); return }
|
|
if (cur === $('#pseek') && (e.keyCode === 37 || e.keyCode === 39 || e.keyCode === 21 || e.keyCode === 22)) {
|
|
e.preventDefault();
|
|
vd.currentTime += (e.keyCode === 39 || e.keyCode === 22) ? 10 : -10;
|
|
return;
|
|
}
|
|
if (cur && cur.id === 'vsl' && (e.keyCode === 37 || e.keyCode === 39 || e.keyCode === 21 || e.keyCode === 22)) {
|
|
e.preventDefault();
|
|
vd.muted = false;
|
|
vd.volume = Math.min(1, Math.max(0, vd.volume + ((e.keyCode === 39 || e.keyCode === 22) ? .1 : -.1)));
|
|
cur._v();
|
|
return;
|
|
}
|
|
}
|
|
|
|
if (sr.classList.contains('show') && !ov.classList.contains('show') && !pl.classList.contains('show')) {
|
|
if (e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey) { e.preventDefault(); setQ(sqv + e.key); return }
|
|
if (e.keyCode === 8) { e.preventDefault(); setQ(sqv.slice(0, -1)); return }
|
|
}
|
|
|
|
const k = KM[e.keyCode];
|
|
if (!k) return;
|
|
e.preventDefault();
|
|
|
|
if (!cur) {
|
|
const fallback = document.querySelector('.f');
|
|
if (fallback) setFocus(fallback);
|
|
return;
|
|
}
|
|
|
|
if (k === 'e') act(cur);
|
|
else if (k === 'b') {
|
|
if (pl.classList.contains('show')) {
|
|
pmK ? closeMenu(1) : pl.classList.contains('eps') ? closeEps(1) : closePlayer();
|
|
} else if (ov.classList.contains('show')) {
|
|
closeDD() || closeDetail();
|
|
} else if (lib.classList.contains('show')) {
|
|
closeLib();
|
|
} else if (sr.classList.contains('show')) {
|
|
closeSearch();
|
|
}
|
|
} else {
|
|
nav(k);
|
|
}
|
|
});
|
|
|
|
let mx = -1, my = -1;
|
|
document.addEventListener('mousemove', e => {
|
|
if (Math.abs(e.clientX - mx) + Math.abs(e.clientY - my) < 4) return;
|
|
mx = e.clientX; my = e.clientY; document.body.classList.remove('kbm');
|
|
if (pl.classList.contains('show')) { showCtl(); const g = e.target.closest('.f'); if (g && g !== cur && pl.contains(g)) setFocus(g); return }
|
|
const f = e.target.closest('.f');
|
|
if (f && f !== cur && (!ov.classList.contains('show') || ov.contains(f))) setFocus(f)
|
|
});
|
|
document.addEventListener('click', e => {
|
|
const f = e.target.closest('.f'); if (f) act(f)
|
|
});
|
|
ov.addEventListener('wheel', () => { }, { passive: true });
|
|
|
|
window.vylaBack = () => {
|
|
const open = [pl, ov, lib, sr].some(e => e.classList.contains('show'));
|
|
if (open) document.dispatchEvent(new KeyboardEvent('keydown', { keyCode: 4, key: 'GoBack', bubbles: true, cancelable: true }));
|
|
return open;
|
|
}; |