macOS 메뉴바 앱

MacBook을
iMac의 블루투스 키보드로.

iMac에는 아무것도 설치하지 않습니다. 블루투스 페어링 한 번이면 MacBook의 키보드와 트랙패드를 iMac에서 그대로 씁니다. 관리자 권한이 없는 관리형 iMac에서도 됩니다.

macOS 13 이상 · Apple 실리콘 · 무료, MIT

소개

키보드 하나로 두 대를 씁니다

MacBook을 그대로 iMac 앞에 놓고 쓰는 상황을 위해 만들었습니다. 키·트랙패드를 iMac으로 보내고, 단축키 하나로 돌아오고, 자리를 옮겨도 다시 붙습니다.

키보드 전달

MacBook에서 치는 모든 키가 iMac으로 갑니다. Caps Lock 한/영 전환은 iMac의 보조 키에서 이 MacBook을 골라 한 번 지정합니다.

트랙패드 전달

이동·클릭·두 손가락 스크롤을 iMac의 마우스로 전달합니다. 포인터 배율은 1×~4×. iMac 입력 중에는 MacBook 포인터가 제자리에 숨겨져 두 화면에서 동시에 움직이지 않습니다.

한 번에 전환

⌥⌘K로 MacBook ↔ iMac 입력을 오갑니다. iMac 입력 중에는 메뉴바 아래 주황색 상자가 떠 있어 지금 어디에 치고 있는지 헷갈리지 않습니다.

잠자기 뒤에도

iMac이 깨어나면 다시 붙고, 쓰던 중이었다면 iMac 입력으로 자동 복귀합니다. 로그인 화면에서 바로 암호를 칠 수 있습니다.

절전

iMac 입력 중에는 MacBook 화면을 어둡게 하거나 끕니다. 돌아오면 원래 밝기로 복원합니다.

기기 목록

연결한 적 있는 iMac이 메뉴에 아이콘과 이름으로 남습니다. 자리를 옮겨 다른 iMac에서 연결해 오면 그 iMac을 새 대상으로 기억합니다.

iMac에는 설치 없음

iMac 쪽에는 프로그램도, 관리자 권한도 필요 없습니다. iMac은 BTS Key를 평범한 블루투스 키보드·마우스로 봅니다.

설치

내려받아 끌어 놓으면 끝

요구 사항: macOS 13 Ventura 이상(Apple 실리콘 Mac), 블루투스. iMac 쪽은 블루투스만 있으면 어느 macOS든 됩니다.

DMG 내려받기

위의 macOS용 다운로드 버튼을 누르면 최신 버전 BTSKey-<버전>.dmg를 받습니다. 첨부된 .sha256으로 무결성을 확인할 수 있습니다.

Applications로 끌어 놓기

DMG를 열고 BTS Key 아이콘을 Applications 폴더로 끌어 놓습니다.

처음 한 번, control-클릭으로 열기

응용 프로그램에서 BTS Key를 control-클릭(오른쪽 클릭) → 열기 → 열기. Apple 개발자 인증서로 서명·공증되지 않은 앱이라 첫 실행 때만 이 절차가 필요합니다.

첫 실행 안내 따라가기

앱이 안내 창을 띄웁니다. Bluetooth·손쉬운 사용·입력 모니터링 권한을 허용하고 iMac과 페어링하면 준비가 끝납니다. 안내는 메뉴 → 도움말 → 사용 방법 보기로 언제든 다시 볼 수 있습니다.

"확인되지 않은 개발자" 경고가 뜨면 그냥 닫지 말고 control-클릭 → 열기를 쓰거나, 시스템 설정 → 개인정보 보호 및 보안 아래쪽의 그래도 열기를 누르세요.

사용 방법

페어링 한 번, 그다음은 단축키

네 단계면 됩니다. 권한과 페어링은 처음 한 번, 연결은 iMac이나 MacBook 어느 쪽에서든, 전환은 ⌥⌘K.

권한 (처음 한 번)

첫 실행 안내가 Bluetooth·손쉬운 사용·입력 모니터링 권한을 차례로 요청합니다. 세 가지가 모두 허용돼야 키와 트랙패드를 가로챌 수 있습니다. 메뉴 → 도움말 → 권한 확인에서 상태를 봅니다.

페어링 (처음 한 번)

MacBook의 시스템 설정 → Bluetooth 화면을 열어 둔 채로, iMac의 시스템 설정 → Bluetooth에서 이 MacBook 옆 연결을 누릅니다. MacBook은 그 화면이 열려 있는 동안에만 검색됩니다. 양쪽에 같은 숫자가 보이면 승인합니다. 관리자 권한은 필요 없습니다.

연결

앱이 5초 안에 새 페어링을 알아채고 스스로 연결합니다. 그 뒤로는 iMac의 Bluetooth 설정에서 BTS Key 옆 연결을 누르거나, MacBook 메뉴바의 키보드 아이콘 → iMac 이름을 누릅니다. 연결되면 아이콘이 외곽선 키보드로 바뀌고 화면 가운데에 "연결됨"이 뜹니다.

전환

⌥⌘K로 iMac 입력으로 넘어가고, 같은 키로 돌아옵니다. iMac 입력 중에는 메뉴바 아래 주황색 상자가 떠 있고 MacBook 포인터는 제자리에 숨겨집니다. 화면 잠금·잠자기·연결 끊김 때는 자동으로 MacBook 입력으로 돌아오므로 MacBook을 조작하지 못하는 일이 없습니다.

메뉴 구성

  • 상태 줄 — 연결 상태와 입력이 가는 곳. 시스템 설정에는 "연결됨"인데 키보드로는 아직 쓸 수 없을 때 "링크 연결됨 · 키보드 채널 없음"으로 구분해 보여 줍니다.
  • 기기 목록 — 연결한 적 있는 컴퓨터(최근 8대)와 새 기기·다시 페어링됨 같은 표시. 이름을 누르면 바로 연결. "다른 페어링된 기기"에 아직 연결한 적 없는 컴퓨터.
  • 연결 · 전환 · 지금 다시 연결 — 자동 재시도가 멈춘 뒤에는 "지금 다시 연결"이 나타납니다.
  • 설정 — 포인터 배율(1×~4×), iMac 입력 중 절전, Caps Lock → iMac(iMac마다 따로 기억), 재연결 시 자동 복귀, 로그인 시 자동 실행.
  • 도움말 — 사용 방법 보기, 권한 확인, 문제 해결 안내, 진단 로그 내보내기, 지원 웹사이트, 문의하기.
  • BTS Key 정보 — 버전과 지원 연락처.

한/영 전환

  • iMac에서 한 번 설정 — 시스템 설정 → 키보드 → 키보드 단축키 → 보조 키에서 맨 위 "키보드 선택"을 눌러 이 MacBook을 고르고, Caps Lock 키를 🌐 fn 기능으로 바꿉니다.
  • Caps Lock 그대로 (기본) — 앱은 Caps Lock을 그대로 보내고, 위 설정이 한/영을 바꿉니다.
  • 🌐 키로 바꿔 보내기 — iMac이 이 MacBook을 Apple 키보드로 인식할 때만 동작합니다. 시험한 iMac(macOS 15)은 그렇게 인식하지 않았습니다.
  • ⌃스페이스로 바꿔 보내기 — iMac의 "이전 입력 소스 선택" 단축키가 기본값일 때 씁니다.
  • 설정이 초기화되면 — 메뉴 → 설정 → Caps Lock → iMac → 한/영 전환 설정 방법이 안내 쪽을 바로 엽니다. MacBook의 한/영도 함께 바뀌는 것은 정상이며, iMac 입력을 마치면 원래대로 돌려놓습니다.

동작 원리

진짜 블루투스 키보드인 척합니다

MacBook이 Bluetooth Classic HID 장치(키보드+마우스 조합)를 흉내 냅니다. 소프트웨어 KVM과 달리 네트워크도, iMac 쪽 프로그램도 필요 없습니다.

서비스 게시

IOBluetooth로 HID 서비스 레코드(SDP)를 게시합니다. 그러면 iMac이 페어링된 키보드에 하듯 L2CAP 제어·인터럽트 채널을 열어 옵니다. MacBook에서 먼저 열 수도 있습니다.

입력 가로채기

iMac 입력 모드에서는 CGEvent 탭이 키·트랙패드 이벤트를 가로채 USB HID 리포트로 바꿉니다. 탭은 전용 스레드에서 돌아, 블루투스 쪽이 멈춰도 MacBook 입력은 멈추지 않습니다.

리포트 전송

리포트는 인터럽트 채널로 8ms 단위로 보냅니다. 마우스 델타는 16비트라 빠른 스와이프도 뭉개지지 않습니다.

왜 이 설계인지, 무엇을 시험했는지는 분석·설계 문서와 연결 과정 감사 기록에 있습니다.

진행 상황

2026년 9월 30일 기준

macOS용은 실제 iMac에서 연결·재연결·한/영 전환까지 확인해 릴리스했습니다. 그 밖의 항목은 아래와 같이 정리했습니다.

항목상태비고
키보드·트랙패드 전달, 입력 전환완료iMac 두 대 이상에서 확인
새 iMac 자동 감지·연결완료페어링 뒤 5초 안에, 앱이 꺼져 있던 동안의 페어링도
끊김 뒤 재연결 규칙완료자동 1회, iMac이 해제하면 0회, 그 뒤는 메뉴에서
iMac이 시작하는 연결(잠자기 복귀, "연결")완료iMac의 시도부터 약 25초
Caps Lock 한/영 전환완료iMac의 보조 키 설정 한 번 필요
화면 표시(HUD)·첫 실행 안내완료게이지가 0이 되면 사라짐, 닫기 단추
Windows용분석 완료개발 전. 아래 참고
파일·클립보드 전달범위 제외iMac 쪽 설정이나 별도 앱 조작이 필요해 별도 프로젝트로

알려진 제한

  • 트랙패드는 마우스로 보입니다. 핀치·세 손가락 스와이프 같은 멀티터치 제스처는 전달되지 않습니다.
  • fn 키 조합(밝기·음량 등)은 전달되지 않습니다.
  • Apple 실리콘 Mac 전용입니다. Intel Mac은 지원하지 않습니다.
  • 첫 실행 때 Gatekeeper 경고가 뜹니다. Apple 개발자 인증서가 없기 때문이며, control-클릭 → 열기로 한 번만 넘기면 됩니다.
  • iMac이 먼저 연 연결은 쓰지 못합니다. macOS가 앱에 넘겨주지 않아, 앱은 그 연결이 끊어진 뒤 MacBook 쪽에서 다시 엽니다.
  • 꺼진 iMac에 연결을 시도하면 15초 뒤에야 실패로 처리됩니다.

실기 시험 절차와 결과는 시험 문서에, 블루투스 연결의 층과 앱의 역할은 연결 모델 문서에 있습니다.

Windows 개발 계획

같은 규격, 다른 전송 계층

Windows용은 분석까지 마쳤고 개발은 시작하지 않았습니다. 결론은 "리포트 규격과 로직은 Swift 단일 소스, 전송·입력 캡처·UI는 C#/.NET으로 별도 구현"입니다. 공용 코어는 이미 Apple 외 플랫폼에서 빌드됩니다.

계층macOSWindows공유
리포트 규격·인코딩·키코드·상태 머신순수 Swift순수 로직가능
블루투스 전송Classic HID (IOBluetooth)BLE HID over GATT (WinRT GattServiceProvider)인터페이스만
입력 캡처CGEvent 탭WH_KEYBOARD_LL / WH_MOUSE_LL 훅 + ClipCursor별도
UI메뉴바 (AppKit)트레이 (C#/.NET)별도

Windows 인박스 블루투스 스택에는 Classic HID 장치 역할 API가 없습니다. 양쪽에서 공개 API로 동작하는 것은 BLE HID over GATT뿐이며, Windows 쪽 어댑터가 주변장치(peripheral) 역할을 지원해야 합니다. 저가 USB 어댑터 다수가 지원하지 않습니다.

완료

0. 타당성 분석

Windows 인박스 스택에 Classic HID 장치 역할이 없고 BLE HID 서비스는 막혀 있지 않음을 Microsoft 문서로 확인. 공개 참고 구현(windows-ble-hid, MIT)이 macOS 호스트에서 동작한다고 보고하나 재현하지는 않음. 스택 선택지를 다시 비교해 C#/.NET으로 결정.

완료

1. 공용 코어 이식성

macOS 전용 타깃을 분리해 HIDCore와 테스트 134개가 Linux에서 그대로 빌드·통과. Windows에서는 아직 실행하지 않았으며, 설치·빌드 절차는 Windows 빌드 안내에 있음.

계획

2. 대상 Mac에서 검증

참고 구현을 Windows 노트북에서 빌드해 어댑터의 주변장치 역할, Mac 호스트와의 페어링·재연결·잠자기 복귀, 보조 키 설정을 통한 한/영 전환을 확인한다.

계획

3. Windows 전송·캡처·트레이

C#/.NET: WinRT GattServiceProvider 전송, 저수준 키보드·마우스 훅(전용 스레드), 트레이 UI. 코어는 C#으로 옮기고 Swift 코어와 바이트 단위 시험 벡터를 공유한다.

계획

4. 검증과 배포

Windows 10 2004+·11, Intel/ASUS/TP-Link 어댑터, 대상 macOS 13~26. 서명 없는 빌드는 Windows 11 스마트 앱 컨트롤에 막히므로 서명 방법을 정한다.

문제 해결 · 지원

막히면 진단 로그부터

메뉴 → 도움말 → 진단 로그 내보내기가 데스크탑에 텍스트 파일을 만듭니다. 그 파일을 첨부해 이슈를 남겨 주세요.

양쪽 Bluetooth 설정은 "연결됨"인데 앱은 연결 끊김을 반복해요

앱이 HID 서비스를 등록하기 전에 iMac이 연결해 오면 macOS가 그 연결을 대신 받습니다. 앱의 Bluetooth 권한 창에 먼저 응답하고, 메뉴에서 iMac 이름을 눌러 다시 연결하세요. 앱은 등록될 때까지 1초마다 재시도합니다.

Caps Lock으로 한/영이 안 바뀌어요

iMac의 보조 키 설정은 키보드마다 따로 저장됩니다. iMac의 시스템 설정 → 키보드 → 키보드 단축키 → 보조 키에서 맨 위 "키보드 선택"을 눌러 이 MacBook을 고른 뒤 Caps Lock 키를 🌐 fn 기능으로 바꾸세요. "🌐 키를 누를 때"는 "입력 소스 변경"이어야 합니다. iMac의 설정이 초기화되면 다시 합니다.

다른 iMac으로 옮기려면요?

MacBook의 시스템 설정 → Bluetooth 화면을 열어 둔 채로, 새 iMac의 Bluetooth 설정에서 이 MacBook 옆 연결을 눌러 페어링합니다. MacBook은 그 화면이 열려 있는 동안에만 검색됩니다. 앱이 5초 안에 새 페어링을 알아채고 스스로 연결합니다. 이전 iMac에 연결돼 있었다면 목록에만 추가합니다. 앱은 대상이 아닌 iMac을 호출하지 않습니다.

iMac 쪽에서 "연결"을 눌렀는데 몇 초 뒤에야 붙어요

정상입니다. iMac이 직접 연 연결은 macOS가 앱에 넘겨주지 않고, 앱은 그 연결이 끊어진 뒤에야 iMac이 키보드를 찾았다는 것을 알 수 있습니다. 그래서 약 25초 뒤에 MacBook 쪽에서 연결합니다. iMac 화면에는 "연결됨"이 잠깐 떴다가 사라진 뒤 다시 연결됩니다. 더 빨리 쓰려면 MacBook 메뉴의 지금 다시 연결을 누르세요(4~5초).

연결이 끊긴 뒤 계속 다시 시도하나요?

아니요. 4초 뒤 한 번만 자동으로 시도하고 멈춥니다. iMac에서 "연결 해제"를 누른 경우에는 자동으로 시도하지 않습니다. 그 뒤에는 메뉴의 지금 다시 연결을 누르세요. 반복해서 시도하면 MacBook에 연결된 다른 블루투스 기기가 끊기거나 느려지기 때문입니다.

트랙패드가 느려요

메뉴 → 설정 → 포인터 배율을 2×~3×로 올리세요. iMac 쪽 시스템 설정 → 마우스 → 이동 속도도 함께 조정합니다.

앱을 새로 설치했더니 권한을 다시 물어요

서명 인증서가 없는 빌드라 macOS가 버전마다 새 앱으로 봅니다. 손쉬운 사용·입력 모니터링을 다시 허용하면 됩니다.

iMac에서 새 키보드로 인식되지 않아요 (버전 업데이트 후)

iMac은 처음 페어링할 때 받은 키보드 구조를 기억합니다. iMac의 Bluetooth 설정에서 이 MacBook을 삭제하고 다시 페어링하세요.