본문으로 건너뛰기
피드

옛날 USB 노브 Griffin PowerMate를 최신 macOS에서 다시 살리는 드라이버

open-source 약 5분
vote
0
댓글
북마크

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

  • 1

    PowerMate의 벤더 아이디는 0x077d, 제품 아이디는 0x0410이다

  • 2

    드라이버는 6바이트 USB HID 리포트에서 버튼 상태와 회전 델타를 읽는다

  • 3

    PowerMateAgent는 회전을 스크롤이나 방향키로, 클릭을 마우스 클릭이나 Return 키로 매핑한다

  • 4

    메뉴 감지는 macOS Accessibility API를 사용하며 Input Monitoring 권한이 필요하다

  • 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를 쓰면 일반 앱에서도 바로 쓸 수 있는 입력 장치가 됨

    • 회전은 기본적으로 세로 스크롤로 매핑됨
    • 메뉴나 서브메뉴가 포커스된 상태에서는 회전이 위아래 방향키로 바뀜
    • 짧게 누르면 왼쪽 클릭, 길게 누르면 오른쪽 클릭으로 동작함

💡

> 메뉴와 서브메뉴에서 자연스럽게 쓰려면 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를 거쳐야 하거든요.

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

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

댓글

댓글

댓글을 불러오는 중...

open-source

차세대 데이터 파일 포맷 F3, 디코더를 Wasm으로 파일 안에 넣자는 실험

F3는 Parquet, ORC 같은 기존 컬럼형 파일 포맷의 한계를 줄이기 위해 제안된 오픈소스 연구 프로토타입이다. 핵심 아이디어는 데이터와 메타데이터뿐 아니라 WebAssembly(Wasm) 디코더까지 파일에 함께 넣어, 새 인코딩 방식이 나와도 플랫폼 호환성을 유지하자는 것이다.

open-source

에코백스, 1,134만원짜리 오픈소스 가정용 로봇 ‘빠졔’ 판매 시작

중국 청소 로봇 기업 에코백스가 첫 오픈소스 로봇 ‘빠졔’를 정식 판매하기 시작했음. 가정용 로봇을 개발자가 직접 조율하고 프로그래밍하고 2차 개발할 수 있게 만든 플랫폼이고, 가격은 4만9990위안, 약 1,134만원 수준임.

open-source

BMW·폭스바겐·스텔란티스, 자동차 소프트웨어 오픈소스 동맹 키운다

BMW, 폭스바겐그룹, 스텔란티스 등 유럽 완성차 업체들이 소프트웨어 정의 자동차(SDV) 경쟁력 강화를 위해 오픈소스 공동 개발에 나서고 있다. 독일자동차산업협회 주도 프로젝트에는 완성차, 부품사, 반도체 기업 등 30개 이상 기업이 참여하며 차량 OS, 미들웨어, 통신 소프트웨어 같은 공통 영역을 함께 만든다. 기대 효과는 개발·유지 비용 최대 40% 절감, 차량 개발 기간 최대 30% 단축이다.

open-source

AI 시대 오픈소스, ‘공개됐으니 막 써도 됨’은 진짜 위험한 착각

생성형 AI 서비스가 오픈소스 코드, 모델, 데이터셋, 외부 API를 섞어 쓰면서 라이선스와 이용 조건 관리가 훨씬 복잡해졌다는 내용이다. 공개된 기술이라도 저작권과 사용 조건은 남아 있고, 기업은 제품 안에 무엇이 들어갔는지 지속적으로 추적해야 한다.

open-source

에코백스, 1,134만원짜리 오픈소스 가정용 로봇 ‘빠졔’ 출시

중국 청소 로봇 기업 에코백스가 첫 오픈소스 로봇 ‘빠졔’를 판매하기 시작했다. 개발자가 로봇의 동작, 조작, 환경 인식 기능을 기반으로 임바디드 인텔리전스 애플리케이션을 만들고 상용화할 수 있게 하겠다는 전략이다.