2017-10-02 00:59:51 +01:00
|
|
|
/** Shim for the keyboard API because it won't hit in FF57. */
|
2017-09-25 04:44:56 +01:00
|
|
|
|
2017-10-06 03:28:14 +01:00
|
|
|
import * as msgsafe from './msgsafe'
|
2017-10-02 00:59:51 +01:00
|
|
|
|
|
|
|
function keyeventHandler(ke: KeyboardEvent) {
|
|
|
|
// Suppress events, if requested
|
|
|
|
if (preventDefault) {
|
2017-10-05 19:33:32 +01:00
|
|
|
ke.preventDefault()
|
2017-09-25 04:44:56 +01:00
|
|
|
}
|
2017-10-02 00:59:51 +01:00
|
|
|
if (stopPropagation) {
|
2017-10-05 19:33:32 +01:00
|
|
|
ke.stopPropagation()
|
2017-09-25 04:44:56 +01:00
|
|
|
}
|
2017-10-06 03:28:14 +01:00
|
|
|
browser.runtime.sendMessage({type: "keydown", event: msgsafe.KeyboardEvent(ke)})
|
2017-10-02 00:59:51 +01:00
|
|
|
}
|
2017-09-25 04:44:56 +01:00
|
|
|
|
2017-10-02 00:59:51 +01:00
|
|
|
// Listen for suppression messages from bg script.
|
2017-10-06 03:28:14 +01:00
|
|
|
function backgroundListener(message: Message) {
|
|
|
|
if (message.type === "keydown_suppress") {
|
2017-10-05 19:33:32 +01:00
|
|
|
if ('preventDefault' in message.data) {
|
|
|
|
preventDefault = message.data.preventDefault
|
|
|
|
}
|
|
|
|
if ('stopPropagation' in message.data) {
|
|
|
|
stopPropagation = message.data.stopPropagation
|
|
|
|
}
|
2017-09-25 04:44:56 +01:00
|
|
|
}
|
2017-10-02 00:59:51 +01:00
|
|
|
}
|
2017-09-25 04:44:56 +01:00
|
|
|
|
2017-10-02 00:59:51 +01:00
|
|
|
// State
|
|
|
|
let preventDefault = false
|
|
|
|
let stopPropagation = false
|
2017-09-25 04:44:56 +01:00
|
|
|
|
2017-10-02 00:59:51 +01:00
|
|
|
// Add listeners
|
|
|
|
window.addEventListener("keydown", keyeventHandler)
|
|
|
|
browser.runtime.onMessage.addListener(backgroundListener)
|
2017-09-25 04:44:56 +01:00
|
|
|
|
2017-10-02 00:59:51 +01:00
|
|
|
// Dummy export so that TS treats this as a module.
|
|
|
|
export {}
|