---
title: "옛날 USB 노브 Griffin PowerMate를 최신 macOS에서 다시 살리는 드라이버"
published: 2026-05-11T21:35:38.000Z
canonical: https://jeff.news/article/2625
---
# 옛날 USB 노브 Griffin PowerMate를 최신 macOS에서 다시 살리는 드라이버

Griffin PowerMate라는 오래된 USB 노브를 최신 macOS에서 다시 쓸 수 있게 해주는 작은 Swift 드라이버가 공개됐어. USB HID 리포트를 읽어 회전, 클릭, 롱프레스, LED 제어를 앱 이벤트나 스크롤, 키 입력으로 매핑하는 구조야.

- Griffin PowerMate라는 옛날 USB 노브를 최신 macOS에서 다시 쓰게 해주는 드라이버가 나왔음
  - PowerMate는 돌리고 누를 수 있는 작은 물리 노브고, 바닥에는 밝기 조절 가능한 파란 LED가 있음
  - 원래는 영상, 오디오 작업에서 스크롤 가능한 데스크톱 컨트롤러처럼 쓰라고 나온 장치임

- 드라이버가 하는 일은 단순하지만 꽤 깔끔함
  - PowerMate의 USB 식별자는 VID 0x077d, PID 0x0410
  - USB HID로 장치를 열고 6바이트 리포트를 읽어서 버튼과 회전 이벤트를 뽑아냄
  - Byte 0은 버튼 상태, Byte 1은 회전 델타로 쓰이며 회전 속도는 리포트 사이 시간 차이로 계산함

- macOS에서는 장치가 버스에 보여도 기본 동작은 없음
  - 그래서 이 라이브러리가 장치를 선점하고 앱으로 이벤트를 전달함
  - 데모는 `swift build`, `swift run PowerMateDemo`로 실행하고, 노브를 돌리거나 누르면 이벤트를 출력함

- PowerMateAgent를 쓰면 일반 앱에서도 바로 쓸 수 있는 입력 장치가 됨
  - 회전은 기본적으로 세로 스크롤로 매핑됨
  - 메뉴나 서브메뉴가 포커스된 상태에서는 회전이 위아래 방향키로 바뀜
  - 짧게 누르면 왼쪽 클릭, 길게 누르면 오른쪽 클릭으로 동작함

> [!TIP]
> 메뉴와 서브메뉴에서 자연스럽게 쓰려면 macOS 설정에서 Accessibility 권한을 줘야 함. 이벤트를 다른 앱에 보내는 구조라 Input Monitoring 권한도 필요함.

- LED도 피드백 채널로 쓸 수 있음
  - 노브를 돌리는 동안 LED가 맥동하고, 대기 상태에서는 어둡게 내려감
  - 버튼을 누르는 동안은 완전히 켜지는 식으로 상태를 표현함
  - `setLEDBrightness`로 0부터 255까지 정적 밝기를 줄 수 있고, 내장 펄스 모드도 제어 가능함

- 라이브러리로 붙여서 자기 앱에 넣는 것도 가능함
  - Swift Package 의존성으로 `PowerMateDriver`를 추가하고 `onRotate`, `onButtonDown`, `onButtonUp` 콜백을 연결하면 됨
  - 회전은 스크롤, 볼륨, 미디어 키, 자체 앱 명령 등 원하는 동작으로 매핑 가능함

- 제약도 명확함
  - 드라이버가 `kIOHIDOptionsTypeSeizeDevice`로 장치를 독점해서 한 번에 한 프로세스만 PowerMate를 사용할 수 있음
  - 다른 오래된 PowerMate 앱이 장치를 잡고 있으면 LED 제어나 입력 수신이 실패할 수 있음
  - 요구 환경은 macOS 13 이상, Swift 5.9 이상임

---
## 기술 맥락

- 여기서 재미있는 선택은 오래된 하드웨어를 새 프로토콜로 포장한 게 아니라, 기존 USB HID 리포트를 그대로 읽어서 현대 macOS 입력 이벤트로 변환했다는 점이에요. 장치 펌웨어를 건드릴 수 없으니 운영체제 쪽에서 해석 계층을 만든 거죠.

- macOS 권한 모델 때문에 단순 드라이버만으로는 끝나지 않아요. 다른 앱에 스크롤이나 클릭 이벤트를 보내려면 Input Monitoring이나 Accessibility 권한이 필요하고, 메뉴 상태를 알기 위해서도 접근성 API를 거쳐야 하거든요.

- 장치를 독점으로 여는 것도 의도적인 선택이에요. 여러 프로세스가 같은 노브 입력을 동시에 읽으면 클릭이나 회전이 중복 처리될 수 있어서, 하나의 에이전트가 장치를 잡고 시스템 이벤트로 뿌리는 구조가 더 예측 가능해요.

## 핵심 포인트

- PowerMate의 벤더 아이디는 0x077d, 제품 아이디는 0x0410이다
- 드라이버는 6바이트 USB HID 리포트에서 버튼 상태와 회전 델타를 읽는다
- PowerMateAgent는 회전을 스크롤이나 방향키로, 클릭을 마우스 클릭이나 Return 키로 매핑한다
- 메뉴 감지는 macOS Accessibility API를 사용하며 Input Monitoring 권한이 필요하다

## 인사이트

엄청난 신기술은 아니지만, 오래된 하드웨어를 현대 OS 권한 모델과 HID API에 맞춰 되살리는 사례라 꽤 실용적임. macOS 자동화 도구나 물리 입력 장치 만드는 개발자한테는 참고할 디테일이 많음.
