tridactyl/src/keydown_background.ts
Oliver Blanthorn 07c3688f8d Bonus late night commit
All the mistakes are Colin's fault
- Generic listener
- Send messages to command line
- ^ doesn't work unless frame is opened in new tab
2017-10-06 03:40:17 +01:00

30 lines
776 B
TypeScript

// Interface: onKeydown.addListener(func)
//
import * as Messaging from './messaging'
import {MsgSafeKeyboardEvent} from './msgsafe'
// Type for messages sent from keydown_content
export interface KeydownShimMessage extends Message {
type: "keydown"
event: MsgSafeKeyboardEvent
}
type KeydownCallback = (keyevent: MsgSafeKeyboardEvent) => void
const listeners = new Set<KeydownCallback>()
function addListener(cb: KeydownCallback) {
listeners.add(cb)
return () => { listeners.delete(cb) }
}
export const onKeydown = { addListener }
// Receive events from content and pass to listeners
function handler(message: KeydownShimMessage) {
for (let listener of listeners) {
listener(message.event)
}
}
Messaging.addListener('keydown', handler)