Skip to main content

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)

반환값: boolean - 단축키 등록 성공 여부

accelerator로 지정한 전역 단축키를 등록한다. 사용자가 등록한 단축키를 누르면 callback 함수가 호출된다.

만약 해당 단축키가 이미 다른 애플리케이션에서 사용 중이라면, 이 호출은 자동으로 실패한다. 이는 운영체제가 애플리케이션 간 전역 단축키 경쟁을 방지하기 위해 의도된 동작이다.

macOS 10.14 Mojave 이상에서는 아래 단축키를 등록하려면 앱이 신뢰할 수 있는 접근성 클라이언트로 승인되어야 한다:

  • "Media Play/Pause"
  • "Media Next Track"
  • "Media Previous Track"
  • "Media Stop"

globalShortcut.registerAll(accelerators, callback)

accelerators 배열에 있는 모든 accelerator 항목에 대한 전역 단축키를 등록한다. 사용자가 등록된 단축키 중 하나를 누르면 callback이 호출된다.

특정 accelerator가 이미 다른 애플리케이션에서 사용 중인 경우, 이 호출은 조용히 실패한다. 이 동작은 운영체제가 애플리케이션들이 전역 단축키를 놓고 경쟁하지 않도록 하기 위해 의도적으로 설계된 것이다.

macOS 10.14 Mojave에서는 앱이 신뢰할 수 있는 접근성 클라이언트로 승인되지 않은 경우, 다음 accelerator들은 성공적으로 등록되지 않는다:

  • "Media Play/Pause"
  • "Media Next Track"
  • "Media Previous Track"
  • "Media Stop"

globalShortcut.isRegistered(accelerator)

boolean을 반환한다. 현재 애플리케이션이 accelerator를 등록했는지 여부를 나타낸다.

다른 애플리케이션이 이미 해당 단축키를 사용 중인 경우, 이 메서드는 여전히 false를 반환한다. 이 동작은 운영체제에서 의도한 것으로, 애플리케이션이 전역 단축키를 두고 경쟁하지 않도록 하기 위함이다.

globalShortcut.unregister(accelerator)

accelerator에 해당하는 전역 단축키를 등록 해제한다.

globalShortcut.unregisterAll()

모든 글로벌 단축키를 등록 해제한다.