2017-11-05 12 views
1

단일 보드 컴퓨터 (BeagleBone Black 또는 BeagleBoard X15)를 통해 Mac에 연결하는 작업을하고 있습니다. USB OTG를 누른 다음 기본 마우스/터치 입력 (포인터 좌표 및 왼쪽/오른쪽 클릭 이벤트)을 제공합니다.IOKit : USB-OTG 장치에 좌표 입력을 제공하는 MacOS 장치 인스턴스 만들기

이 프로세스는 기술적으로 마우스 (정확한, 마우스 좌표를받는 터치 스크린 스타일의 장치)를 연결하고 일반 HID 입력을 MacOS에 전달하는 것과 매우 유사해야합니다. 따라서 IOKit의 복잡성은 거의 필요하지 않습니다. 커널 확장을 작성해야한다고 생각하지 않습니다. 나는 단지 MacOS가 이미 일반적인 커널 확장을 가지고있는 HID의 인스턴스를 생성 할 수 있어야한다.

그래서 장치 인스턴스를 만들고 입력을 제공하는 방법을 파악하기 위해 IOKit을 탐색하고 있습니다. 그러나 IOKit에 관해 거의 모든 내용을 읽으려면 새로운 커널 확장 및 서비스 등을 만들고 등록해야합니다. 아무도 내 프로젝트에 밀접하지 않습니다.

지금까지 I/O 레지스트리 탐색기와/System/Library/Extensions의 내용 만 관련성이 있습니다. AppleDHIDMouse.kext와 같은 몇 가지 항목이 유망 해 보입니다. 그러나 필자는 USB 연결 장치가 커널 확장과 연결되고 인스턴스를 생성하며 명령을 보낼 수있는 방법을 찾아 낼 수는 없습니다.

어떤 도움이 필요합니까? 미리 감사드립니다.

답변

0

기기가 USB HID와 완벽하게 호환되므로 Mac 측에서 코드가 전혀 필요하지 않거나 커널 확장을 만들어야합니다.

얼마나 멀리 받았습니까? 귀하의 장치는 ioreg/IORegistryExplorer에서 어떤 모습입니까? (후자는 "Xcode 추가 도구"에서 제공되며 https://developer.apple.com/download/more/에서 다운로드 가능)

USB 장치의 인터페이스가 HID로보고됩니까? (bInterfaceClass 3) 장치 자체는 일반적으로 복합 장치 (bDeviceType 0)로보고합니다. bInterfaceProtocol 및 bInterfacSubClass는 HID 컨텍스트에서 의미를 정의했으며 "태블릿"스타일 장치의 경우 모두 0이어야합니다. 그 자리에, macOS HID 장치로 귀하의 장치를 데리러하고 내장 HID 장치 드라이버 중 하나를 사용하여 그것을 운전하려고합니다.

HID 장치의 작동 방식은 장치의 "보고서 설명자"를 통해 정의 된 유연한 형식/레이아웃의 이벤트 데이터 구조 인 "보고서"를 사용하는 것입니다. 장치에있는 버튼, 입력 축 등이 정의되어 있습니다.

macOS에서 작동하는 USB "태블릿"장치 (절대 좌표 지정 장치)의 예로는 code for the USB Tablet device that Qemu emulates을 확인하십시오. 이는 자신의 장치의 보고서 설명자를 시작하는 좋은 출발점이 될 수 있습니다.

장치가 일반 USB HID 규칙을 따르지 않고 일부 사용자 지정 프로토콜을 사용하는 경우 IOHIDDevice 하위 클래스를 구현할 가능성이 큰 사용자 지정 kext가 필요합니다. 이러한 드라이버의 예로는 표준 USB HID 장치처럼 동작하지 않는 open source Mac driver for the Xbox 360's game controller이 있습니다.