| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- export type ModifierKey = 'shift' | 'command' | 'control' | 'option'
- let prewarmed = false
- /**
- * Pre-warm the native module by loading it in advance.
- * Call this early to avoid delay on first use.
- */
- export function prewarmModifiers(): void {
- if (prewarmed || process.platform !== 'darwin') {
- return
- }
- prewarmed = true
- // Load module in background
- try {
- // eslint-disable-next-line @typescript-eslint/no-require-imports
- const { prewarm } = require('modifiers-napi') as { prewarm: () => void }
- prewarm()
- } catch {
- // Ignore errors during prewarm
- }
- }
- /**
- * Check if a specific modifier key is currently pressed (synchronous).
- */
- export function isModifierPressed(modifier: ModifierKey): boolean {
- if (process.platform !== 'darwin') {
- return false
- }
- try {
- // Dynamic import to avoid loading native module at top level
- const { isModifierPressed: nativeIsModifierPressed } =
- // eslint-disable-next-line @typescript-eslint/no-require-imports
- require('modifiers-napi') as { isModifierPressed: (m: string) => boolean }
- return nativeIsModifierPressed(modifier)
- } catch {
- return false
- }
- }
|