globalShortcut
애플리케이션이 키보드 포커스를 갖지 않았을 때도 키보드 이벤트를 감지한다.
프로세스: Main
globalShortcut
모듈은 운영체제와 함께 전역 키보드 단축키를 등록하거나 해제할 수 있다. 이를 통해 다양한 단축키에 대한 동작을 커스텀할 수 있다.
참고: 이 단축키는 전역적으로 동작하며, 앱이 키보드 포커스를 갖지 않았을 때도 작동한다. 이 모듈은 앱 모듈의 ready
이벤트가 발생하기 전에는 사용할 수 없다.
const { app, globalShortcut } = require('electron')
app.whenReady().then(() => {
// 'CommandOrControl+X' 단축키 리스너를 등록한다.
const ret = globalShortcut.register('CommandOrControl+X', () => {
console.log('CommandOrControl+X is pressed')
})
if (!ret) {
console.log('registration failed')
}
// 단축키가 등록되었는지 확인한다.
console.log(globalShortcut.isRegistered('CommandOrControl+X'))
})
app.on('will-quit', () => {
// 단축키를 해제한다.
globalShortcut.unregister('CommandOrControl+X')
// 모든 단축키를 해제한다.
globalShortcut.unregisterAll()
})
메서드
globalShortcut
모듈은 다음과 같은 메서드를 제공한다:
globalShortcut.register(accelerator, callback)
accelerator
Acceleratorcallback
Function
반환값: boolean
- 단축키 등록 성공 여부
accelerator
로 지정한 전역 단축키를 등록한다. 사용자가 등록한 단축키를 누르면 callback
함수가 호출된다.
만약 해당 단축키가 이미 다른 애플리케이션에서 사용 중이라면, 이 호출은 자동으로 실패한다. 이는 운영체제가 애플리케이션 간 전역 단축키 경쟁을 방지하기 위해 의도된 동작이다.
macOS 10.14 Mojave 이상에서는 아래 단축키를 등록하려면 앱이 신뢰할 수 있는 접근성 클라이언트로 승인되어야 한다:
- "Media Play/Pause"
- "Media Next Track"
- "Media Previous Track"
- "Media Stop"
globalShortcut.registerAll(accelerators, callback)
accelerators
Accelerator[] - Accelerator 배열callback
Function
accelerators
배열에 있는 모든 accelerator
항목에 대한 전역 단축키를 등록한다. 사용자가 등록된 단축키 중 하나를 누르면 callback
이 호출된다.
특정 accelerator가 이미 다른 애플리케이션에서 사용 중인 경우, 이 호출은 조용히 실패한다. 이 동작은 운영체제가 애플리케이션들이 전역 단축키를 놓고 경쟁하지 않도록 하기 위해 의도적으로 설계된 것이다.
macOS 10.14 Mojave에서는 앱이 신뢰할 수 있는 접근성 클라이언트로 승인되지 않은 경우, 다음 accelerator들은 성공적으로 등록되지 않는다:
- "Media Play/Pause"
- "Media Next Track"
- "Media Previous Track"
- "Media Stop"
globalShortcut.isRegistered(accelerator)
accelerator
Accelerator
boolean
을 반환한다. 현재 애플리케이션이 accelerator
를 등록했는지 여부를 나타낸다.
다른 애플리케이션이 이미 해당 단축키를 사용 중인 경우, 이 메서드는 여전히 false
를 반환한다. 이 동작은 운영체제에서 의도한 것으로, 애플리케이션이 전역 단축키를 두고 경쟁하지 않도록 하기 위함이다.
globalShortcut.unregister(accelerator)
accelerator
Accelerator
accelerator
에 해당하는 전역 단축키를 등록 해제한다.
globalShortcut.unregisterAll()
모든 글로벌 단축키를 등록 해제한다.