Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 리팩토링
- swiftUI
- 스위프트
- Human interface guide
- Clean Code
- Observable
- swift documentation
- combine
- MVVM
- uitableview
- Xcode
- UICollectionView
- uiscrollview
- HIG
- Protocol
- 클린 코드
- SWIFT
- ios
- clean architecture
- UITextView
- rxswift
- tableView
- 리펙토링
- map
- 리펙터링
- collectionview
- 애니메이션
- ribs
- Refactoring
- RxCocoa
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] 1. Custom Shortcut (커스텀 단축키) 만드는 방법 - 기본 개념 (plistbuddy, defaults, NSUserKeyEquivalents) 본문
iOS 응용 (swift)
[iOS - swift] 1. Custom Shortcut (커스텀 단축키) 만드는 방법 - 기본 개념 (plistbuddy, defaults, NSUserKeyEquivalents)
jake-kim 2023. 3. 28. 01:051. custom shortcut (커스텀 단축키) 만드는 방법 - 기본 개념 (plistbuddy, defaults, NSUserKeyEquivalents) <
2. custom shortcut (커스텀 단축키) 만드는 방법 - Xcode의 import 부분을 정렬하는 단축키 만들기 개념 (services)
3. custom shortcut (커스텀 단축키) 만드는 방법 - shell script 입력, 정렬, 출력 (import 정렬 단축기 만들기)
커스텀 단축키 만드는 아이디어
- plistbuddy를 사용하면 XCode의 환경설정 파일(com.apple.dt.Xcode.plist)에 단축키 옵션 추가가 가능
- plistbuddy는 shell로 plist파일을 수정할 수 있는 기능이 있어서 이것을 사용하여 커스텀 단축키 생성
- plistbuddy를 실행시켜주는 defaults 명령어를 사용하여 간편하게 등록
- defaults 명령어를 통해 NSUserKeyEquivalents에 접근하여 Xcode에 키 맵핑을 등록
- Xcode에서 단축키 입력 시 미리 정의한 shell script가 동작하고 그 shell script를 통해 xcode의 에디터에 반영되도록 구현
PlistBuddy란?
- PlistBuddy는 /usr/libexec 하위에 있고 실행파일(exec)형태로 존재
% file /usr/libexec/PlistBuddy
/usr/libexec/PlistBuddy (for architecture x86_64): Mach-O 64-bit executable x86_64
/usr/libexec/PlistBuddy (for architecture arm64e): Mach-O 64-bit executable arm64e
- 실행파일이므로 어떤 기능을 추가할때 shell에서 아래처럼 접근하여 사용
- -c는 커맨드라인이라는 옵션
% /usr/libexec/plistbuddy -c [some command...]
- 이 PlistBuddy에 접근해서 직접 원하는 작업을 설정해도 되지만, defaults라는 Xcode에서 제공해주는 명령어를 사용하면 쉽게 작업이 가능
defaults 명령어와 사용하여 단축키 맵핑
- defaults 명령어를 사용하여 NSUserKeyEquivalents라는 key-value 맵핑 딕셔너리 저장소에 접근하여 커스텀
- NSUserKeyEquivalents는 macOS에서 제공하는 키맵핑 테이블
% defaults write com.apple.dt.Xcode NSUserKeyEquivalents -dict-add "shortcut name" "shortcut"
- 위 명령어에서 argument 중 하나인 "shortcut"에 들어갈 맵핑 표
- NSUserKeyEquivalents의 내용을 보려면 defaults read 커맨드 라인을 사용
% defaults read com.apple.dt.Xcode NSUserKeyEquivalents
{
"Sort Lines" = "@^s";
}
- 명령어 확인은 defaults
$ defaults
read shows all defaults
read <domain> shows defaults for given domain
read <domain> <key> shows defaults for given domain, key
read-type <domain> <key> shows the type for the given domain, key
write <domain> <domain_rep> writes domain (overwrites existing)
write <domain> <key> <value> writes key for domain
rename <domain> <old_key> <new_key> renames old_key to new_key
delete <domain> deletes domain
delete <domain> <key> deletes key in domain
import <domain> <path to plist> writes the plist at path to domain
import <domain> - writes a plist from stdin to domain
export <domain> <path to plist> saves domain as a binary plist to path
export <domain> - writes domain as an xml plist to stdout
domains lists all domains
find <word> lists all entries containing word
help print this help
defaults로 단축키 키 맵핑 시 TIP
- 키 맵핑에 관한 아스키 코드를 다 기억하기 어렵기 때문에 shell script에서 매크로로 등록하여 사용
CMD="@"
CTRL="^"
OPT="~"
SHIFT="$"
UP='\U2191'
DOWN='\U2193'
LEFT='\U2190'
RIGHT='\U2192'
TAB='\U21e5'
# for example
"my custom shortcut" = "${CMD}${SHIFT}a" # cmd + shift + a 단축키
... 다음 포스팅 글에서 계속 (Xcode의 import 부분을 정렬하는 단축키 만들기)
* 참고
https://gist.github.com/trusktr/1e5e516df4e8032cbc3d
https://www.marcosantadev.com/manage-plist-files-plistbuddy/
'iOS 응용 (swift)' 카테고리의 다른 글
Comments