Files
youtube-music/src/providers/song-controls.ts
2023-11-30 11:59:27 +09:00

71 lines
1.8 KiB
TypeScript

// This is used for to control the songs
import { BrowserWindow } from 'electron';
type Modifiers = (
| Electron.MouseInputEvent
| Electron.MouseWheelInputEvent
| Electron.KeyboardInputEvent
)['modifiers'];
export const pressKey = (
window: BrowserWindow,
key: string,
modifiers: Modifiers = [],
) => {
window.webContents.sendInputEvent({
type: 'keyDown',
modifiers,
keyCode: key,
});
};
export default (win: BrowserWindow) => {
const commands = {
// Playback
previous: () => pressKey(win, 'k'),
next: () => pressKey(win, 'j'),
playPause: () => pressKey(win, ';'),
like: () => pressKey(win, '+'),
dislike: () => pressKey(win, '_'),
go10sBack: () => pressKey(win, 'h'),
go10sForward: () => pressKey(win, 'l'),
go1sBack: () => pressKey(win, 'h', ['shift']),
go1sForward: () => pressKey(win, 'l', ['shift']),
shuffle: () => pressKey(win, 's'),
switchRepeat(n = 1) {
for (let i = 0; i < n; i++) {
pressKey(win, 'r');
}
},
// General
volumeMinus10: () => pressKey(win, '-'),
volumePlus10: () => pressKey(win, '='),
fullscreen: () => pressKey(win, 'f'),
muteUnmute: () => pressKey(win, 'm'),
maximizeMinimisePlayer: () => pressKey(win, 'q'),
// Navigation
goToHome() {
pressKey(win, 'g');
pressKey(win, 'h');
},
goToLibrary() {
pressKey(win, 'g');
pressKey(win, 'l');
},
goToSettings() {
pressKey(win, 'g');
pressKey(win, ',');
},
goToExplore() {
pressKey(win, 'g');
pressKey(win, 'e');
},
search: () => pressKey(win, '/'),
showShortcuts: () => pressKey(win, '/', ['shift']),
};
return {
...commands,
play: commands.playPause,
pause: commands.playPause,
};
};