db-lgtv-focus-engine
Version:
the Best TV focus engine
43 lines (42 loc) • 1.41 kB
JavaScript
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) => {
}
}