mirror of
https://gitlab.com/futo-org/fcast.git
synced 2025-07-28 12:57:00 +00:00
webOS: Fixed key and launch event handlers
This commit is contained in:
parent
a549296aca
commit
b0a706dfed
8 changed files with 69 additions and 15 deletions
|
@ -203,7 +203,7 @@ function renderQRCode(url: string) {
|
||||||
onQRCodeRendered();
|
onQRCodeRendered();
|
||||||
}
|
}
|
||||||
|
|
||||||
document.addEventListener('keydown', (event: KeyboardEvent) => {
|
export function keyDownEventHandler(event: KeyboardEvent) {
|
||||||
// logger.info("KeyDown", event);
|
// logger.info("KeyDown", event);
|
||||||
let result = targetKeyDownEventListener(event);
|
let result = targetKeyDownEventListener(event);
|
||||||
let handledCase = result.handledCase;
|
let handledCase = result.handledCase;
|
||||||
|
@ -221,8 +221,9 @@ document.addEventListener('keydown', (event: KeyboardEvent) => {
|
||||||
if (window.targetAPI.getSubscribedKeys().keyDown.has(key)) {
|
if (window.targetAPI.getSubscribedKeys().keyDown.has(key)) {
|
||||||
window.targetAPI.sendEvent(new EventMessage(Date.now(), new KeyEvent(EventType.KeyDown, key, event.repeat, handledCase)));
|
window.targetAPI.sendEvent(new EventMessage(Date.now(), new KeyEvent(EventType.KeyDown, key, event.repeat, handledCase)));
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
document.addEventListener('keyup', (event: KeyboardEvent) => {
|
|
||||||
|
export function keyUpEventHandler(event: KeyboardEvent) {
|
||||||
// logger.info("KeyUp", event);
|
// logger.info("KeyUp", event);
|
||||||
let result = targetKeyUpEventListener(event);
|
let result = targetKeyUpEventListener(event);
|
||||||
let handledCase = result.handledCase;
|
let handledCase = result.handledCase;
|
||||||
|
@ -240,4 +241,7 @@ document.addEventListener('keyup', (event: KeyboardEvent) => {
|
||||||
if (window.targetAPI.getSubscribedKeys().keyUp.has(key)) {
|
if (window.targetAPI.getSubscribedKeys().keyUp.has(key)) {
|
||||||
window.targetAPI.sendEvent(new EventMessage(Date.now(), new KeyEvent(EventType.KeyUp, key, event.repeat, handledCase)));
|
window.targetAPI.sendEvent(new EventMessage(Date.now(), new KeyEvent(EventType.KeyUp, key, event.repeat, handledCase)));
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
|
||||||
|
document.addEventListener('keydown', keyDownEventHandler);
|
||||||
|
document.addEventListener('keyup', keyUpEventHandler);
|
||||||
|
|
|
@ -923,7 +923,7 @@ function skipForward() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
document.addEventListener('keydown', (event: KeyboardEvent) => {
|
function keyDownEventHandler(event: KeyboardEvent) {
|
||||||
// logger.info("KeyDown", event.key);
|
// logger.info("KeyDown", event.key);
|
||||||
let result = targetKeyDownEventListener(event);
|
let result = targetKeyDownEventListener(event);
|
||||||
let handledCase = result.handledCase;
|
let handledCase = result.handledCase;
|
||||||
|
@ -993,8 +993,9 @@ document.addEventListener('keydown', (event: KeyboardEvent) => {
|
||||||
if (window.targetAPI.getSubscribedKeys().keyDown.has(key)) {
|
if (window.targetAPI.getSubscribedKeys().keyDown.has(key)) {
|
||||||
window.targetAPI.sendEvent(new EventMessage(Date.now(), new KeyEvent(EventType.KeyDown, key, event.repeat, handledCase)));
|
window.targetAPI.sendEvent(new EventMessage(Date.now(), new KeyEvent(EventType.KeyDown, key, event.repeat, handledCase)));
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
document.addEventListener('keyup', (event: KeyboardEvent) => {
|
|
||||||
|
function keyUpEventHandler(event: KeyboardEvent) {
|
||||||
// logger.info("KeyUp", event);
|
// logger.info("KeyUp", event);
|
||||||
let result = targetKeyUpEventListener(event);
|
let result = targetKeyUpEventListener(event);
|
||||||
let handledCase = result.handledCase;
|
let handledCase = result.handledCase;
|
||||||
|
@ -1012,7 +1013,10 @@ document.addEventListener('keyup', (event: KeyboardEvent) => {
|
||||||
if (window.targetAPI.getSubscribedKeys().keyUp.has(key)) {
|
if (window.targetAPI.getSubscribedKeys().keyUp.has(key)) {
|
||||||
window.targetAPI.sendEvent(new EventMessage(Date.now(), new KeyEvent(EventType.KeyUp, key, event.repeat, handledCase)));
|
window.targetAPI.sendEvent(new EventMessage(Date.now(), new KeyEvent(EventType.KeyUp, key, event.repeat, handledCase)));
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
|
||||||
|
document.addEventListener('keydown', keyDownEventHandler);
|
||||||
|
document.addEventListener('keyup', keyUpEventHandler);
|
||||||
|
|
||||||
export {
|
export {
|
||||||
PlayerControlEvent,
|
PlayerControlEvent,
|
||||||
|
@ -1042,4 +1046,6 @@ export {
|
||||||
formatDuration,
|
formatDuration,
|
||||||
skipBack,
|
skipBack,
|
||||||
skipForward,
|
skipForward,
|
||||||
|
keyDownEventHandler,
|
||||||
|
keyUpEventHandler,
|
||||||
};
|
};
|
||||||
|
|
|
@ -329,7 +329,7 @@ document.onmousemove = () => {
|
||||||
uiHideTimer.start();
|
uiHideTimer.start();
|
||||||
};
|
};
|
||||||
|
|
||||||
document.addEventListener('keydown', (event: KeyboardEvent) => {
|
function keyDownEventHandler(event: KeyboardEvent) {
|
||||||
// logger.info("KeyDown", event);
|
// logger.info("KeyDown", event);
|
||||||
let result = targetKeyDownEventListener(event);
|
let result = targetKeyDownEventListener(event);
|
||||||
let handledCase = result.handledCase;
|
let handledCase = result.handledCase;
|
||||||
|
@ -379,8 +379,9 @@ document.addEventListener('keydown', (event: KeyboardEvent) => {
|
||||||
if (window.targetAPI.getSubscribedKeys().keyDown.has(key)) {
|
if (window.targetAPI.getSubscribedKeys().keyDown.has(key)) {
|
||||||
window.targetAPI.sendEvent(new EventMessage(Date.now(), new KeyEvent(EventType.KeyDown, key, event.repeat, handledCase)));
|
window.targetAPI.sendEvent(new EventMessage(Date.now(), new KeyEvent(EventType.KeyDown, key, event.repeat, handledCase)));
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
document.addEventListener('keyup', (event: KeyboardEvent) => {
|
|
||||||
|
function keyUpEventHandler(event: KeyboardEvent) {
|
||||||
// logger.info("KeyUp", event);
|
// logger.info("KeyUp", event);
|
||||||
let result = targetKeyUpEventListener(event);
|
let result = targetKeyUpEventListener(event);
|
||||||
let handledCase = result.handledCase;
|
let handledCase = result.handledCase;
|
||||||
|
@ -398,7 +399,10 @@ document.addEventListener('keyup', (event: KeyboardEvent) => {
|
||||||
if (window.targetAPI.getSubscribedKeys().keyUp.has(key)) {
|
if (window.targetAPI.getSubscribedKeys().keyUp.has(key)) {
|
||||||
window.targetAPI.sendEvent(new EventMessage(Date.now(), new KeyEvent(EventType.KeyUp, key, event.repeat, handledCase)));
|
window.targetAPI.sendEvent(new EventMessage(Date.now(), new KeyEvent(EventType.KeyUp, key, event.repeat, handledCase)));
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
|
||||||
|
document.addEventListener('keydown', keyDownEventHandler);
|
||||||
|
document.addEventListener('keyup', keyUpEventHandler);
|
||||||
|
|
||||||
export {
|
export {
|
||||||
PlayerControlEvent,
|
PlayerControlEvent,
|
||||||
|
@ -411,4 +415,6 @@ export {
|
||||||
onPlayPlaylist,
|
onPlayPlaylist,
|
||||||
playerCtrlStateUpdate,
|
playerCtrlStateUpdate,
|
||||||
setPlaylistItem,
|
setPlaylistItem,
|
||||||
|
keyDownEventHandler,
|
||||||
|
keyUpEventHandler,
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
import { Logger, LoggerType } from 'common/Logger';
|
import { Logger, LoggerType } from 'common/Logger';
|
||||||
import { ServiceManager } from 'lib/common';
|
import { ServiceManager } from 'lib/common';
|
||||||
|
require('lib/webOSTVjs-1.2.10/webOSTV.js');
|
||||||
|
require('lib/webOSTVjs-1.2.10/webOSTV-dev.js');
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
interface Window {
|
interface Window {
|
||||||
|
@ -10,6 +12,8 @@ declare global {
|
||||||
const logger = new Logger('Main', LoggerType.FRONTEND);
|
const logger = new Logger('Main', LoggerType.FRONTEND);
|
||||||
const webPage: HTMLIFrameElement = document.getElementById('page') as HTMLIFrameElement;
|
const webPage: HTMLIFrameElement = document.getElementById('page') as HTMLIFrameElement;
|
||||||
let launchHandlerCallback = () => { logger.warn('No (re)launch handler set'); };
|
let launchHandlerCallback = () => { logger.warn('No (re)launch handler set'); };
|
||||||
|
let keyDownEventHandler = () => { logger.warn('No keyDown event handler set'); };
|
||||||
|
let keyUpEventHandler = () => { logger.warn('No keyUp event handler set'); };
|
||||||
|
|
||||||
function loadPage(path: string) {
|
function loadPage(path: string) {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
|
@ -20,13 +24,35 @@ function loadPage(path: string) {
|
||||||
// so bugs related to oversubscribing/canceling services are worked around by only subscribing once to
|
// so bugs related to oversubscribing/canceling services are worked around by only subscribing once to
|
||||||
// required services
|
// required services
|
||||||
logger.info('Starting webOS application')
|
logger.info('Starting webOS application')
|
||||||
|
window.webOS.deviceInfo((info) => { logger.info('Device info:', info); });
|
||||||
|
|
||||||
window.webOSApp = {
|
window.webOSApp = {
|
||||||
serviceManager: new ServiceManager(),
|
serviceManager: new ServiceManager(),
|
||||||
setLaunchHandler: (callback: () => void) => launchHandlerCallback = callback,
|
setLaunchHandler: (callback: () => void) => {
|
||||||
|
document.removeEventListener('webOSLaunch', launchHandlerCallback);
|
||||||
|
document.removeEventListener('webOSRelaunch', launchHandlerCallback);
|
||||||
|
|
||||||
|
launchHandlerCallback = callback;
|
||||||
|
document.addEventListener('webOSLaunch', launchHandlerCallback);
|
||||||
|
document.addEventListener('webOSRelaunch', launchHandlerCallback);
|
||||||
|
},
|
||||||
|
setKeyDownHandler: (callback: () => void) => {
|
||||||
|
document.removeEventListener('keydown', keyDownEventHandler);
|
||||||
|
|
||||||
|
keyDownEventHandler = callback;
|
||||||
|
document.addEventListener('keydown', keyDownEventHandler);
|
||||||
|
},
|
||||||
|
setKeyUpHandler: (callback: () => void) => {
|
||||||
|
document.removeEventListener('keyup', keyUpEventHandler);
|
||||||
|
|
||||||
|
keyUpEventHandler = callback;
|
||||||
|
document.addEventListener('keyup', keyUpEventHandler);
|
||||||
|
},
|
||||||
loadPage: loadPage
|
loadPage: loadPage
|
||||||
};
|
};
|
||||||
|
|
||||||
document.addEventListener('webOSLaunch', launchHandlerCallback);
|
document.addEventListener('webOSLaunch', launchHandlerCallback);
|
||||||
document.addEventListener('webOSRelaunch', launchHandlerCallback);
|
document.addEventListener('webOSRelaunch', launchHandlerCallback);
|
||||||
|
document.addEventListener('keydown', keyDownEventHandler);
|
||||||
|
document.addEventListener('keyup', keyUpEventHandler);
|
||||||
loadPage('./main_window/index.html');
|
loadPage('./main_window/index.html');
|
||||||
|
|
|
@ -109,6 +109,7 @@ try {
|
||||||
};
|
};
|
||||||
|
|
||||||
const launchHandler = () => {
|
const launchHandler = () => {
|
||||||
|
// Launch handler not supported in simulator due to JSON parsing errors of launch parameters
|
||||||
const params = window.webOSDev.launchParams();
|
const params = window.webOSDev.launchParams();
|
||||||
logger.info(`Main: (Re)launching FCast Receiver with args: ${JSON.stringify(params)}`);
|
logger.info(`Main: (Re)launching FCast Receiver with args: ${JSON.stringify(params)}`);
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import 'common/main/Renderer';
|
import { keyDownEventHandler, keyUpEventHandler } from 'common/main/Renderer';
|
||||||
import { RemoteKeyCode } from 'lib/common';
|
import { RemoteKeyCode } from 'lib/common';
|
||||||
import * as common from 'lib/common';
|
import * as common from 'lib/common';
|
||||||
|
|
||||||
|
@ -29,6 +29,9 @@ backgroundVideo.onplaying = () => {
|
||||||
backgroundVideo.onplaying = null;
|
backgroundVideo.onplaying = null;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
window.parent.webOSApp.setKeyDownHandler(keyDownEventHandler);
|
||||||
|
window.parent.webOSApp.setKeyUpHandler(keyUpEventHandler);
|
||||||
|
|
||||||
export function onQRCodeRendered() {
|
export function onQRCodeRendered() {
|
||||||
qrCodeRendered = true;
|
qrCodeRendered = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,8 @@ import {
|
||||||
formatDuration,
|
formatDuration,
|
||||||
skipBack,
|
skipBack,
|
||||||
skipForward,
|
skipForward,
|
||||||
|
keyDownEventHandler,
|
||||||
|
keyUpEventHandler,
|
||||||
} from 'common/player/Renderer';
|
} from 'common/player/Renderer';
|
||||||
import { RemoteKeyCode } from 'lib/common';
|
import { RemoteKeyCode } from 'lib/common';
|
||||||
import * as common from 'lib/common';
|
import * as common from 'lib/common';
|
||||||
|
@ -28,6 +30,9 @@ const captionsBaseHeightCollapsed = 150;
|
||||||
const captionsBaseHeightExpanded = 320;
|
const captionsBaseHeightExpanded = 320;
|
||||||
const captionsLineHeight = 68;
|
const captionsLineHeight = 68;
|
||||||
|
|
||||||
|
window.parent.webOSApp.setKeyDownHandler(keyDownEventHandler);
|
||||||
|
window.parent.webOSApp.setKeyUpHandler(keyUpEventHandler);
|
||||||
|
|
||||||
export function targetPlayerCtrlStateUpdate(event: PlayerControlEvent): boolean {
|
export function targetPlayerCtrlStateUpdate(event: PlayerControlEvent): boolean {
|
||||||
let handledCase = false;
|
let handledCase = false;
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
import { PlayerControlEvent, playerCtrlStateUpdate, onPlay, onPlayPlaylist, setPlaylistItem, playlistIndex } from 'common/viewer/Renderer';
|
import { PlayerControlEvent, playerCtrlStateUpdate, onPlay, onPlayPlaylist, setPlaylistItem, playlistIndex, keyDownEventHandler, keyUpEventHandler } from 'common/viewer/Renderer';
|
||||||
import { RemoteKeyCode } from 'lib/common';
|
import { RemoteKeyCode } from 'lib/common';
|
||||||
import * as common from 'lib/common';
|
import * as common from 'lib/common';
|
||||||
|
|
||||||
|
window.parent.webOSApp.setKeyDownHandler(keyDownEventHandler);
|
||||||
|
window.parent.webOSApp.setKeyUpHandler(keyUpEventHandler);
|
||||||
|
|
||||||
export function targetPlayerCtrlStateUpdate(event: PlayerControlEvent): boolean {
|
export function targetPlayerCtrlStateUpdate(event: PlayerControlEvent): boolean {
|
||||||
let handledCase = false;
|
let handledCase = false;
|
||||||
return handledCase;
|
return handledCase;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue