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; };