> ## 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.

# api.Hotkeys

> Глобальные горячие клавиши через Electron globalShortcut

Работают даже когда окно YM не в фокусе. Снимаются при `stop()` автоматически.

## Методы

```js theme={null}
const unpatch = api.Hotkeys.register(combo, fn)
api.Hotkeys.unregister(combo, fn?)
```

## Формат combo

Формат Electron Accelerator:

```
Ctrl+Shift+S
Alt+F
CommandOrControl+P
MediaNextTrack
MediaPreviousTrack
MediaPlayPause
```

## Пример

```js theme={null}
BYM.register({
  id: 'speed-hotkeys',
  settings: [
    { key: 'up',    type: 'string', label: 'Скорость +0.1', default: 'Alt+Up' },
    { key: 'down',  type: 'string', label: 'Скорость -0.1', default: 'Alt+Down' },
    { key: 'reset', type: 'string', label: 'Сброс',         default: 'Alt+R' },
  ],
}, (api, getSetting) => ({
  start() {
    api.Hotkeys.register(getSetting('up') ?? '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) + '×', 800);
    });

    api.Hotkeys.register(getSetting('down') ?? '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) + '×', 800);
    });

    api.Hotkeys.register(getSetting('reset') ?? 'Alt+R', () => {
      api.Player.resetSpeed();
      api.UI.toast('1.00×', 800);
    });
  },
  stop() {},
}));
```

## Ограничения

* Один `combo` может быть зарегистрирован только один раз глобально
* Если другое приложение уже захватило хоткей — регистрация провалится молча
