@startuml components package "DriverKit driver" { () IOService -- [VirtualHIDDeviceRoot] [VirtualHIDDeviceRoot] --> [VirtualHIDDeviceUserClient] [VirtualHIDDeviceUserClient] --> [VirtualHIDKeyboard] [VirtualHIDDeviceUserClient] --> [VirtualHIDPointing] } package "Karabiner-VirtualHIDDevice-Daemon" { () "UNIX domain socket" as serversock serversock -- [virtual_hid_device_service_server] [virtual_hid_device_service_server] --> [io_service_client] [io_service_client] --> () IOService } package "Client app" { [pqrs::karabiner::driverkit::virtual_hid_device_service::client] --> serversock } @enduml