playercast
Version:
Cast to media player and control playback remotely
159 lines (150 loc) • 2.9 kB
JavaScript
const debug = require('debug')('playercast:keymap');
module.exports =
{
extRemote: (msg, player) =>
{
if(debug.enabled)
debug(`External remote signal: ${JSON.stringify(msg)}`);
switch(msg.action)
{
case 'PLAY':
case 'PAUSE':
player.action(msg.action.toLowerCase());
break;
case 'CYCLEPAUSE':
player.action('cyclePause');
break;
case 'CYCLEVIDEO':
player.action('cycleVideo');
break;
case 'CYCLEAUDIO':
player.action('cycleAudio');
break;
case 'CYCLESUBS':
player.action('cycleSubs');
break;
case 'CYCLEFULLSCREEN':
player.action('cycleFullscreen');
break;
case 'SEEK':
player.seekPercent(msg.value);
break;
case 'SEEK+':
player.seekForward(msg.value);
break;
case 'SEEK-':
player.seekBackward(msg.value);
break;
case 'SKIP+':
player.nextTrack();
break;
case 'SKIP-':
player.previousTrack();
break;
case 'VOLUME':
player.setVolume(msg.value);
break;
case 'VOLUME+':
player.increaseVolume(msg.value);
break;
case 'VOLUME-':
player.decreaseVolume(msg.value);
break;
case 'STOP':
player.action('quit');
break;
default:
break;
}
},
cecRemote: (keyName, player) =>
{
debug(`CEC remote signal: ${msg}`);
var seekTime = 10;
switch(keyName)
{
case 'select':
player.action('cycleFullscreen');
break;
case 'up':
player.action('cycleVideo');
break;
case 'down':
player.action('cycleAudio');
break;
case 'left':
player.previousTrack();
break;
case 'right':
player.nextTrack();
break;
case 'play':
case 'pause':
player.action(keyName);
break;
case 'rewind':
player.seekBackward(seekTime);
break;
case 'fast-forward':
player.seekForward(seekTime);
break;
case 'subtitle':
player.action('cycleSubs');
break;
case 'stop':
case 'exit':
player.action('quit');
break;
default:
break;
}
},
cecRemoteAlt: (keyName, player) =>
{
debug(`CEC alt-remote signal: ${msg}`);
var seekTime = 10;
switch(keyName)
{
case 'select':
player.action('cyclePause');
break;
case 'up':
player.nextTrack();
break;
case 'down':
player.previousTrack();
break;
case 'left':
case 'rewind':
player.seekBackward(seekTime);
break;
case 'right':
case 'fast-forward':
player.seekForward(seekTime);
break;
case 'play':
case 'pause':
player.action(keyName);
break;
case 'red':
player.action('cycleVideo');
break;
case 'green':
player.action('cycleAudio');
break;
case 'yellow':
case 'subtitle':
player.action('cycleSubs');
break;
case 'blue':
player.action('cycleFullscreen');
break;
case 'stop':
case 'exit':
player.action('quit');
break;
default:
break;
}
}
}