useHotkey.ts
1 import { useSignalEffect } from '@preact/signals-react'; 2 import { IHotkey, IHotkeyService, IHotkeyServiceSymbol } from 'ipmc-interfaces'; 3 import { useService } from '../context/AppContext'; 4 5 export function useHotkey(hotkey: IHotkey, action: () => void) { 6 const hotkeyService = useService<IHotkeyService>(IHotkeyServiceSymbol); 7 8 useSignalEffect(() => { 9 const sym = hotkeyService.registerHotkey(hotkey, action); 10 11 return () => { 12 hotkeyService.removeHotkey(sym); 13 }; 14 }); 15 }