키보드 › fn 키를 누를 때 실행할 동작
입력 소스 변경
fn 키 자체는 그대로 두고, 눌렀을 때의 동작만 "입력 소스 변경"으로 바꿉니다.
macOS Sequoia 15.7구름 입력기 1.13실습실 iMac
관리자 권한 없이, System Settings 를 열지 않고, 로그아웃 없이.
fn 키 동작 · Caps Lock → fn · 구름 입력 소스, 세 가지를 한 번에 설정합니다.
curl -fsSL https://newids.github.io/imac-setup/iMac-setup.sh | sh
로그인 뒤 터미널(Terminal)을 열고 붙여 넣으세요. 세벌식이 필요하면 실행 절의 다른 명령을 쓰세요.
키를 눌러 보세요 — 배열이 둘 이상이면 순서대로 돕니다
01
System Settings 에서 직접 바꾸면 세 화면을 오가야 하는 항목입니다. 스크립트는 System Settings 가 쓰는 위치와 형식 그대로 저장하고, 즉시 적용까지 같은 경로로 합니다.
키보드 › fn 키를 누를 때 실행할 동작
입력 소스 변경
fn 키 자체는 그대로 두고, 눌렀을 때의 동작만 "입력 소스 변경"으로 바꿉니다.
키보드 단축키 › 보조 키 › Caps Lock 키
fn 기능
Caps Lock 이 fn 이 되므로, 위 설정과 합쳐져 Caps Lock 한 번이 곧 한영 전환이 됩니다.
텍스트 입력 › 입력 소스
ABC + 구름 입력기
두벌식은 항상 포함되고, 요청한 배열(세벌식 최종 등)이 추가됩니다. 구름 "로마자"는 뺍니다.
02
로그인한 뒤 터미널(Terminal)을 열고 아래 한 줄을 붙여 넣습니다. 원하는 배열 조합을 고르세요.
curl -fsSL https://newids.github.io/imac-setup/iMac-setup.sh | sh
구름 입력기 두벌식만 설정합니다. 이미 세벌식을 넣었다면 이 명령으로 다시 두벌식만 남깁니다.
han2)은 항상 포함됩니다. 로그인 에이전트가 두벌식을 강제로 켜기 때문에, 목록에 없으면 로그인 때마다 확인 창이 뜹니다.03
명령 뒤에 붙이는 이름입니다. 설치된 구름 입력기가 제공하는 정확한 목록은 --list 로 확인하세요.
| 이름 | 배열 | 비고 |
|---|---|---|
han2 | 두벌식 | 기본 항상 포함 |
han3final | 세벌식 최종 | |
han390 | 세벌식 390 | |
han3noshift | 세벌식 순아래 | |
han3finalnoshift | 세벌식 최종 순아래 | |
han3-2011 han3-2012 | 세벌식 2011 / 2012 | |
han2classic han3classic | 두벌식 옛글 / 세벌식 옛글 | |
hanahnmatae | 안마태 | |
system | 로마자 | 추가하지 마세요 영문은 ABC 로 입력합니다 |
hanroman | 한글 로마자 | 로마자로 한글을 조합하는 배열. 영문 입력용이 아닙니다 |
qwerty dvorak colemak | 영문 배열 | 제거 예정 구름 입력기에서 제거 예정 |
04
0. 로그인 초기화 완료 대기 … 로그인 에이전트(kr.codyssey.gureum.init) 실행 중 (최대 180초).... / 로그인 초기화 완료 (8초 대기) 1. fn 키를 누를 때 실행할 동작 -> 입력 소스 변경 / AppleFnUsageType = 1 2. 보조 키: Caps Lock -> fn 기능 / modifiermapping.1452-591-0 저장 / 키보드 1대에 즉시 적용 3. 입력 소스: 구름 입력기 / org.youknowone.inputmethod.Gureum.han2 켜짐 / org.youknowone.inputmethod.Gureum.han3final 켜짐 완료. 세 항목 모두 지금 적용되었고 재로그인 후에도 유지됩니다.
실습실 iMac 은 로그인 직후 관리자 에이전트가 구름 입력기를 띄우고 swift 로 두벌식을 강제 선택합니다. 이 작업이 끝나기 전에 설정을 바꾸면 나중에 끝나는 쪽이 입력 소스 목록을 덮어써서 추가한 배열이 사라집니다.
"swift 이(가) 서드파티 입력 방법 '구름 입력기'를 활성화하려고 합니다" 창입니다. 관리자 에이전트가 API(TISEnableInputSource)로 두벌식을 켤 때 macOS 가 묻는 것으로, 두벌식이 이미 서드파티 입력 소스 목록에 들어 있으면 뜨지 않습니다. 이 스크립트를 한 번 실행해 두면 목록에 들어가므로 다음 로그인부터는 뜨지 않아야 합니다. 관리자 에이전트 자체는 이 스크립트에서 바꿀 수 없습니다.
05
실행 중인 앱과 메뉴 막대에도 반영됨 이 나와야 합니다. 이 줄이 나오면 이미 열려 있던 앱에서도 바로 전환됩니다.defaults export com.apple.inputsources - # 구름 입력기 목록
defaults read com.apple.HIToolbox AppleFnUsageType # 1 이면 입력 소스 변경
defaults -currentHost read -g | grep -A4 modifiermapping # Caps Lock -> fn (정수 값)
plutil -p ~/Library/Preferences/com.apple.inputsources.plist 는 아직 디스크에 내려가지 않은 옛 내용을 보여 줄 수 있습니다. 확인은 위처럼 defaults export 로 하세요.
06
대부분은 스크립트를 다시 실행하면 정리됩니다. 증상을 눌러 조치를 보세요.
예전 방식으로 com.apple.HIToolbox 에 들어간 항목이 원인입니다. 스크립트를 다시 실행하면 정리됩니다.
로그인 때 macOS 가 자동으로 켠 것입니다. 스크립트를 다시 실행하면 꺼집니다.
스크립트를 다시 실행하고 "키보드 N대에 즉시 적용" 이 나오는지 확인하세요. 안 나오면 로그아웃 후 다시 로그인합니다.
실행 중인 앱에 전파되지 않은 것입니다. 스크립트를 다시 실행하고 마지막 줄에 실행 중인 앱과 메뉴 막대에도 반영됨 이 나오는지 확인하세요.
스크립트를 다시 실행합니다. 그래도 안 되면 로그아웃 후 다시 로그인합니다.
구름 입력기(Gureum.app)가 설치되어 있지 않습니다관리자에게 설치를 요청하세요. 또는 ~/Library/Input Methods/ 에 Gureum.app 을 복사한 뒤 재로그인합니다.
… 구름 입력기에 없는 배열입니다--list 로 이름을 확인하세요.
07
defaults write com.apple.HIToolbox AppleFnUsageType -int 2
defaults -currentHost delete -g com.apple.keyboard.modifiermapping.1452-591-0
defaults delete com.apple.inputsources AppleEnabledThirdPartyInputSources
launchctl kickstart -k gui/$(id -u)/com.apple.TextInputMenuAgent
Caps Lock 매핑은 로그아웃 후 다시 로그인하면 원래대로 돌아옵니다. 입력 소스는 System Settings › 키보드 › 입력 소스 › 편집에서도 정리할 수 있습니다.
08
System Settings 가 쓰는 위치와 형식에 그대로 맞추고, 즉시 적용도 System Settings 와 같은 경로를 씁니다.
com.apple.HIToolbox 의 AppleFnUsageType 을 1 로 씁니다.
ByHost .GlobalPreferences 의 com.apple.keyboard.modifiermapping.<VendorID>-<ProductID>-<CountryCode> 에 정수 값으로 씁니다. 문자열로 저장되면 시스템이 무시합니다. 로그인 때 시스템이 이 값을 읽어 키보드에 적용합니다.
로그인 때 시스템이 키보드 서비스에 넣는 속성 HIDKeyboardModifierMappingPairs 를 지금 바로 넣습니다. 이 속성은 HID 이벤트 시스템의 monitor 클라이언트로만 넣을 수 있어서 hidutil 로는 안 되고, JXA(osascript -l JavaScript)로 IOKit 함수를 직접 호출합니다. hidutil 의 UserKeyMapping 으로 Caps Lock 을 fn 으로 바꾸면 키는 바뀌지만 fn 의 "입력 소스 변경" 동작이 일어나지 않습니다.
Sequoia 는 서드파티 입력기를 com.apple.inputsources 의 AppleEnabledThirdPartyInputSources 에 저장합니다 (입력기 항목 + 배열 항목). 스크립트는 이 목록을 "구름 입력기 + 두벌식 + 지정한 배열"로 쓰고, 예전 방식으로 com.apple.HIToolbox 의 AppleEnabledInputSources 에 들어간 구름 항목은 지웁니다 (양쪽에 다 있으면 설정 화면에 중복으로 나타남).
설정 파일만 고치면 이미 떠 있는 앱과 메뉴 막대는 목록을 다시 읽지 않습니다. 변경 알림을 보내도, TextInputMenuAgent 를 다시 띄워도 마찬가지입니다. 그 상태에서 메뉴로 구름을 고르면 앞 앱이 "켜지지 않은 소스"로 보고 무시합니다. 전파되는 것은 TIS API 호출뿐이라서, 스크립트는 쓰지 않는 구름 배열 하나를 목록에 같이 써 둔 뒤 TISDisableInputSource 로 끕니다. 끄는 순간 모든 프로세스가 목록 전체를 다시 읽습니다. 이미 꺼져 있는 배열을 끄면 아무 일도 일어나지 않으므로, 반드시 켜져 있는 것을 끕니다.
구름 입력기에서 기본으로 켜지도록 표시된 배열은 두벌식과 로마자 둘뿐이라, 관리자 에이전트가 구름 입력기를 켜면 macOS 가 로마자까지 같이 켭니다. 로마자는 영문 자판 자리를 ABC 대신 차지해 메뉴 막대에 "로마자"가 뜨고 앱의 입력 소스 전환이 어긋납니다. 스크립트는 이것을 위의 전파용 배열로 쓰면서 끄고, 요청하지 않았는데 켜져 있는 구름 배열이 하나도 남지 않을 때까지 끄기를 되풀이합니다.
TISEnableInputSource API 는 쓰지 않습니다. 이 API 는 서드파티 배열에 대해 System Settings 밖에서는 조용히 무시되거나, 호출한 프로그램 이름으로 "서드파티 입력 방법을 활성화하려고 합니다" 확인 창을 띄웁니다.
/bin/sh(bash 3.2 POSIX 모드)에서 동작하도록 배열과 프로세스 치환을 쓰지 않고, curl | sh 로 다운로드가 끊겨도 부분 실행되지 않도록 전체를 main() 에 담아 마지막 줄에서 호출합니다.
09
구름 입력기 자체의 ⇧Space 한영 전환은 구름의 "쿼티" 배열(제거 예정)을 추가해야 동작합니다. 이 스크립트는 그 대신 macOS 의 fn/Caps Lock 입력 소스 전환을 씁니다.