UNPKG

db-lgtv-focus-engine

Version:

the Best TV focus engine

43 lines (42 loc) 1.41 kB
export function bindKeyupListener(focus_engine) { document.onkeyup = (e) => { focus_engine.last_key_up = e if (window['焦点框架-loading-加载中']) return let focused_leaf = focus_engine.findFocusedLeaf() if (!focused_leaf) return let code_enum = {} for(let key in focus_engine.options.KEYS){ for (let code of focus_engine.options.KEYS[key]) { code_enum[code] = key } } let _e = new Event("keyup") let _default = true _e.code = e.which _e.preventDefault = () => { _default = false } focused_leaf.el.dispatchEvent(_e) if (!_default) return if (!code_enum[e.which]) return e.preventDefault() switch(code_enum[e.which]) { case 'ok': { setTimeout(() => { if (focus_engine.options.KEY_TYPE !== 'up') return focused_leaf.el.dispatchEvent(new Event("ok")) if (focused_leaf.parent) { let _e = new Event("ok") _e.leaf = focused_leaf focused_leaf.parent.el.dispatchEvent(_e) } }) break } } } } export function unbindKeyupListener(focus_engine) { document.onkeyup = (e) => { } }