Глобальные хоткеи для скорости, следующего/предыдущего трека и копирования названия. Работают когда YM свёрнут.Documentation Index
Fetch the complete documentation index at: https://bym.lonestill.uk/llms.txt
Use this file to discover all available pages before exploring further.
BYM.register({
id: 'hotkey-controls',
name: 'Hotkey Controls',
version: '1.0.0',
description: 'Глобальные горячие клавиши для управления YM.',
settings: [
{ key: 'speedUp', type: 'string', label: 'Скорость +0.1', default: 'Alt+Up' },
{ key: 'speedDown', type: 'string', label: 'Скорость -0.1', default: 'Alt+Down' },
{ key: 'speedReset',type: 'string', label: 'Сброс скорости',default: 'Alt+R' },
{ key: 'next', type: 'string', label: 'Следующий', default: 'Alt+Right' },
{ key: 'prev', type: 'string', label: 'Предыдущий', default: 'Alt+Left' },
{ key: 'copy', type: 'string', label: 'Копировать трек',default: 'Ctrl+Shift+C' },
{ key: 'notify', type: 'boolean',label: 'Уведомление при смене трека', default: true },
],
}, (api, getSetting) => ({
start() {
// Скорость
api.Hotkeys.register(getSetting('speedUp') ?? 'Alt+Up', () => {
const v = Math.min(4, parseFloat((api.Player.getSpeed() + 0.1).toFixed(2)));
api.Player.setSpeed(v);
api.UI.toast(v.toFixed(2) + '×', 600);
});
api.Hotkeys.register(getSetting('speedDown') ?? 'Alt+Down', () => {
const v = Math.max(0.25, parseFloat((api.Player.getSpeed() - 0.1).toFixed(2)));
api.Player.setSpeed(v);
api.UI.toast(v.toFixed(2) + '×', 600);
});
api.Hotkeys.register(getSetting('speedReset') ?? 'Alt+R', () => {
api.Player.resetSpeed();
api.UI.toast('1.00×', 600);
});
// Навигация
api.Hotkeys.register(getSetting('next') ?? 'Alt+Right', () => api.Player.next());
api.Hotkeys.register(getSetting('prev') ?? 'Alt+Left', () => api.Player.prev());
// Копировать трек
api.Hotkeys.register(getSetting('copy') ?? 'Ctrl+Shift+C', async () => {
const track = api.Player.getTrack();
if (!track) return;
await api.Clipboard.write(`${track.artist} — ${track.title}`);
api.UI.toast('Скопировано', 1000);
});
// Уведомление при смене трека
if (getSetting('notify') !== false) {
api.Events.on('trackChange', (track) => {
if (track) api.UI.notify(track.artist, track.title);
});
}
},
stop() {
api.Events.off('trackChange');
// Hotkeys снимутся автоматически
},
}));
api.Hotkeys, api.Player, api.UI, api.Clipboard, api.Events, settings