tridactyl/src/keydown_content.ts
2017-10-06 03:30:51 +01:00

37 lines
1 KiB
TypeScript

/** Shim for the keyboard API because it won't hit in FF57. */
import * as msgsafe from './msgsafe'
function keyeventHandler(ke: KeyboardEvent) {
// Suppress events, if requested
if (preventDefault) {
ke.preventDefault()
}
if (stopPropagation) {
ke.stopPropagation()
}
browser.runtime.sendMessage({type: "keydown", event: msgsafe.KeyboardEvent(ke)})
}
// Listen for suppression messages from bg script.
function backgroundListener(message: Message) {
if (message.type === "keydown_suppress") {
if ('preventDefault' in message.data) {
preventDefault = message.data.preventDefault
}
if ('stopPropagation' in message.data) {
stopPropagation = message.data.stopPropagation
}
}
}
// State
let preventDefault = false
let stopPropagation = false
// Add listeners
window.addEventListener("keydown", keyeventHandler)
browser.runtime.onMessage.addListener(backgroundListener)
// Dummy export so that TS treats this as a module.
export {}