

이 패키지를 사용하면 몇 분 안에 MACOS 앱에 사용자 가중화 가능한 글로벌 키보드 바로 가기에 대한 지원을 추가 할 수 있습니다. 완전 샌드 박스 및 Mac App Store 호환입니다. 그리고 그것은 Dato, Jiffy, Plash 및 Lungo의 생산에 사용됩니다.
더 많은 구성 성과 기능을 받아들이게되어 기쁩니다. 홍보 환영합니다! 여기서 보는 것은 내 앱에 필요한 것입니다.

MACOS 10.15+
Xcode의 "Swift Package Manager"탭에 https://github.com/sindresorhus/KeyboardShortcuts 추가하십시오.
먼저 키보드 단축키의 이름을 등록하십시오.
Constants.swift
import KeyboardShortcuts
extension KeyboardShortcuts . Name {
static let toggleUnicornMode = Self ( " toggleUnicornMode " )
}그런 다음 다른 장소 에서이 강력한 이름을 참조 할 수 있습니다.
사용자가 키보드 바로 가기를 선택할 수있는 곳을 확인하고 싶을 것입니다.
SettingsScreen.swift
import SwiftUI
import KeyboardShortcuts
struct SettingsScreen : View {
var body : some View {
Form {
KeyboardShortcuts . Recorder ( " Toggle Unicorn Mode: " , name : . toggleUnicornMode )
}
}
}Swiftui 대신 코코아를 지원합니다.
KeyboardShortcuts.Recorder UserDefaults 에게 표시되는 키보드 단축키를 저장하고 선택한 키보드 바로 가기가 시스템 또는 앱의 기본 메뉴에서 이미 사용되는 경우 사용자에게 경고합니다.
사용자가 선택한 키보드 바로 가기를 누를 때 리스너를 추가하십시오.
App.swift
import SwiftUI
import KeyboardShortcuts
@ main
struct YourApp : App {
@ State private var appState = AppState ( )
var body : some Scene {
WindowGroup {
// …
}
Settings {
SettingsScreen ( )
}
}
}
@ MainActor
@ Observable
final class AppState {
init ( ) {
KeyboardShortcuts . onKeyUp ( for : . toggleUnicornMode ) { [ self ] in
isUnicornMode . toggle ( )
}
}
} .onKeyDown() 로 키를들을 수도 있습니다.
그게 다야!
"예"디렉토리에서 전체 예제를 찾을 수 있습니다.
내 플래시 앱에서 실제 예제를 찾을 수도 있습니다.
KeyboardShortcuts.RecorderCocoa 사용 KeyboardShortcuts.Recorder 사용 :
import AppKit
import KeyboardShortcuts
final class SettingsViewController : NSViewController {
override func loadView ( ) {
view = NSView ( )
let recorder = KeyboardShortcuts . RecorderCocoa ( for : . toggleUnicornMode )
view . addSubview ( recorder )
}
} 이 패키지는 현지화를 지원합니다. PR 더 많은 것을 환영합니다!
.lproj 접미사가 이어집니다. 여기 더.Localizable.strings 라는 파일을 만들고 KeyboardShortcuts/Localization/en.lproj/Localizable.strings 의 내용을 방금 만든 새 파일에 복사하십시오.API 문서를 참조하십시오.
NSMenuItem 에서 녹음 된 키보드 단축키를 표시하십시오 NSMenuItem#setShortcut 참조하십시오.
앱은 사용자 정의 작업을 위해 키보드 바로 가기를 지원해야 할 수도 있습니다. 일반적으로 extension KeyboardShortcuts.Name {} 그러나 이것은 요구 사항이 아닙니다. 다양한 API를 호출 할 때 Dot-Syntax를 사용할 수 있도록 편의를위한 것입니다 (예 : .onKeyDown(.unicornMode) {} ). KeyboardShortcut.Name 의 동적으로 만들어 직접 저장할 수 있습니다. 예제 프로젝트에서 이것을 실제로 볼 수 있습니다.
다른 패키지에서 마이그레이션하거나 직접 무언가를 만드는 경우 기본 키보드 단축키를 설정하는 것이 유용 할 수 있습니다. 그러나 공개적으로 배포 된 앱에 대해 설정하지 마십시오. 랜덤 앱이 기존 키보드 바로 가기를 훔칠 때는 성가신 것을 알 수 있습니다. 일반적으로 사용자가 바로 가기를 설정할 수있는 첫 번째 앱 시작에서 환영 화면을 표시하는 것이 좋습니다.
import KeyboardShortcuts
extension KeyboardShortcuts . Name {
static let toggleUnicornMode = Self ( " toggleUnicornMode " , default : . init ( . k , modifiers : [ . command , . option ] ) )
} 모든 키보드 바로 가기 Name 얻으려면 KeyboardShortcuts.Name to CaseIterable 준수하십시오.
import KeyboardShortcuts
extension KeyboardShortcuts . Name {
static let foo = Self ( " foo " )
static let bar = Self ( " bar " )
}
extension KeyboardShortcuts . Name : CaseIterable {
public static let allCases : [ Self ] = [
. foo ,
. bar
]
}
// …
print ( KeyboardShortcuts . Name . allCases ) 세트 키보드 바로 가기로 모든 Name 얻으려면 다음과 같습니다.
print ( KeyboardShortcuts . Name . allCases . filter { $0 . shortcut != nil } ) MASShortcut 과 어떻게 다른가요?이 패키지 :
NSMenuItem 에 연결하십시오.NSMenu 가 열릴 때 작동합니다 (예 : 메뉴 표시 줄 앱). MASShortcut :
HotKey 와 어떻게 다른가요? HotKey 하드 코딩 된 키보드 단축키를 추가하는 데 적합하지만 사용자가 자체 키보드 단축키를 선택할 수있는 UI 구성 요소를 제공하지 않습니다.
Carbon 수입하는 이유는 무엇입니까? 더 이상 사용되지 않습니까?탄소 API의 대부분은 몇 년 전에 더 이상 사용되지 않았지만 Apple은 현대적인 교체품을 운송 한 적이 없다는 일부가 있습니다. 여기에는 글로벌 키보드 바로 가기 등록이 포함됩니다. 그러나 이것에 대해 걱정할 필요는 없습니다. Apple은 여기에 사용 된 탄소 API를 더 이상 사용하지 않기 전에 Sure Ship New API를 제공합니다.
아니요.
그것은이 패키지의 범위를 벗어납니다. NSEvent.addLocalMonitorForEvents View#keyboardShortcut() NSMenuItem
아니요, 샌드 박스 앱에서는 작동하지 않기 때문입니다. 앱이 샌드 박스가 아닌 경우 MediaKeyTap 사용할 수 있습니다.
아니요. 그러나 일반적으로 Cocoapods 또는 Carthage를 사용 하더라도이 패키지에 Swift 패키지 관리자를 사용하는 것을 막을 수있는 것은 없습니다.