device_properties(device_id device_id,
                    IOHIDDeviceRef device) {
    device_id_ = device_id;

    pqrs::osx::iokit_hid_device hid_device(device);

    vendor_id_ = hid_device.find_vendor_id();
    product_id_ = hid_device.find_product_id();
    location_id_ = hid_device.find_location_id();
    manufacturer_ = hid_device.find_manufacturer();
    product_ = hid_device.find_product();
    serial_number_ = hid_device.find_serial_number();
    transport_ = hid_device.find_transport();
    is_keyboard_ = iokit_utility::is_keyboard(device);
    is_pointing_device_ = iokit_utility::is_pointing_device(device);

    if (product_ && is_keyboard_ && is_pointing_device_) {
      if ((*product_).find("Apple Internal ") != std::string::npos) {
        if (*is_keyboard_ == true && *is_pointing_device_ == false) {
          is_built_in_keyboard_ = true;
        }
        if (*is_keyboard_ == false && *is_pointing_device_ == true) {
          is_built_in_pointing_device_ = true;
        }
      }
    }

    is_karabiner_virtual_hid_device_ = iokit_utility::is_karabiner_virtual_hid_device(device);

    update_device_identifiers();
  }
Exemple #2
0
void
dump_cs_device(usb_descriptor_t *desc, int interface)
{
	switch (usbdev.class) {
	case UICLASS_HID:
		hid_device(desc, interface);
		break;
	default:
		dump_descriptor(desc, "\t\t");
	}
}