RFC: WIP: Add ability to register device connection/disconnection callback #299

Merged
DJm00n merged 5 commits from device_notify into connection-callback 2023-05-01 06:20:08 -05:00
DJm00n commented 2021-07-05 05:51:35 -05:00 (Migrated from github.com)

I have implemented two new methods:

typedef int hid_hotplug_callback_handle;

typedef enum {
	HID_API_HOTPLUG_EVENT_DEVICE_ARRIVED = (1 << 0),
	HID_API_HOTPLUG_EVENT_DEVICE_LEFT = (1 << 1)
} hid_hotplug_event;

typedef enum {
	HID_API_HOTPLUG_ENUMERATE = (1 << 0)
} hid_hotplug_flag;

typedef int (HID_API_CALL *hid_hotplug_callback_fn)(
	hid_hotplug_callback_handle callback_handle,
	struct hid_device_info *device,
	hid_hotplug_event event,
	void *user_data);

int HID_API_EXPORT HID_API_CALL hid_hotplug_register_callback(unsigned short vendor_id, unsigned short product_id, int events, int flags, hid_hotplug_callback_fn callback, void *user_data, hid_hotplug_callback_handle *callback_handle)

int HID_API_EXPORT HID_API_CALL hid_hotplug_deregister_callback(hid_hotplug_callback_handle callback_handle)

These could be used to receive notification about HID device connection or disconnection.
I did implement it only for Windows via CM_Register_Notification that is available since Windows 8. Not sure about other platforms.

Any comments/objections are welcomed.

I have implemented two new methods: ```c typedef int hid_hotplug_callback_handle; typedef enum { HID_API_HOTPLUG_EVENT_DEVICE_ARRIVED = (1 << 0), HID_API_HOTPLUG_EVENT_DEVICE_LEFT = (1 << 1) } hid_hotplug_event; typedef enum { HID_API_HOTPLUG_ENUMERATE = (1 << 0) } hid_hotplug_flag; typedef int (HID_API_CALL *hid_hotplug_callback_fn)( hid_hotplug_callback_handle callback_handle, struct hid_device_info *device, hid_hotplug_event event, void *user_data); int HID_API_EXPORT HID_API_CALL hid_hotplug_register_callback(unsigned short vendor_id, unsigned short product_id, int events, int flags, hid_hotplug_callback_fn callback, void *user_data, hid_hotplug_callback_handle *callback_handle) int HID_API_EXPORT HID_API_CALL hid_hotplug_deregister_callback(hid_hotplug_callback_handle callback_handle) ``` These could be used to receive notification about HID device connection or disconnection. I did implement it only for Windows via [CM_Register_Notification](https://docs.microsoft.com/windows/win32/api/cfgmgr32/nf-cfgmgr32-cm_register_notification) that is available since Windows 8. Not sure about other platforms. Any comments/objections are welcomed.
DJm00n commented 2021-07-05 05:54:01 -05:00 (Migrated from github.com)

There is some things to do:

  • add some mutex to make interface_notify_callback() device add/remove thread safe.
  • clean notify_context on hid_exit()
  • add more error checking
There is some things to do: - add some mutex to make `interface_notify_callback()` device add/remove thread safe. - clean `notify_context` on `hid_exit()` - add more error checking
Youw commented 2021-07-05 06:58:23 -05:00 (Migrated from github.com)

Lets make it for the feature branch: https://github.com/libusb/hidapi/tree/connection-callback

Lets make it for the feature branch: https://github.com/libusb/hidapi/tree/connection-callback
mcuee commented 2021-07-07 01:23:26 -05:00 (Migrated from github.com)

This is linked to hotplug support: https://github.com/libusb/hidapi/issues/238

This is linked to hotplug support: https://github.com/libusb/hidapi/issues/238
mcuee commented 2021-07-13 19:30:09 -05:00 (Migrated from github.com)

The function names may need some discussion. Maybe hid_device_callback can be named as hid_device_hotplug_callback. And hid_register_callback can be named as hid_register_hotplug_callback.

The function names may need some discussion. Maybe hid_device_callback can be named as hid_device_hotplug_callback. And hid_register_callback can be named as hid_register_hotplug_callback.
DJm00n commented 2021-07-15 06:00:10 -05:00 (Migrated from github.com)

@mcuee I did some renames:

  • hid_device_callback -> hid_hotplug_callback_fn
  • hid_register_callback -> hid_hotplug_register_callback
  • hid_unregister_callback -> hid_hotplug_deregister_callback
    Now it looks much more like libusb hotplug notifications implementation.
@mcuee I did some renames: - `hid_device_callback` -> `hid_hotplug_callback_fn` - `hid_register_callback` -> `hid_hotplug_register_callback` - `hid_unregister_callback` -> `hid_hotplug_deregister_callback` Now it looks much more like [libusb hotplug notifications implementation](https://libusb.sourceforge.io/api-1.0/group__libusb__hotplug.html#ga5ab3955e2110a3099497a66256fb7fab).
DJm00n commented 2021-07-15 08:45:56 -05:00 (Migrated from github.com)

I have added dynamic load of CM_Register_Notification/CM_Unregister_Notification from cfgmgr32.dll since MinGW-w64 doesn't have them it in its headers: https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-headers/include/cfgmgr32.h

I have added dynamic load of `CM_Register_Notification`/`CM_Unregister_Notification` from `cfgmgr32.dll` since MinGW-w64 doesn't have them it in its headers: https://sourceforge.net/p/mingw-w64/mingw-w64/ci/master/tree/mingw-w64-headers/include/cfgmgr32.h
mcuee commented 2021-07-17 20:19:12 -05:00 (Migrated from github.com)

First test seems to be positive. With hotplug of my Microchip PICkit 2 programmer (single HID device as seen by HIDAPI) and Logitech USB Receiver (6 HID devices as seen by HIDAPI)

click for full run log

C:\work\hid\hidapi_devnotify\windows\x64\Release [device_notify ≡]> .\hidtest.exe
hidapi test/example tool. Compiled with hidapi version 0.11.0, runtime version 0.11.0.
Compile-time version matches runtime version of hidapi.

Device Found
  type: 046d c534
  path: \\?\hid#vid_046d&pid_c534&mi_01&col01#7&383a3a17&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    1
  Usage (page): 0x2 (0x1)

Device Found
  type: 046d c534
  path: \\?\hid#vid_046d&pid_c534&mi_01&col02#7&383a3a17&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    1
  Usage (page): 0x1 (0xc)

Device Found
  type: 046d c534
  path: \\?\hid#vid_046d&pid_c534&mi_01&col03#7&383a3a17&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    1
  Usage (page): 0x80 (0x1)

Device Found
  type: 046d c534
  path: \\?\hid#vid_046d&pid_c534&mi_01&col04#7&383a3a17&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    1
  Usage (page): 0x1 (0xff00)

Device Found
  type: 0488 121f
  path: \\?\hid#dell091a&col01#5&99b72d3&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      40d
  Interface:    -1
  Usage (page): 0x2 (0x1)

Device Found
  type: 8087 0a1e
  path: \\?\hid#intc816&col01#3&36a7043c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      200
  Interface:    -1
  Usage (page): 0xc (0x1)

Device Found
  type: 044e 1212
  path: \\?\hid#vid_044e&pid_1212&col01&col02#7&290aacae&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x6 (0x1)

Device Found
  type: 046d c534
  path: \\?\hid#vid_046d&pid_c534&mi_01&col05#7&383a3a17&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    1
  Usage (page): 0x2 (0xff00)

Device Found
  type: 8087 0a1e
  path: \\?\hid#intc816&col02#3&36a7043c&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      200
  Interface:    -1
  Usage (page): 0xd (0x1)

Device Found
  type: 044e 1212
  path: \\?\hid#vid_044e&pid_1212&col01&col01#7&290aacae&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x2 (0x1)

Device Found
  type: 0488 121f
  path: \\?\hid#dell091a&col02#5&99b72d3&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      40d
  Interface:    -1
  Usage (page): 0x5 (0xd)

Device Found
  type: 04d8 0033
  path: \\?\hid#vid_04d8&pid_0033#e&bd5b18b&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: pk2new
  Manufacturer: Microchip Technology Inc.
  Product:      PICkit 2 Microcontroller Programmer
  Release:      2
  Interface:    -1
  Usage (page): 0x1 (0xff00)

Device Found
  type: 045e 0000
  path: \\?\hid#converteddevice&col02#5&379854aa&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x1 (0xc)

Device Found
  type: 045e 0000
  path: \\?\hid#converteddevice&col03#5&379854aa&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x80 (0x1)

Device Found
  type: 0488 121f
  path: \\?\hid#dell091a&col03#5&99b72d3&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      40d
  Interface:    -1
  Usage (page): 0x1 (0xff01)

Device Found
  type: 046d c534
  path: \\?\hid#vid_046d&pid_c534&mi_00#7&1c54b96&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    0
  Usage (page): 0x6 (0x1)

Device Found
  type: 0488 121f
  path: \\?\hid#dell091a&col04#5&99b72d3&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      40d
  Interface:    -1
  Usage (page): 0x1 (0xff02)

Device Found
  type: 0488 121f
  path: \\?\hid#dell091a&col05#5&99b72d3&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      40d
  Interface:    -1
  Usage (page): 0xe (0xd)

Device Found
  type: 045e 0000
  path: \\?\hid#converteddevice&col01#5&379854aa&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x6 (0x1)

Handle 0000016097C74B80: New device is connected: \\?\hid#vid_046d&pid_c534&mi_01&col01#7&383a3a17&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c534
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    1
  Usage (page): 0x2 (0x1)

Handle 0000016097C74B80: New device is connected: \\?\hid#vid_046d&pid_c534&mi_01&col02#7&383a3a17&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c534
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    1
  Usage (page): 0x1 (0xc)

Handle 0000016097C74B80: New device is connected: \\?\hid#vid_046d&pid_c534&mi_01&col03#7&383a3a17&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c534
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    1
  Usage (page): 0x80 (0x1)

Handle 0000016097C74B80: New device is connected: \\?\hid#vid_046d&pid_c534&mi_01&col04#7&383a3a17&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c534
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    1
  Usage (page): 0x1 (0xff00)

Handle 0000016097C74B80: New device is connected: \\?\hid#dell091a&col01#5&99b72d3&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 0488 121f
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      40d
  Interface:    -1
  Usage (page): 0x2 (0x1)

Handle 0000016097C74B80: New device is connected: \\?\hid#intc816&col01#3&36a7043c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 8087 0a1e
  serial_number:
  Manufacturer:
  Product:
  Release:      200
  Interface:    -1
  Usage (page): 0xc (0x1)

Handle 0000016097C74B80: New device is connected: \\?\hid#vid_044e&pid_1212&col01&col02#7&290aacae&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd.
type: 044e 1212
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x6 (0x1)

Handle 0000016097C74B80: New device is connected: \\?\hid#vid_046d&pid_c534&mi_01&col05#7&383a3a17&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c534
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    1
  Usage (page): 0x2 (0xff00)

Handle 0000016097C74B80: New device is connected: \\?\hid#intc816&col02#3&36a7043c&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 8087 0a1e
  serial_number:
  Manufacturer:
  Product:
  Release:      200
  Interface:    -1
  Usage (page): 0xd (0x1)

Handle 0000016097C74B80: New device is connected: \\?\hid#vid_044e&pid_1212&col01&col01#7&290aacae&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 044e 1212
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x2 (0x1)

Handle 0000016097C74B80: New device is connected: \\?\hid#dell091a&col02#5&99b72d3&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 0488 121f
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      40d
  Interface:    -1
  Usage (page): 0x5 (0xd)

Handle 0000016097C74B80: New device is connected: \\?\hid#vid_04d8&pid_0033#e&bd5b18b&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 04d8 0033
  serial_number: pk2new
  Manufacturer: Microchip Technology Inc.
  Product:      PICkit 2 Microcontroller Programmer
  Release:      2
  Interface:    -1
  Usage (page): 0x1 (0xff00)

Handle 0000016097C74B80: New device is connected: \\?\hid#converteddevice&col02#5&379854aa&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 045e 0000
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x1 (0xc)

Handle 0000016097C74B80: New device is connected: \\?\hid#converteddevice&col03#5&379854aa&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 045e 0000
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x80 (0x1)

Handle 0000016097C74B80: New device is connected: \\?\hid#dell091a&col03#5&99b72d3&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 0488 121f
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      40d
  Interface:    -1
  Usage (page): 0x1 (0xff01)

Handle 0000016097C74B80: New device is connected: \\?\hid#vid_046d&pid_c534&mi_00#7&1c54b96&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd.
type: 046d c534
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    0
  Usage (page): 0x6 (0x1)

Handle 0000016097C74B80: New device is connected: \\?\hid#dell091a&col04#5&99b72d3&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 0488 121f
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      40d
  Interface:    -1
  Usage (page): 0x1 (0xff02)

Handle 0000016097C74B80: New device is connected: \\?\hid#dell091a&col05#5&99b72d3&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 0488 121f
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      40d
  Interface:    -1
  Usage (page): 0xe (0xd)

Handle 0000016097C74B80: New device is connected: \\?\hid#converteddevice&col01#5&379854aa&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd.
type: 045e 0000
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x6 (0x1)

Handle 0000016097C74B80: Device was disconnected: \\?\hid#vid_04d8&pid_0033#e&bd5b18b&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 04d8 0033
  serial_number: pk2new
  Manufacturer: Microchip Technology Inc.
  Product:      PICkit 2 Microcontroller Programmer
  Release:      2
  Interface:    -1
  Usage (page): 0x1 (0xff00)

Handle 0000016097C74B80: New device is connected: \\?\hid#vid_04d8&pid_0033#e&bd5b18b&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 04d8 0033
  serial_number: pk2new
  Manufacturer: Microchip Technology Inc.
  Product:      PICkit 2 Microcontroller Programmer
  Release:      2
  Interface:    -1
  Usage (page): 0x1 (0xff00)

Handle 0000016097C74B80: Device was disconnected: \\?\hid#vid_04d8&pid_0033#e&bd5b18b&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 04d8 0033
  serial_number: pk2new
  Manufacturer: Microchip Technology Inc.
  Product:      PICkit 2 Microcontroller Programmer
  Release:      2
  Interface:    -1
  Usage (page): 0x1 (0xff00)

Handle 0000016097C74B80: New device is connected: \\?\hid#vid_04d8&pid_0033#e&bd5b18b&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 04d8 0033
  serial_number: pk2new
  Manufacturer: Microchip Technology Inc.
  Product:      PICkit 2 Microcontroller Programmer
  Release:      2
  Interface:    -1
  Usage (page): 0x1 (0xff00)

Handle 0000016097C74B80: Device was disconnected: \\?\hid#vid_046d&pid_c534&mi_00#7&1c54b96&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd.
type: 046d c534
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    0
  Usage (page): 0x6 (0x1)

Handle 0000016097C74B80: Device was disconnected: \\?\hid#vid_046d&pid_c534&mi_01&col01#7&383a3a17&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c534
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    1
  Usage (page): 0x2 (0x1)

Handle 0000016097C74B80: Device was disconnected: \\?\hid#vid_046d&pid_c534&mi_01&col02#7&383a3a17&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c534
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    1
  Usage (page): 0x1 (0xc)

Handle 0000016097C74B80: Device was disconnected: \\?\hid#vid_046d&pid_c534&mi_01&col03#7&383a3a17&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c534
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    1
  Usage (page): 0x80 (0x1)

Handle 0000016097C74B80: Device was disconnected: \\?\hid#vid_046d&pid_c534&mi_01&col04#7&383a3a17&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c534
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    1
  Usage (page): 0x1 (0xff00)

Handle 0000016097C74B80: Device was disconnected: \\?\hid#vid_046d&pid_c534&mi_01&col05#7&383a3a17&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c534
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    1
  Usage (page): 0x2 (0xff00)

Handle 0000016097C74B80: New device is connected: \\?\hid#vid_046d&pid_c534&mi_01&col02#7&383a3a17&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c534
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    1
  Usage (page): 0x1 (0xc)

Handle 0000016097C74B80: New device is connected: \\?\hid#vid_046d&pid_c534&mi_01&col03#7&383a3a17&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c534
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    1
  Usage (page): 0x80 (0x1)

Handle 0000016097C74B80: New device is connected: \\?\hid#vid_046d&pid_c534&mi_01&col04#7&383a3a17&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c534
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    1
  Usage (page): 0x1 (0xff00)

Handle 0000016097C74B80: New device is connected: \\?\hid#vid_046d&pid_c534&mi_01&col05#7&383a3a17&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c534
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    1
  Usage (page): 0x2 (0xff00)

Handle 0000016097C74B80: New device is connected: \\?\hid#vid_046d&pid_c534&mi_00#7&1c54b96&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd.
type: 046d c534
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    0
  Usage (page): 0x6 (0x1)

Handle 0000016097C74B80: New device is connected: \\?\hid#vid_046d&pid_c534&mi_01&col01#7&383a3a17&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c534
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    1
  Usage (page): 0x2 (0x1)
First test seems to be positive. With hotplug of my Microchip PICkit 2 programmer (single HID device as seen by HIDAPI) and Logitech USB Receiver (6 HID devices as seen by HIDAPI) <details> <summary> click for full run log </summary> ``` C:\work\hid\hidapi_devnotify\windows\x64\Release [device_notify ≡]> .\hidtest.exe hidapi test/example tool. Compiled with hidapi version 0.11.0, runtime version 0.11.0. Compile-time version matches runtime version of hidapi. Device Found type: 046d c534 path: \\?\hid#vid_046d&pid_c534&mi_01&col01#7&383a3a17&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 1 Usage (page): 0x2 (0x1) Device Found type: 046d c534 path: \\?\hid#vid_046d&pid_c534&mi_01&col02#7&383a3a17&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 1 Usage (page): 0x1 (0xc) Device Found type: 046d c534 path: \\?\hid#vid_046d&pid_c534&mi_01&col03#7&383a3a17&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 1 Usage (page): 0x80 (0x1) Device Found type: 046d c534 path: \\?\hid#vid_046d&pid_c534&mi_01&col04#7&383a3a17&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 1 Usage (page): 0x1 (0xff00) Device Found type: 0488 121f path: \\?\hid#dell091a&col01#5&99b72d3&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 40d Interface: -1 Usage (page): 0x2 (0x1) Device Found type: 8087 0a1e path: \\?\hid#intc816&col01#3&36a7043c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 200 Interface: -1 Usage (page): 0xc (0x1) Device Found type: 044e 1212 path: \\?\hid#vid_044e&pid_1212&col01&col02#7&290aacae&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x6 (0x1) Device Found type: 046d c534 path: \\?\hid#vid_046d&pid_c534&mi_01&col05#7&383a3a17&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 1 Usage (page): 0x2 (0xff00) Device Found type: 8087 0a1e path: \\?\hid#intc816&col02#3&36a7043c&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 200 Interface: -1 Usage (page): 0xd (0x1) Device Found type: 044e 1212 path: \\?\hid#vid_044e&pid_1212&col01&col01#7&290aacae&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x2 (0x1) Device Found type: 0488 121f path: \\?\hid#dell091a&col02#5&99b72d3&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 40d Interface: -1 Usage (page): 0x5 (0xd) Device Found type: 04d8 0033 path: \\?\hid#vid_04d8&pid_0033#e&bd5b18b&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: pk2new Manufacturer: Microchip Technology Inc. Product: PICkit 2 Microcontroller Programmer Release: 2 Interface: -1 Usage (page): 0x1 (0xff00) Device Found type: 045e 0000 path: \\?\hid#converteddevice&col02#5&379854aa&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x1 (0xc) Device Found type: 045e 0000 path: \\?\hid#converteddevice&col03#5&379854aa&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x80 (0x1) Device Found type: 0488 121f path: \\?\hid#dell091a&col03#5&99b72d3&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 40d Interface: -1 Usage (page): 0x1 (0xff01) Device Found type: 046d c534 path: \\?\hid#vid_046d&pid_c534&mi_00#7&1c54b96&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 0 Usage (page): 0x6 (0x1) Device Found type: 0488 121f path: \\?\hid#dell091a&col04#5&99b72d3&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 40d Interface: -1 Usage (page): 0x1 (0xff02) Device Found type: 0488 121f path: \\?\hid#dell091a&col05#5&99b72d3&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 40d Interface: -1 Usage (page): 0xe (0xd) Device Found type: 045e 0000 path: \\?\hid#converteddevice&col01#5&379854aa&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x6 (0x1) Handle 0000016097C74B80: New device is connected: \\?\hid#vid_046d&pid_c534&mi_01&col01#7&383a3a17&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c534 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 1 Usage (page): 0x2 (0x1) Handle 0000016097C74B80: New device is connected: \\?\hid#vid_046d&pid_c534&mi_01&col02#7&383a3a17&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c534 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 1 Usage (page): 0x1 (0xc) Handle 0000016097C74B80: New device is connected: \\?\hid#vid_046d&pid_c534&mi_01&col03#7&383a3a17&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c534 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 1 Usage (page): 0x80 (0x1) Handle 0000016097C74B80: New device is connected: \\?\hid#vid_046d&pid_c534&mi_01&col04#7&383a3a17&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c534 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 1 Usage (page): 0x1 (0xff00) Handle 0000016097C74B80: New device is connected: \\?\hid#dell091a&col01#5&99b72d3&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 0488 121f serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 40d Interface: -1 Usage (page): 0x2 (0x1) Handle 0000016097C74B80: New device is connected: \\?\hid#intc816&col01#3&36a7043c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 8087 0a1e serial_number: Manufacturer: Product: Release: 200 Interface: -1 Usage (page): 0xc (0x1) Handle 0000016097C74B80: New device is connected: \\?\hid#vid_044e&pid_1212&col01&col02#7&290aacae&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd. type: 044e 1212 serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x6 (0x1) Handle 0000016097C74B80: New device is connected: \\?\hid#vid_046d&pid_c534&mi_01&col05#7&383a3a17&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c534 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 1 Usage (page): 0x2 (0xff00) Handle 0000016097C74B80: New device is connected: \\?\hid#intc816&col02#3&36a7043c&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 8087 0a1e serial_number: Manufacturer: Product: Release: 200 Interface: -1 Usage (page): 0xd (0x1) Handle 0000016097C74B80: New device is connected: \\?\hid#vid_044e&pid_1212&col01&col01#7&290aacae&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 044e 1212 serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x2 (0x1) Handle 0000016097C74B80: New device is connected: \\?\hid#dell091a&col02#5&99b72d3&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 0488 121f serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 40d Interface: -1 Usage (page): 0x5 (0xd) Handle 0000016097C74B80: New device is connected: \\?\hid#vid_04d8&pid_0033#e&bd5b18b&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 04d8 0033 serial_number: pk2new Manufacturer: Microchip Technology Inc. Product: PICkit 2 Microcontroller Programmer Release: 2 Interface: -1 Usage (page): 0x1 (0xff00) Handle 0000016097C74B80: New device is connected: \\?\hid#converteddevice&col02#5&379854aa&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 045e 0000 serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x1 (0xc) Handle 0000016097C74B80: New device is connected: \\?\hid#converteddevice&col03#5&379854aa&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 045e 0000 serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x80 (0x1) Handle 0000016097C74B80: New device is connected: \\?\hid#dell091a&col03#5&99b72d3&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 0488 121f serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 40d Interface: -1 Usage (page): 0x1 (0xff01) Handle 0000016097C74B80: New device is connected: \\?\hid#vid_046d&pid_c534&mi_00#7&1c54b96&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd. type: 046d c534 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 0 Usage (page): 0x6 (0x1) Handle 0000016097C74B80: New device is connected: \\?\hid#dell091a&col04#5&99b72d3&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 0488 121f serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 40d Interface: -1 Usage (page): 0x1 (0xff02) Handle 0000016097C74B80: New device is connected: \\?\hid#dell091a&col05#5&99b72d3&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 0488 121f serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 40d Interface: -1 Usage (page): 0xe (0xd) Handle 0000016097C74B80: New device is connected: \\?\hid#converteddevice&col01#5&379854aa&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd. type: 045e 0000 serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x6 (0x1) Handle 0000016097C74B80: Device was disconnected: \\?\hid#vid_04d8&pid_0033#e&bd5b18b&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 04d8 0033 serial_number: pk2new Manufacturer: Microchip Technology Inc. Product: PICkit 2 Microcontroller Programmer Release: 2 Interface: -1 Usage (page): 0x1 (0xff00) Handle 0000016097C74B80: New device is connected: \\?\hid#vid_04d8&pid_0033#e&bd5b18b&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 04d8 0033 serial_number: pk2new Manufacturer: Microchip Technology Inc. Product: PICkit 2 Microcontroller Programmer Release: 2 Interface: -1 Usage (page): 0x1 (0xff00) Handle 0000016097C74B80: Device was disconnected: \\?\hid#vid_04d8&pid_0033#e&bd5b18b&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 04d8 0033 serial_number: pk2new Manufacturer: Microchip Technology Inc. Product: PICkit 2 Microcontroller Programmer Release: 2 Interface: -1 Usage (page): 0x1 (0xff00) Handle 0000016097C74B80: New device is connected: \\?\hid#vid_04d8&pid_0033#e&bd5b18b&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 04d8 0033 serial_number: pk2new Manufacturer: Microchip Technology Inc. Product: PICkit 2 Microcontroller Programmer Release: 2 Interface: -1 Usage (page): 0x1 (0xff00) Handle 0000016097C74B80: Device was disconnected: \\?\hid#vid_046d&pid_c534&mi_00#7&1c54b96&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd. type: 046d c534 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 0 Usage (page): 0x6 (0x1) Handle 0000016097C74B80: Device was disconnected: \\?\hid#vid_046d&pid_c534&mi_01&col01#7&383a3a17&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c534 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 1 Usage (page): 0x2 (0x1) Handle 0000016097C74B80: Device was disconnected: \\?\hid#vid_046d&pid_c534&mi_01&col02#7&383a3a17&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c534 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 1 Usage (page): 0x1 (0xc) Handle 0000016097C74B80: Device was disconnected: \\?\hid#vid_046d&pid_c534&mi_01&col03#7&383a3a17&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c534 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 1 Usage (page): 0x80 (0x1) Handle 0000016097C74B80: Device was disconnected: \\?\hid#vid_046d&pid_c534&mi_01&col04#7&383a3a17&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c534 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 1 Usage (page): 0x1 (0xff00) Handle 0000016097C74B80: Device was disconnected: \\?\hid#vid_046d&pid_c534&mi_01&col05#7&383a3a17&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c534 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 1 Usage (page): 0x2 (0xff00) Handle 0000016097C74B80: New device is connected: \\?\hid#vid_046d&pid_c534&mi_01&col02#7&383a3a17&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c534 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 1 Usage (page): 0x1 (0xc) Handle 0000016097C74B80: New device is connected: \\?\hid#vid_046d&pid_c534&mi_01&col03#7&383a3a17&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c534 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 1 Usage (page): 0x80 (0x1) Handle 0000016097C74B80: New device is connected: \\?\hid#vid_046d&pid_c534&mi_01&col04#7&383a3a17&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c534 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 1 Usage (page): 0x1 (0xff00) Handle 0000016097C74B80: New device is connected: \\?\hid#vid_046d&pid_c534&mi_01&col05#7&383a3a17&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c534 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 1 Usage (page): 0x2 (0xff00) Handle 0000016097C74B80: New device is connected: \\?\hid#vid_046d&pid_c534&mi_00#7&1c54b96&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd. type: 046d c534 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 0 Usage (page): 0x6 (0x1) Handle 0000016097C74B80: New device is connected: \\?\hid#vid_046d&pid_c534&mi_01&col01#7&383a3a17&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c534 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 1 Usage (page): 0x2 (0x1) ``` </details>
mcuee commented 2021-07-17 20:29:32 -05:00 (Migrated from github.com)

Then I tested with a Bluetooth Mouse (Logitech M557 Mouse) and it seems to work fine as well. It will show up as 6 HID devices as well by hidapi.

click to expand
Handle 0000016097C74B80: New device is connected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col02#8&1cf1c1b9&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d b010
  serial_number: 34885dab0c12
  Manufacturer: Logitech
  Product:      Logitech Bluetooth Wireless Mouse
  Release:      0
  Interface:    -1
  Usage (page): 0x1 (0xc)

Handle 0000016097C74B80: New device is connected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col03#8&1cf1c1b9&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d b010
  serial_number: 34885dab0c12
  Manufacturer: Logitech
  Product:      Logitech Bluetooth Wireless Mouse
  Release:      0
  Interface:    -1
  Usage (page): 0x1 (0xff00)

Handle 0000016097C74B80: New device is connected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col04#8&1cf1c1b9&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d b010
  serial_number: 34885dab0c12
  Manufacturer: Logitech
  Product:      Logitech Bluetooth Wireless Mouse
  Release:      0
  Interface:    -1
  Usage (page): 0x2 (0xff00)

Handle 0000016097C74B80: New device is connected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col06#8&1cf1c1b9&0&0005#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d b010
  serial_number: 34885dab0c12
  Manufacturer: Logitech
  Product:      Logitech Bluetooth Wireless Mouse
  Release:      0
  Interface:    -1
  Usage (page): 0x1 (0xc)

Handle 0000016097C74B80: New device is connected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col01#8&1cf1c1b9&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d b010
  serial_number: 34885dab0c12
  Manufacturer: Logitech
  Product:      Logitech Bluetooth Wireless Mouse
  Release:      0
  Interface:    -1
  Usage (page): 0x2 (0x1)

Handle 0000016097C74B80: New device is connected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col05#8&1cf1c1b9&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd.
type: 046d b010
  serial_number: 34885dab0c12
  Manufacturer: Logitech
  Product:      Logitech Bluetooth Wireless Mouse
  Release:      0
  Interface:    -1
  Usage (page): 0x6 (0x1)

Handle 0000016097C74B80: Device was disconnected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col01#8&1cf1c1b9&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d b010
  serial_number: 34885dab0c12
  Manufacturer: Logitech
  Product:      Logitech Bluetooth Wireless Mouse
  Release:      0
  Interface:    -1
  Usage (page): 0x2 (0x1)

Handle 0000016097C74B80: Device was disconnected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col02#8&1cf1c1b9&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d b010
  serial_number: 34885dab0c12
  Manufacturer: Logitech
  Product:      Logitech Bluetooth Wireless Mouse
  Release:      0
  Interface:    -1
  Usage (page): 0x1 (0xc)

Handle 0000016097C74B80: Device was disconnected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col03#8&1cf1c1b9&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d b010
  serial_number: 34885dab0c12
  Manufacturer: Logitech
  Product:      Logitech Bluetooth Wireless Mouse
  Release:      0
  Interface:    -1
  Usage (page): 0x1 (0xff00)

Handle 0000016097C74B80: Device was disconnected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col04#8&1cf1c1b9&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d b010
  serial_number: 34885dab0c12
  Manufacturer: Logitech
  Product:      Logitech Bluetooth Wireless Mouse
  Release:      0
  Interface:    -1
  Usage (page): 0x2 (0xff00)

Handle 0000016097C74B80: Device was disconnected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col05#8&1cf1c1b9&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd.
type: 046d b010
  serial_number: 34885dab0c12
  Manufacturer: Logitech
  Product:      Logitech Bluetooth Wireless Mouse
  Release:      0
  Interface:    -1
  Usage (page): 0x6 (0x1)

Handle 0000016097C74B80: Device was disconnected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col06#8&1cf1c1b9&0&0005#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d b010
  serial_number: 34885dab0c12
  Manufacturer: Logitech
  Product:      Logitech Bluetooth Wireless Mouse
  Release:      0
  Interface:    -1
  Usage (page): 0x1 (0xc)

Handle 0000016097C74B80: New device is connected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col02#8&1cf1c1b9&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d b010
  serial_number: 34885dab0c12
  Manufacturer: Logitech
  Product:      Logitech Bluetooth Wireless Mouse
  Release:      0
  Interface:    -1
  Usage (page): 0x1 (0xc)

Handle 0000016097C74B80: New device is connected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col03#8&1cf1c1b9&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d b010
  serial_number: 34885dab0c12
  Manufacturer: Logitech
  Product:      Logitech Bluetooth Wireless Mouse
  Release:      0
  Interface:    -1
  Usage (page): 0x1 (0xff00)

Handle 0000016097C74B80: New device is connected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col04#8&1cf1c1b9&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d b010
  serial_number: 34885dab0c12
  Manufacturer: Logitech
  Product:      Logitech Bluetooth Wireless Mouse
  Release:      0
  Interface:    -1
  Usage (page): 0x2 (0xff00)

Handle 0000016097C74B80: New device is connected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col06#8&1cf1c1b9&0&0005#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d b010
  serial_number: 34885dab0c12
  Manufacturer: Logitech
  Product:      Logitech Bluetooth Wireless Mouse
  Release:      0
  Interface:    -1
  Usage (page): 0x1 (0xc)

Handle 0000016097C74B80: New device is connected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col01#8&1cf1c1b9&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d b010
  serial_number: 34885dab0c12
  Manufacturer: Logitech
  Product:      Logitech Bluetooth Wireless Mouse
  Release:      0
  Interface:    -1
  Usage (page): 0x2 (0x1)

Handle 0000016097C74B80: New device is connected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col05#8&1cf1c1b9&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd.
type: 046d b010
  serial_number: 34885dab0c12
  Manufacturer: Logitech
  Product:      Logitech Bluetooth Wireless Mouse
  Release:      0
  Interface:    -1
  Usage (page): 0x6 (0x1)
Then I tested with a Bluetooth Mouse (Logitech M557 Mouse) and it seems to work fine as well. It will show up as 6 HID devices as well by hidapi. <details> <summary> click to expand </summary> ``` Handle 0000016097C74B80: New device is connected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col02#8&1cf1c1b9&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d b010 serial_number: 34885dab0c12 Manufacturer: Logitech Product: Logitech Bluetooth Wireless Mouse Release: 0 Interface: -1 Usage (page): 0x1 (0xc) Handle 0000016097C74B80: New device is connected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col03#8&1cf1c1b9&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d b010 serial_number: 34885dab0c12 Manufacturer: Logitech Product: Logitech Bluetooth Wireless Mouse Release: 0 Interface: -1 Usage (page): 0x1 (0xff00) Handle 0000016097C74B80: New device is connected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col04#8&1cf1c1b9&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d b010 serial_number: 34885dab0c12 Manufacturer: Logitech Product: Logitech Bluetooth Wireless Mouse Release: 0 Interface: -1 Usage (page): 0x2 (0xff00) Handle 0000016097C74B80: New device is connected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col06#8&1cf1c1b9&0&0005#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d b010 serial_number: 34885dab0c12 Manufacturer: Logitech Product: Logitech Bluetooth Wireless Mouse Release: 0 Interface: -1 Usage (page): 0x1 (0xc) Handle 0000016097C74B80: New device is connected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col01#8&1cf1c1b9&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d b010 serial_number: 34885dab0c12 Manufacturer: Logitech Product: Logitech Bluetooth Wireless Mouse Release: 0 Interface: -1 Usage (page): 0x2 (0x1) Handle 0000016097C74B80: New device is connected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col05#8&1cf1c1b9&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd. type: 046d b010 serial_number: 34885dab0c12 Manufacturer: Logitech Product: Logitech Bluetooth Wireless Mouse Release: 0 Interface: -1 Usage (page): 0x6 (0x1) Handle 0000016097C74B80: Device was disconnected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col01#8&1cf1c1b9&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d b010 serial_number: 34885dab0c12 Manufacturer: Logitech Product: Logitech Bluetooth Wireless Mouse Release: 0 Interface: -1 Usage (page): 0x2 (0x1) Handle 0000016097C74B80: Device was disconnected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col02#8&1cf1c1b9&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d b010 serial_number: 34885dab0c12 Manufacturer: Logitech Product: Logitech Bluetooth Wireless Mouse Release: 0 Interface: -1 Usage (page): 0x1 (0xc) Handle 0000016097C74B80: Device was disconnected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col03#8&1cf1c1b9&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d b010 serial_number: 34885dab0c12 Manufacturer: Logitech Product: Logitech Bluetooth Wireless Mouse Release: 0 Interface: -1 Usage (page): 0x1 (0xff00) Handle 0000016097C74B80: Device was disconnected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col04#8&1cf1c1b9&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d b010 serial_number: 34885dab0c12 Manufacturer: Logitech Product: Logitech Bluetooth Wireless Mouse Release: 0 Interface: -1 Usage (page): 0x2 (0xff00) Handle 0000016097C74B80: Device was disconnected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col05#8&1cf1c1b9&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd. type: 046d b010 serial_number: 34885dab0c12 Manufacturer: Logitech Product: Logitech Bluetooth Wireless Mouse Release: 0 Interface: -1 Usage (page): 0x6 (0x1) Handle 0000016097C74B80: Device was disconnected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col06#8&1cf1c1b9&0&0005#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d b010 serial_number: 34885dab0c12 Manufacturer: Logitech Product: Logitech Bluetooth Wireless Mouse Release: 0 Interface: -1 Usage (page): 0x1 (0xc) Handle 0000016097C74B80: New device is connected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col02#8&1cf1c1b9&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d b010 serial_number: 34885dab0c12 Manufacturer: Logitech Product: Logitech Bluetooth Wireless Mouse Release: 0 Interface: -1 Usage (page): 0x1 (0xc) Handle 0000016097C74B80: New device is connected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col03#8&1cf1c1b9&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d b010 serial_number: 34885dab0c12 Manufacturer: Logitech Product: Logitech Bluetooth Wireless Mouse Release: 0 Interface: -1 Usage (page): 0x1 (0xff00) Handle 0000016097C74B80: New device is connected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col04#8&1cf1c1b9&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d b010 serial_number: 34885dab0c12 Manufacturer: Logitech Product: Logitech Bluetooth Wireless Mouse Release: 0 Interface: -1 Usage (page): 0x2 (0xff00) Handle 0000016097C74B80: New device is connected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col06#8&1cf1c1b9&0&0005#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d b010 serial_number: 34885dab0c12 Manufacturer: Logitech Product: Logitech Bluetooth Wireless Mouse Release: 0 Interface: -1 Usage (page): 0x1 (0xc) Handle 0000016097C74B80: New device is connected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col01#8&1cf1c1b9&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d b010 serial_number: 34885dab0c12 Manufacturer: Logitech Product: Logitech Bluetooth Wireless Mouse Release: 0 Interface: -1 Usage (page): 0x2 (0x1) Handle 0000016097C74B80: New device is connected: \\?\hid#{00001124-0000-1000-8000-00805f9b34fb}_vid&0002046d_pid&b010&col05#8&1cf1c1b9&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd. type: 046d b010 serial_number: 34885dab0c12 Manufacturer: Logitech Product: Logitech Bluetooth Wireless Mouse Release: 0 Interface: -1 Usage (page): 0x6 (0x1) ``` </details>
mcuee commented 2021-07-17 20:34:25 -05:00 (Migrated from github.com)

@DJm00n This seems to work pretty well under Windows. Just wondering if you can add for other backend as well (eg: Linux hidraw, libusb or macOS). I have the systems to test for these platforms (Windows laptop, Raspberry Pi 400 Linux and Mac Mini M1 macOS).

@DJm00n This seems to work pretty well under Windows. Just wondering if you can add for other backend as well (eg: Linux hidraw, libusb or macOS). I have the systems to test for these platforms (Windows laptop, Raspberry Pi 400 Linux and Mac Mini M1 macOS).
DJm00n commented 2021-07-19 06:16:08 -05:00 (Migrated from github.com)
Related libusb issue: https://github.com/libusb/libusb/issues/86
Youw commented 2021-07-28 06:53:25 -05:00 (Migrated from github.com)

This is a large (even though important) change.
Please target it agains https://github.com/libusb/hidapi/tree/connection-callback branch, instead of master, for now.

This is a large (even though important) change. Please target it agains https://github.com/libusb/hidapi/tree/connection-callback branch, instead of master, for now.
z3ntu commented 2021-08-03 11:46:59 -05:00 (Migrated from github.com)

For reference, I have created code for a similar purpose for Linux and macOS here: https://github.com/z3ntu/devnotifier_test (it's made for use with Qt5 but this can easily be removed again I think).

On Linux it does seem to work fine but on macOS I am told it doesn't work on actual Macs - I have only tested it on a VM where it does work.

For reference, I have created code for a similar purpose for Linux and macOS here: https://github.com/z3ntu/devnotifier_test (it's made for use with Qt5 but this can easily be removed again I think). On Linux it does seem to work fine but on macOS I am told it doesn't work on actual Macs - I have only tested it on a VM where it does work.
JoergAtGithub commented 2022-01-02 18:04:17 -06:00 (Migrated from github.com)
@DJm00n Have a look at the feedback here: https://github.com/libusb/hidapi/issues/238#issuecomment-1003718857
mcuee commented 2022-02-05 21:28:41 -06:00 (Migrated from github.com)

Maybe this one can be considered for next next release like 0.13?

Maybe this one can be considered for next next release like 0.13?
Youw commented 2022-09-10 12:55:05 -05:00 (Migrated from github.com)

Maybe this one can be considered for next next release like 0.13?

Too many stubs. Need to design/implement for all platforms, before we can release it. It is all doable.

> Maybe this one can be considered for next next release like 0.13? Too many stubs. Need to design/implement for all platforms, before we can release it. It is all doable.
mini-ninja-64 commented 2023-01-06 12:29:25 -06:00 (Migrated from github.com)

I have done an implementation for this functionality on MacOS previously that worked well, using the IOHIDManagerSetDeviceMatching function really makes the implementation pretty short & sweet.

My implementation is currently using objective-c but I am more than happy to port it to C if it would be beneficial for getting this feature implemented?

I have done an implementation for this functionality on MacOS previously that worked well, using the `IOHIDManagerSetDeviceMatching` function really makes the implementation pretty short & sweet. My implementation is currently using objective-c but I am more than happy to port it to C if it would be beneficial for getting this feature implemented?
JoergAtGithub commented 2023-01-06 12:54:34 -06:00 (Migrated from github.com)

A reliable hotplug detection for MacOS would be of big help!
Such a PR would be one further step on the road to this feature. Than there would be an implementation for two of the four hidapi backends.

A reliable hotplug detection for MacOS would be of big help! Such a PR would be one further step on the road to this feature. Than there would be an implementation for two of the four hidapi backends.
Youw (Migrated from github.com) approved these changes 2023-01-07 12:02:18 -06:00
Youw (Migrated from github.com) left a comment

My implementation is currently using objective-c but I am more than happy to port it to C if it would be beneficial for getting this feature implemented?

Yes, it would.


I still have some comments regarding the API/design (thread-safety and consistency/syncronisation with hid_enumerate needs to be considered), they (the comments) just not ready-enough to be written down by me.

But not to stale the support from the community - lets have this merged into a future branch as this PR suggests, and we'll apply all suggestions/improvements on top of it before merging the future branch into master.

> My implementation is currently using objective-c but I am more than happy to port it to C if it would be beneficial for getting this feature implemented? Yes, it would. --- I still have some comments regarding the API/design (thread-safety and consistency/syncronisation with `hid_enumerate` needs to be considered), they (the comments) just not ready-enough to be written down by me. But not to stale the support from the community - lets have this merged into a future branch as this PR suggests, and we'll apply all suggestions/improvements on top of it before merging the future branch into master.
mini-ninja-64 commented 2023-01-19 18:44:49 -06:00 (Migrated from github.com)

Glad to hear it, I finally had some time to build an example this week, it can be seen here.

It shows how to make dictionaries that will match on any combination of vendor id, product id, usage page and usage id and execute provided device addition and device removal callbacks.

With the default configuration the callbacks will be called on app startup, with any devices already connected to the computer that fit the matcher dictionary, not just new events while it is running.

I am happy to find some time in the future to work on the actual hidapi implementation aswell

Glad to hear it, I finally had some time to build an example this week, it can be seen [here](https://github.com/mini-ninja-64/macos-hid-example). It shows how to make dictionaries that will match on any combination of `vendor id`, `product id`, `usage page` and `usage id` and execute provided device addition and device removal callbacks. With the default configuration the callbacks will be called on app startup, with any devices already connected to the computer that fit the matcher dictionary, not just new events while it is running. I am happy to find some time in the future to work on the actual hidapi implementation aswell
mcuee commented 2023-01-25 21:03:41 -06:00 (Migrated from github.com)

But not to stale the support from the community - lets have this merged into a future branch as this PR suggests, and we'll apply all suggestions/improvements on top of it before merging the future branch into master.

Indeed this will be good -- to rebase to git HEAD and in the feature branch.
https://github.com/libusb/hidapi/tree/connection-callback

> But not to stale the support from the community - lets have this merged into a future branch as this PR suggests, and we'll apply all suggestions/improvements on top of it before merging the future branch into master. Indeed this will be good -- to rebase to git HEAD and in the feature branch. https://github.com/libusb/hidapi/tree/connection-callback
mcuee commented 2023-02-22 02:14:08 -06:00 (Migrated from github.com)

@Youw

It seems to me that the feature branch has not been updated to merge the changes here.

@Youw It seems to me that the feature branch has not been updated to merge the changes here.
Youw commented 2023-02-22 04:59:15 -06:00 (Migrated from github.com)

Updated

Updated
mcuee commented 2023-02-22 05:22:54 -06:00 (Migrated from github.com)

Updated

Hmm, it does not seem to be updated. It seems to be the same as master branch.
https://github.com/libusb/hidapi/tree/connection-callback

> Updated Hmm, it does not seem to be updated. It seems to be the same as master branch. https://github.com/libusb/hidapi/tree/connection-callback
Youw commented 2023-02-22 07:06:47 -06:00 (Migrated from github.com)

That's what I meant - I've updated connection-callback to be in sync with master.

As for DJm00n:device_notify - yes it is not yet updated.

That's what I meant - I've updated [connection-callback](https://github.com/libusb/hidapi/tree/connection-callback) to be in sync with master. As for [DJm00n:device_notify](https://github.com/DJm00n/hidapi/tree/device_notify) - yes it is not yet updated.
andyvorld commented 2023-04-17 08:50:54 -05:00 (Migrated from github.com)

I have spent some time to rebase @DJm00n's branch to the new connection-callback as well as fixing the nullptr read issue from https://github.com/libusb/hidapi/issues/238#issuecomment-1003718857; located here https://github.com/libusb/hidapi/compare/connection-callback...andyvorld:hidapi:device_notify

Not really sure on how to maintain authorship with @DJm00n, or someone else as I am not really experinced in developing with the windows api; just got this to build and run the basic test.c, for use with some of my personal projects.

I have spent some time to rebase @DJm00n's branch to the new [connection-callback](https://github.com/libusb/hidapi/tree/connection-callback) as well as fixing the nullptr read issue from https://github.com/libusb/hidapi/issues/238#issuecomment-1003718857; located here https://github.com/libusb/hidapi/compare/connection-callback...andyvorld:hidapi:device_notify Not really sure on how to maintain authorship with @DJm00n, or someone else as I am not really experinced in developing with the windows api; just got this to build and run the basic `test.c`, for use with some of my personal projects.
Youw commented 2023-04-17 11:36:57 -05:00 (Migrated from github.com)

Not really sure on how to maintain authorship

Try pushing your changes directly to https://github.com/DJm00n/hidapi/tree/device_notify or open a PR against it.
I'm sure @DJm00n will accept it as soon as he can, and all your changes/efforts will be visible in this PR.

UPD: yeah, and thanks for doing it.

> Not really sure on how to maintain authorship Try pushing your changes directly to https://github.com/DJm00n/hidapi/tree/device_notify or open a PR against it. I'm sure @DJm00n will accept it as soon as he can, and all your changes/efforts will be visible in this PR. UPD: yeah, and thanks for doing it.
andyvorld commented 2023-04-18 08:04:32 -05:00 (Migrated from github.com)

Not really sure on how to maintain authorship

Try pushing your changes directly to https://github.com/DJm00n/hidapi/tree/device_notify or open a PR against it. I'm sure @DJm00n will accept it as soon as he can, and all your changes/efforts will be visible in this PR.

UPD: yeah, and thanks for doing it.

Opened the PR on @DJm00n's branch.

> > Not really sure on how to maintain authorship > > Try pushing your changes directly to https://github.com/DJm00n/hidapi/tree/device_notify or open a PR against it. I'm sure @DJm00n will accept it as soon as he can, and all your changes/efforts will be visible in this PR. > > UPD: yeah, and thanks for doing it. Opened the PR on @DJm00n's branch.
DJm00n commented 2023-04-18 10:48:16 -05:00 (Migrated from github.com)

@andyvorld thank you for your work. I have manually rebased my changes under current upstream/master branch and also cherry-picked your b8642132f85c4dafafd8f5cd1435e06fec13fc11 fix.
Also, your 80e3e0136dbe5ca83ae49851b8b92c4df67c8daf change was a bit broken - so I did proper changes instead while rebasing.

I've done this to avoid unnecessary noise in the git history.

@andyvorld thank you for your work. I have manually rebased my changes under current `upstream/master` branch and also cherry-picked your b8642132f85c4dafafd8f5cd1435e06fec13fc11 fix. Also, your 80e3e0136dbe5ca83ae49851b8b92c4df67c8daf change was a bit broken - so I did proper changes instead while rebasing. I've done this to avoid unnecessary noise in the git history.
Youw commented 2023-04-18 11:04:44 -05:00 (Migrated from github.com)

@DJm00n could you explicitly merge libusb:connection-callback branch into your libusb:connection-callback (with a merge commit)? otherwise the diff on Github is not what is should be

@DJm00n could you explicitly merge `libusb:connection-callback` branch into your `libusb:connection-callback` (with a merge commit)? otherwise the diff on Github is not what is should be
mcuee commented 2023-04-19 06:09:27 -05:00 (Migrated from github.com)

github action for macos-cmake and ubuntu-cmake failed due to compiler warning treated as error. Interestingly macos-automake passed.

github action for macos-cmake and ubuntu-cmake failed due to compiler warning treated as error. Interestingly macos-automake passed.
mcuee commented 2023-04-19 06:15:02 -05:00 (Migrated from github.com)

Run log under Windows. I run hidtest.exe. Then I unplug the Logitech USB Receiver and then plug it back in.

@DJm00n
I am thinking that for the first run the devices should not be considered as newly plug-in. In fact for this Acer laptop, only the Microsoft Bluetooth Mouse and the Logitech USB Receiver are external devices.

PS C:\work\libusb\hidapi_pr299> msbuild .\windows\hidapi.sln
...
PS C:\work\libusb\hidapi_pr299> .\windows\Debug\hidtest.exe
hidapi test/example tool. Compiled with hidapi version 0.13.1, runtime version 0.13.1.
Compile-time version matches runtime version of hidapi.

Device Found
  type: 045e 0916
  path: \\?\hid#{00001812-0000-1000-8000-00805f9b34fb}_dev_vid&02045e_pid&0916_rev&0110_f338080e09c4&col01#9&1937f32c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: f338080e09c4
  Manufacturer: Microsoft
  Product:      BluetoothMouse3600
  Release:      110
  Interface:    -1
  Usage (page): 0x2 (0x1)
  Bus type: 2

Device Found
  type: 045e 0916
  path: \\?\hid#{00001812-0000-1000-8000-00805f9b34fb}_dev_vid&02045e_pid&0916_rev&0110_f338080e09c4&col02#9&1937f32c&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: f338080e09c4
  Manufacturer: Microsoft
  Product:      BluetoothMouse3600
  Release:      110
  Interface:    -1
  Usage (page): 0x1 (0xc)
  Bus type: 2

Device Found
  type: 045e 0916
  path: \\?\hid#{00001812-0000-1000-8000-00805f9b34fb}_dev_vid&02045e_pid&0916_rev&0110_f338080e09c4&col03#9&1937f32c&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: f338080e09c4
  Manufacturer: Microsoft
  Product:      BluetoothMouse3600
  Release:      110
  Interface:    -1
  Usage (page): 0x1 (0xc)
  Bus type: 2

Device Found
  type: 8087 0a1e
  path: \\?\hid#intc816#3&d2322f2&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      200
  Interface:    -1
  Usage (page): 0xd (0x1)
  Bus type: 0

Device Found
  type: 06cb cd40
  path: \\?\hid#syna7dab&col01#5&2f64dfea&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      501
  Interface:    -1
  Usage (page): 0x2 (0x1)
  Bus type: 3

Device Found
  type: 06cb cd40
  path: \\?\hid#syna7dab&col02#5&2f64dfea&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      501
  Interface:    -1
  Usage (page): 0x5 (0xd)
  Bus type: 3

Device Found
  type: 06cb cd40
  path: \\?\hid#syna7dab&col03#5&2f64dfea&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      501
  Interface:    -1
  Usage (page): 0xe (0xd)
  Bus type: 3

Device Found
  type: 06cb cd40
  path: \\?\hid#syna7dab&col04#5&2f64dfea&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      501
  Interface:    -1
  Usage (page): 0x1 (0xff00)
  Bus type: 3

Device Found
  type: 046d c52b
  path: \\?\hid#vid_046d&pid_c52b&mi_01&col01#7&1119bfb4&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x2 (0x1)
  Bus type: 1

Device Found
  type: 045e 0000
  path: \\?\hid#converteddevice&col02#5&32cf90e6&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x1 (0xc)
  Bus type: 0

Device Found
  type: 046d c52b
  path: \\?\hid#vid_046d&pid_c52b&mi_01&col02#7&1119bfb4&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x1 (0xc)
  Bus type: 1

Device Found
  type: 045e 0000
  path: \\?\hid#converteddevice&col03#5&32cf90e6&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x80 (0x1)
  Bus type: 0

Device Found
  type: 046d c52b
  path: \\?\hid#vid_046d&pid_c52b&mi_01&col03#7&1119bfb4&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x80 (0x1)
  Bus type: 1

Device Found
  type: deed feed
  path: \\?\hid#10251229#3&9d5d338&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: Acer Inc
  Product:      Acer Airplane Mode Controller
  Release:      101
  Interface:    -1
  Usage (page): 0xc (0x1)
  Bus type: 0

Device Found
  type: 045e 0000
  path: \\?\hid#converteddevice&col01#5&32cf90e6&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x6 (0x1)
  Bus type: 0

Device Found
  type: 046d c52b
  path: \\?\hid#vid_046d&pid_c52b&mi_01&col04#7&1119bfb4&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x88 (0xffbc)
  Bus type: 1

Device Found
  type: 046d c52b
  path: \\?\hid#vid_046d&pid_c52b&mi_02&col01#7&12bd7e0e&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    2
  Usage (page): 0x1 (0xff00)
  Bus type: 1

Device Found
  type: 046d c52b
  path: \\?\hid#vid_046d&pid_c52b&mi_02&col02#7&12bd7e0e&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    2
  Usage (page): 0x2 (0xff00)
  Bus type: 1

Device Found
  type: 046d c52b
  path: \\?\hid#vid_046d&pid_c52b&mi_02&col03#7&12bd7e0e&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    2
  Usage (page): 0x4 (0xff00)
  Bus type: 1

Device Found
  type: 046d c52b
  path: \\?\hid#vid_046d&pid_c52b&mi_00#7&34f0fd76&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    0
  Usage (page): 0x6 (0x1)
  Bus type: 1

Handle 1: New device is connected: \\?\hid#{00001812-0000-1000-8000-00805f9b34fb}_dev_vid&02045e_pid&0916_rev&0110_f338080e09c4&col01#9&1937f32c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 045e 0916
  serial_number: f338080e09c4
  Manufacturer: Microsoft
  Product:      BluetoothMouse3600
  Release:      110
  Interface:    -1
  Usage (page): 0x2 (0x1)

Handle 1: New device is connected: \\?\hid#{00001812-0000-1000-8000-00805f9b34fb}_dev_vid&02045e_pid&0916_rev&0110_f338080e09c4&col02#9&1937f32c&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 045e 0916
  serial_number: f338080e09c4
  Manufacturer: Microsoft
  Product:      BluetoothMouse3600
  Release:      110
  Interface:    -1
  Usage (page): 0x1 (0xc)

Handle 1: New device is connected: \\?\hid#{00001812-0000-1000-8000-00805f9b34fb}_dev_vid&02045e_pid&0916_rev&0110_f338080e09c4&col03#9&1937f32c&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 045e 0916
  serial_number: f338080e09c4
  Manufacturer: Microsoft
  Product:      BluetoothMouse3600
  Release:      110
  Interface:    -1
  Usage (page): 0x1 (0xc)

Handle 1: New device is connected: \\?\hid#intc816#3&d2322f2&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 8087 0a1e
  serial_number:
  Manufacturer:
  Product:
  Release:      200
  Interface:    -1
  Usage (page): 0xd (0x1)

Handle 1: New device is connected: \\?\hid#syna7dab&col01#5&2f64dfea&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 06cb cd40
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      501
  Interface:    -1
  Usage (page): 0x2 (0x1)

Handle 1: New device is connected: \\?\hid#syna7dab&col02#5&2f64dfea&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 06cb cd40
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      501
  Interface:    -1
  Usage (page): 0x5 (0xd)

Handle 1: New device is connected: \\?\hid#syna7dab&col03#5&2f64dfea&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 06cb cd40
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      501
  Interface:    -1
  Usage (page): 0xe (0xd)

Handle 1: New device is connected: \\?\hid#syna7dab&col04#5&2f64dfea&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 06cb cd40
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      501
  Interface:    -1
  Usage (page): 0x1 (0xff00)

Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col01#7&1119bfb4&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x2 (0x1)

Handle 1: New device is connected: \\?\hid#converteddevice&col02#5&32cf90e6&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 045e 0000
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x1 (0xc)

Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col02#7&1119bfb4&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x1 (0xc)

Handle 1: New device is connected: \\?\hid#converteddevice&col03#5&32cf90e6&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 045e 0000
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x80 (0x1)

Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col03#7&1119bfb4&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x80 (0x1)

Handle 1: New device is connected: \\?\hid#10251229#3&9d5d338&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: deed feed
  serial_number:
  Manufacturer: Acer Inc
  Product:      Acer Airplane Mode Controller
  Release:      101
  Interface:    -1
  Usage (page): 0xc (0x1)

Handle 1: New device is connected: \\?\hid#converteddevice&col01#5&32cf90e6&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd.
type: 045e 0000
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x6 (0x1)

Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col04#7&1119bfb4&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x88 (0xffbc)

Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_02&col01#7&12bd7e0e&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    2
  Usage (page): 0x1 (0xff00)

Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_02&col02#7&12bd7e0e&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    2
  Usage (page): 0x2 (0xff00)

Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_02&col03#7&12bd7e0e&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    2
  Usage (page): 0x4 (0xff00)

Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_00#7&34f0fd76&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    0
  Usage (page): 0x6 (0x1)

Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_00#7&34f0fd76&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    0
  Usage (page): 0x6 (0x1)

Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_01&col01#7&1119bfb4&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x2 (0x1)

Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_01&col02#7&1119bfb4&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x1 (0xc)

Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_01&col03#7&1119bfb4&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x80 (0x1)

Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_01&col04#7&1119bfb4&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x88 (0xffbc)

Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_02&col01#7&12bd7e0e&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    2
  Usage (page): 0x1 (0xff00)

Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_02&col02#7&12bd7e0e&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    2
  Usage (page): 0x2 (0xff00)

Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_02&col03#7&12bd7e0e&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    2
  Usage (page): 0x4 (0xff00)

Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col02#7&1119bfb4&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x1 (0xc)

Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col03#7&1119bfb4&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x80 (0x1)

Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col04#7&1119bfb4&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x88 (0xffbc)

Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_02&col01#7&12bd7e0e&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    2
  Usage (page): 0x1 (0xff00)

Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_02&col02#7&12bd7e0e&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    2
  Usage (page): 0x2 (0xff00)

Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_02&col03#7&12bd7e0e&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    2
  Usage (page): 0x4 (0xff00)

Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_00#7&34f0fd76&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    0
  Usage (page): 0x6 (0x1)

Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col01#7&1119bfb4&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x2 (0x1)
Run log under Windows. I run hidtest.exe. Then I unplug the Logitech USB Receiver and then plug it back in. @DJm00n I am thinking that for the first run the devices should not be considered as newly plug-in. In fact for this Acer laptop, only the Microsoft Bluetooth Mouse and the Logitech USB Receiver are external devices. ``` PS C:\work\libusb\hidapi_pr299> msbuild .\windows\hidapi.sln ... PS C:\work\libusb\hidapi_pr299> .\windows\Debug\hidtest.exe hidapi test/example tool. Compiled with hidapi version 0.13.1, runtime version 0.13.1. Compile-time version matches runtime version of hidapi. Device Found type: 045e 0916 path: \\?\hid#{00001812-0000-1000-8000-00805f9b34fb}_dev_vid&02045e_pid&0916_rev&0110_f338080e09c4&col01#9&1937f32c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: f338080e09c4 Manufacturer: Microsoft Product: BluetoothMouse3600 Release: 110 Interface: -1 Usage (page): 0x2 (0x1) Bus type: 2 Device Found type: 045e 0916 path: \\?\hid#{00001812-0000-1000-8000-00805f9b34fb}_dev_vid&02045e_pid&0916_rev&0110_f338080e09c4&col02#9&1937f32c&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: f338080e09c4 Manufacturer: Microsoft Product: BluetoothMouse3600 Release: 110 Interface: -1 Usage (page): 0x1 (0xc) Bus type: 2 Device Found type: 045e 0916 path: \\?\hid#{00001812-0000-1000-8000-00805f9b34fb}_dev_vid&02045e_pid&0916_rev&0110_f338080e09c4&col03#9&1937f32c&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: f338080e09c4 Manufacturer: Microsoft Product: BluetoothMouse3600 Release: 110 Interface: -1 Usage (page): 0x1 (0xc) Bus type: 2 Device Found type: 8087 0a1e path: \\?\hid#intc816#3&d2322f2&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 200 Interface: -1 Usage (page): 0xd (0x1) Bus type: 0 Device Found type: 06cb cd40 path: \\?\hid#syna7dab&col01#5&2f64dfea&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 501 Interface: -1 Usage (page): 0x2 (0x1) Bus type: 3 Device Found type: 06cb cd40 path: \\?\hid#syna7dab&col02#5&2f64dfea&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 501 Interface: -1 Usage (page): 0x5 (0xd) Bus type: 3 Device Found type: 06cb cd40 path: \\?\hid#syna7dab&col03#5&2f64dfea&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 501 Interface: -1 Usage (page): 0xe (0xd) Bus type: 3 Device Found type: 06cb cd40 path: \\?\hid#syna7dab&col04#5&2f64dfea&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 501 Interface: -1 Usage (page): 0x1 (0xff00) Bus type: 3 Device Found type: 046d c52b path: \\?\hid#vid_046d&pid_c52b&mi_01&col01#7&1119bfb4&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x2 (0x1) Bus type: 1 Device Found type: 045e 0000 path: \\?\hid#converteddevice&col02#5&32cf90e6&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x1 (0xc) Bus type: 0 Device Found type: 046d c52b path: \\?\hid#vid_046d&pid_c52b&mi_01&col02#7&1119bfb4&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x1 (0xc) Bus type: 1 Device Found type: 045e 0000 path: \\?\hid#converteddevice&col03#5&32cf90e6&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x80 (0x1) Bus type: 0 Device Found type: 046d c52b path: \\?\hid#vid_046d&pid_c52b&mi_01&col03#7&1119bfb4&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x80 (0x1) Bus type: 1 Device Found type: deed feed path: \\?\hid#10251229#3&9d5d338&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Acer Inc Product: Acer Airplane Mode Controller Release: 101 Interface: -1 Usage (page): 0xc (0x1) Bus type: 0 Device Found type: 045e 0000 path: \\?\hid#converteddevice&col01#5&32cf90e6&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x6 (0x1) Bus type: 0 Device Found type: 046d c52b path: \\?\hid#vid_046d&pid_c52b&mi_01&col04#7&1119bfb4&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x88 (0xffbc) Bus type: 1 Device Found type: 046d c52b path: \\?\hid#vid_046d&pid_c52b&mi_02&col01#7&12bd7e0e&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 2 Usage (page): 0x1 (0xff00) Bus type: 1 Device Found type: 046d c52b path: \\?\hid#vid_046d&pid_c52b&mi_02&col02#7&12bd7e0e&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 2 Usage (page): 0x2 (0xff00) Bus type: 1 Device Found type: 046d c52b path: \\?\hid#vid_046d&pid_c52b&mi_02&col03#7&12bd7e0e&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 2 Usage (page): 0x4 (0xff00) Bus type: 1 Device Found type: 046d c52b path: \\?\hid#vid_046d&pid_c52b&mi_00#7&34f0fd76&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 0 Usage (page): 0x6 (0x1) Bus type: 1 Handle 1: New device is connected: \\?\hid#{00001812-0000-1000-8000-00805f9b34fb}_dev_vid&02045e_pid&0916_rev&0110_f338080e09c4&col01#9&1937f32c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 045e 0916 serial_number: f338080e09c4 Manufacturer: Microsoft Product: BluetoothMouse3600 Release: 110 Interface: -1 Usage (page): 0x2 (0x1) Handle 1: New device is connected: \\?\hid#{00001812-0000-1000-8000-00805f9b34fb}_dev_vid&02045e_pid&0916_rev&0110_f338080e09c4&col02#9&1937f32c&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 045e 0916 serial_number: f338080e09c4 Manufacturer: Microsoft Product: BluetoothMouse3600 Release: 110 Interface: -1 Usage (page): 0x1 (0xc) Handle 1: New device is connected: \\?\hid#{00001812-0000-1000-8000-00805f9b34fb}_dev_vid&02045e_pid&0916_rev&0110_f338080e09c4&col03#9&1937f32c&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 045e 0916 serial_number: f338080e09c4 Manufacturer: Microsoft Product: BluetoothMouse3600 Release: 110 Interface: -1 Usage (page): 0x1 (0xc) Handle 1: New device is connected: \\?\hid#intc816#3&d2322f2&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 8087 0a1e serial_number: Manufacturer: Product: Release: 200 Interface: -1 Usage (page): 0xd (0x1) Handle 1: New device is connected: \\?\hid#syna7dab&col01#5&2f64dfea&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 06cb cd40 serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 501 Interface: -1 Usage (page): 0x2 (0x1) Handle 1: New device is connected: \\?\hid#syna7dab&col02#5&2f64dfea&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 06cb cd40 serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 501 Interface: -1 Usage (page): 0x5 (0xd) Handle 1: New device is connected: \\?\hid#syna7dab&col03#5&2f64dfea&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 06cb cd40 serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 501 Interface: -1 Usage (page): 0xe (0xd) Handle 1: New device is connected: \\?\hid#syna7dab&col04#5&2f64dfea&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 06cb cd40 serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 501 Interface: -1 Usage (page): 0x1 (0xff00) Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col01#7&1119bfb4&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x2 (0x1) Handle 1: New device is connected: \\?\hid#converteddevice&col02#5&32cf90e6&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 045e 0000 serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x1 (0xc) Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col02#7&1119bfb4&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x1 (0xc) Handle 1: New device is connected: \\?\hid#converteddevice&col03#5&32cf90e6&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 045e 0000 serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x80 (0x1) Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col03#7&1119bfb4&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x80 (0x1) Handle 1: New device is connected: \\?\hid#10251229#3&9d5d338&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: deed feed serial_number: Manufacturer: Acer Inc Product: Acer Airplane Mode Controller Release: 101 Interface: -1 Usage (page): 0xc (0x1) Handle 1: New device is connected: \\?\hid#converteddevice&col01#5&32cf90e6&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd. type: 045e 0000 serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x6 (0x1) Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col04#7&1119bfb4&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x88 (0xffbc) Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_02&col01#7&12bd7e0e&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 2 Usage (page): 0x1 (0xff00) Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_02&col02#7&12bd7e0e&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 2 Usage (page): 0x2 (0xff00) Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_02&col03#7&12bd7e0e&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 2 Usage (page): 0x4 (0xff00) Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_00#7&34f0fd76&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 0 Usage (page): 0x6 (0x1) Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_00#7&34f0fd76&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 0 Usage (page): 0x6 (0x1) Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_01&col01#7&1119bfb4&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x2 (0x1) Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_01&col02#7&1119bfb4&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x1 (0xc) Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_01&col03#7&1119bfb4&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x80 (0x1) Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_01&col04#7&1119bfb4&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x88 (0xffbc) Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_02&col01#7&12bd7e0e&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 2 Usage (page): 0x1 (0xff00) Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_02&col02#7&12bd7e0e&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 2 Usage (page): 0x2 (0xff00) Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_02&col03#7&12bd7e0e&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 2 Usage (page): 0x4 (0xff00) Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col02#7&1119bfb4&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x1 (0xc) Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col03#7&1119bfb4&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x80 (0x1) Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col04#7&1119bfb4&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x88 (0xffbc) Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_02&col01#7&12bd7e0e&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 2 Usage (page): 0x1 (0xff00) Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_02&col02#7&12bd7e0e&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 2 Usage (page): 0x2 (0xff00) Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_02&col03#7&12bd7e0e&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 2 Usage (page): 0x4 (0xff00) Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_00#7&34f0fd76&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 0 Usage (page): 0x6 (0x1) Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col01#7&1119bfb4&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x2 (0x1) ```
mcuee commented 2023-04-19 06:23:22 -05:00 (Migrated from github.com)

Related libusb issue: libusb/libusb#86

BTW, the above is talking about the lack of hotplug feature for libusb Windows backend. Since we only use libusb under Linux and BSDs but not Windows, the above libusb issue does not really matter.

> Related libusb issue: [libusb/libusb#86](https://github.com/libusb/libusb/issues/86) BTW, the above is talking about the lack of hotplug feature for libusb Windows backend. Since we only use libusb under Linux and BSDs but not Windows, the above libusb issue does not really matter.
andyvorld commented 2023-04-19 06:47:23 -05:00 (Migrated from github.com)

Run log under Windows. I run hidtest.exe. Then I unplug the Logitech USB Receiver and then plug it back in.

@DJm00n I am thinking that for the first run the devices should not be considered as newly plug-in. In fact for this Acer laptop, only the Microsoft Bluetooth Mouse and the Logitech USB Receiver are external devices.

...

I think there is a flag on hid_hotplug_register_callback, the basic test program has HID_API_HOTPLUG_ENUMERATE on it. Setting it to 0 seems to not enumerate already connected devices.

> Run log under Windows. I run hidtest.exe. Then I unplug the Logitech USB Receiver and then plug it back in. > > @DJm00n I am thinking that for the first run the devices should not be considered as newly plug-in. In fact for this Acer laptop, only the Microsoft Bluetooth Mouse and the Logitech USB Receiver are external devices. > > ... I think there is a flag on `hid_hotplug_register_callback`, the basic test program has `HID_API_HOTPLUG_ENUMERATE` on it. Setting it to 0 seems to not enumerate already connected devices.
mcuee commented 2023-04-19 07:00:58 -05:00 (Migrated from github.com)

I think there is a flag on hid_hotplug_register_callback, the basic test program has HID_API_HOTPLUG_ENUMERATE on it. Setting it to 0 seems to not enumerate already connected devices.

Thanks. Yes this is the one.

PS C:\work\libusb\hidapi_pr299> git diff
diff --git a/hidtest/test.c b/hidtest/test.c
index 4c0988e..dfb1b52 100644
--- a/hidtest/test.c
+++ b/hidtest/test.c
@@ -135,8 +135,8 @@ int main(int argc, char* argv[])
        print_devices(devs);
        hid_free_enumeration(devs);

-       hid_hotplug_register_callback(0, 0, HID_API_HOTPLUG_EVENT_DEVICE_ARRIVED | HID_API_HOTPLUG_EVENT_DEVICE_LEFT, HID_API_HOTPLUG_ENUMERATE, device_callback, NULL, &token1);
-       hid_hotplug_register_callback(0x054c, 0x0ce6, HID_API_HOTPLUG_EVENT_DEVICE_ARRIVED | HID_API_HOTPLUG_EVENT_DEVICE_LEFT, HID_API_HOTPLUG_ENUMERATE, device_callback, NULL, &token2);
+       hid_hotplug_register_callback(0, 0, HID_API_HOTPLUG_EVENT_DEVICE_ARRIVED | HID_API_HOTPLUG_EVENT_DEVICE_LEFT, 0, device_callback, NULL, &token1);
+       hid_hotplug_register_callback(0x046d, 0xc52b, HID_API_HOTPLUG_EVENT_DEVICE_ARRIVED | HID_API_HOTPLUG_EVENT_DEVICE_LEFT, 0, device_callback, NULL, &token2);

        while (1)
        {
PS C:\work\libusb\hidapi_pr299> .\windows\Debug\hidtest.exe
hidapi test/example tool. Compiled with hidapi version 0.13.1, runtime version 0.13.1.
Compile-time version matches runtime version of hidapi.

Device Found
  type: 045e 0916
  path: \\?\hid#{00001812-0000-1000-8000-00805f9b34fb}_dev_vid&02045e_pid&0916_rev&0110_f338080e09c4&col01#9&1937f32c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: f338080e09c4
  Manufacturer: Microsoft
  Product:      BluetoothMouse3600
  Release:      110
  Interface:    -1
  Usage (page): 0x2 (0x1)
  Bus type: 2

Device Found
  type: 045e 0916
  path: \\?\hid#{00001812-0000-1000-8000-00805f9b34fb}_dev_vid&02045e_pid&0916_rev&0110_f338080e09c4&col02#9&1937f32c&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: f338080e09c4
  Manufacturer: Microsoft
  Product:      BluetoothMouse3600
  Release:      110
  Interface:    -1
  Usage (page): 0x1 (0xc)
  Bus type: 2

Device Found
  type: 045e 0916
  path: \\?\hid#{00001812-0000-1000-8000-00805f9b34fb}_dev_vid&02045e_pid&0916_rev&0110_f338080e09c4&col03#9&1937f32c&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: f338080e09c4
  Manufacturer: Microsoft
  Product:      BluetoothMouse3600
  Release:      110
  Interface:    -1
  Usage (page): 0x1 (0xc)
  Bus type: 2

Device Found
  type: 8087 0a1e
  path: \\?\hid#intc816#3&d2322f2&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      200
  Interface:    -1
  Usage (page): 0xd (0x1)
  Bus type: 0

Device Found
  type: 06cb cd40
  path: \\?\hid#syna7dab&col01#5&2f64dfea&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      501
  Interface:    -1
  Usage (page): 0x2 (0x1)
  Bus type: 3

Device Found
  type: 06cb cd40
  path: \\?\hid#syna7dab&col02#5&2f64dfea&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      501
  Interface:    -1
  Usage (page): 0x5 (0xd)
  Bus type: 3

Device Found
  type: 06cb cd40
  path: \\?\hid#syna7dab&col03#5&2f64dfea&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      501
  Interface:    -1
  Usage (page): 0xe (0xd)
  Bus type: 3

Device Found
  type: 06cb cd40
  path: \\?\hid#syna7dab&col04#5&2f64dfea&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      501
  Interface:    -1
  Usage (page): 0x1 (0xff00)
  Bus type: 3

Device Found
  type: 046d c52b
  path: \\?\hid#vid_046d&pid_c52b&mi_01&col01#7&1119bfb4&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x2 (0x1)
  Bus type: 1

Device Found
  type: 045e 0000
  path: \\?\hid#converteddevice&col02#5&32cf90e6&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x1 (0xc)
  Bus type: 0

Device Found
  type: 046d c52b
  path: \\?\hid#vid_046d&pid_c52b&mi_01&col02#7&1119bfb4&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x1 (0xc)
  Bus type: 1

Device Found
  type: 045e 0000
  path: \\?\hid#converteddevice&col03#5&32cf90e6&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x80 (0x1)
  Bus type: 0

Device Found
  type: 046d c52b
  path: \\?\hid#vid_046d&pid_c52b&mi_01&col03#7&1119bfb4&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x80 (0x1)
  Bus type: 1

Device Found
  type: deed feed
  path: \\?\hid#10251229#3&9d5d338&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: Acer Inc
  Product:      Acer Airplane Mode Controller
  Release:      101
  Interface:    -1
  Usage (page): 0xc (0x1)
  Bus type: 0

Device Found
  type: 045e 0000
  path: \\?\hid#converteddevice&col01#5&32cf90e6&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x6 (0x1)
  Bus type: 0

Device Found
  type: 046d c52b
  path: \\?\hid#vid_046d&pid_c52b&mi_01&col04#7&1119bfb4&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x88 (0xffbc)
  Bus type: 1

Device Found
  type: 046d c52b
  path: \\?\hid#vid_046d&pid_c52b&mi_02&col01#7&12bd7e0e&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    2
  Usage (page): 0x1 (0xff00)
  Bus type: 1

Device Found
  type: 046d c52b
  path: \\?\hid#vid_046d&pid_c52b&mi_02&col02#7&12bd7e0e&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    2
  Usage (page): 0x2 (0xff00)
  Bus type: 1

Device Found
  type: 046d c52b
  path: \\?\hid#vid_046d&pid_c52b&mi_02&col03#7&12bd7e0e&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    2
  Usage (page): 0x4 (0xff00)
  Bus type: 1

Device Found
  type: 046d c52b
  path: \\?\hid#vid_046d&pid_c52b&mi_00#7&34f0fd76&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    0
  Usage (page): 0x6 (0x1)
  Bus type: 1

Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_00#7&34f0fd76&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    0
  Usage (page): 0x6 (0x1)

Handle 2: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_00#7&34f0fd76&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    0
  Usage (page): 0x6 (0x1)

Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_01&col01#7&1119bfb4&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x2 (0x1)

Handle 2: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_01&col01#7&1119bfb4&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x2 (0x1)

Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_01&col02#7&1119bfb4&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x1 (0xc)

Handle 2: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_01&col02#7&1119bfb4&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x1 (0xc)

Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_01&col03#7&1119bfb4&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x80 (0x1)

Handle 2: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_01&col03#7&1119bfb4&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x80 (0x1)

Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_01&col04#7&1119bfb4&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x88 (0xffbc)

Handle 2: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_01&col04#7&1119bfb4&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x88 (0xffbc)

Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_02&col01#7&12bd7e0e&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    2
  Usage (page): 0x1 (0xff00)

Handle 2: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_02&col01#7&12bd7e0e&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    2
  Usage (page): 0x1 (0xff00)

Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_02&col02#7&12bd7e0e&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    2
  Usage (page): 0x2 (0xff00)

Handle 2: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_02&col02#7&12bd7e0e&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    2
  Usage (page): 0x2 (0xff00)

Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_02&col03#7&12bd7e0e&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    2
  Usage (page): 0x4 (0xff00)

Handle 2: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_02&col03#7&12bd7e0e&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    2
  Usage (page): 0x4 (0xff00)

Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col02#7&1119bfb4&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x1 (0xc)

Handle 2: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col02#7&1119bfb4&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x1 (0xc)

Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col03#7&1119bfb4&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x80 (0x1)

Handle 2: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col03#7&1119bfb4&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x80 (0x1)

Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col04#7&1119bfb4&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x88 (0xffbc)

Handle 2: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col04#7&1119bfb4&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x88 (0xffbc)

Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_02&col01#7&12bd7e0e&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    2
  Usage (page): 0x1 (0xff00)

Handle 2: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_02&col01#7&12bd7e0e&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    2
  Usage (page): 0x1 (0xff00)

Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_02&col02#7&12bd7e0e&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    2
  Usage (page): 0x2 (0xff00)

Handle 2: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_02&col02#7&12bd7e0e&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    2
  Usage (page): 0x2 (0xff00)

Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_02&col03#7&12bd7e0e&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    2
  Usage (page): 0x4 (0xff00)

Handle 2: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_02&col03#7&12bd7e0e&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    2
  Usage (page): 0x4 (0xff00)

Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_00#7&34f0fd76&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    0
  Usage (page): 0x6 (0x1)

Handle 2: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_00#7&34f0fd76&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    0
  Usage (page): 0x6 (0x1)

Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col01#7&1119bfb4&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x2 (0x1)

Handle 2: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col01#7&1119bfb4&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}.
type: 046d c52b
  serial_number:
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      1203
  Interface:    1
  Usage (page): 0x2 (0x1)

> I think there is a flag on `hid_hotplug_register_callback`, the basic test program has `HID_API_HOTPLUG_ENUMERATE` on it. Setting it to 0 seems to not enumerate already connected devices. Thanks. Yes this is the one. ``` PS C:\work\libusb\hidapi_pr299> git diff diff --git a/hidtest/test.c b/hidtest/test.c index 4c0988e..dfb1b52 100644 --- a/hidtest/test.c +++ b/hidtest/test.c @@ -135,8 +135,8 @@ int main(int argc, char* argv[]) print_devices(devs); hid_free_enumeration(devs); - hid_hotplug_register_callback(0, 0, HID_API_HOTPLUG_EVENT_DEVICE_ARRIVED | HID_API_HOTPLUG_EVENT_DEVICE_LEFT, HID_API_HOTPLUG_ENUMERATE, device_callback, NULL, &token1); - hid_hotplug_register_callback(0x054c, 0x0ce6, HID_API_HOTPLUG_EVENT_DEVICE_ARRIVED | HID_API_HOTPLUG_EVENT_DEVICE_LEFT, HID_API_HOTPLUG_ENUMERATE, device_callback, NULL, &token2); + hid_hotplug_register_callback(0, 0, HID_API_HOTPLUG_EVENT_DEVICE_ARRIVED | HID_API_HOTPLUG_EVENT_DEVICE_LEFT, 0, device_callback, NULL, &token1); + hid_hotplug_register_callback(0x046d, 0xc52b, HID_API_HOTPLUG_EVENT_DEVICE_ARRIVED | HID_API_HOTPLUG_EVENT_DEVICE_LEFT, 0, device_callback, NULL, &token2); while (1) { PS C:\work\libusb\hidapi_pr299> .\windows\Debug\hidtest.exe hidapi test/example tool. Compiled with hidapi version 0.13.1, runtime version 0.13.1. Compile-time version matches runtime version of hidapi. Device Found type: 045e 0916 path: \\?\hid#{00001812-0000-1000-8000-00805f9b34fb}_dev_vid&02045e_pid&0916_rev&0110_f338080e09c4&col01#9&1937f32c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: f338080e09c4 Manufacturer: Microsoft Product: BluetoothMouse3600 Release: 110 Interface: -1 Usage (page): 0x2 (0x1) Bus type: 2 Device Found type: 045e 0916 path: \\?\hid#{00001812-0000-1000-8000-00805f9b34fb}_dev_vid&02045e_pid&0916_rev&0110_f338080e09c4&col02#9&1937f32c&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: f338080e09c4 Manufacturer: Microsoft Product: BluetoothMouse3600 Release: 110 Interface: -1 Usage (page): 0x1 (0xc) Bus type: 2 Device Found type: 045e 0916 path: \\?\hid#{00001812-0000-1000-8000-00805f9b34fb}_dev_vid&02045e_pid&0916_rev&0110_f338080e09c4&col03#9&1937f32c&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: f338080e09c4 Manufacturer: Microsoft Product: BluetoothMouse3600 Release: 110 Interface: -1 Usage (page): 0x1 (0xc) Bus type: 2 Device Found type: 8087 0a1e path: \\?\hid#intc816#3&d2322f2&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 200 Interface: -1 Usage (page): 0xd (0x1) Bus type: 0 Device Found type: 06cb cd40 path: \\?\hid#syna7dab&col01#5&2f64dfea&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 501 Interface: -1 Usage (page): 0x2 (0x1) Bus type: 3 Device Found type: 06cb cd40 path: \\?\hid#syna7dab&col02#5&2f64dfea&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 501 Interface: -1 Usage (page): 0x5 (0xd) Bus type: 3 Device Found type: 06cb cd40 path: \\?\hid#syna7dab&col03#5&2f64dfea&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 501 Interface: -1 Usage (page): 0xe (0xd) Bus type: 3 Device Found type: 06cb cd40 path: \\?\hid#syna7dab&col04#5&2f64dfea&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 501 Interface: -1 Usage (page): 0x1 (0xff00) Bus type: 3 Device Found type: 046d c52b path: \\?\hid#vid_046d&pid_c52b&mi_01&col01#7&1119bfb4&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x2 (0x1) Bus type: 1 Device Found type: 045e 0000 path: \\?\hid#converteddevice&col02#5&32cf90e6&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x1 (0xc) Bus type: 0 Device Found type: 046d c52b path: \\?\hid#vid_046d&pid_c52b&mi_01&col02#7&1119bfb4&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x1 (0xc) Bus type: 1 Device Found type: 045e 0000 path: \\?\hid#converteddevice&col03#5&32cf90e6&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x80 (0x1) Bus type: 0 Device Found type: 046d c52b path: \\?\hid#vid_046d&pid_c52b&mi_01&col03#7&1119bfb4&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x80 (0x1) Bus type: 1 Device Found type: deed feed path: \\?\hid#10251229#3&9d5d338&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Acer Inc Product: Acer Airplane Mode Controller Release: 101 Interface: -1 Usage (page): 0xc (0x1) Bus type: 0 Device Found type: 045e 0000 path: \\?\hid#converteddevice&col01#5&32cf90e6&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x6 (0x1) Bus type: 0 Device Found type: 046d c52b path: \\?\hid#vid_046d&pid_c52b&mi_01&col04#7&1119bfb4&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x88 (0xffbc) Bus type: 1 Device Found type: 046d c52b path: \\?\hid#vid_046d&pid_c52b&mi_02&col01#7&12bd7e0e&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 2 Usage (page): 0x1 (0xff00) Bus type: 1 Device Found type: 046d c52b path: \\?\hid#vid_046d&pid_c52b&mi_02&col02#7&12bd7e0e&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 2 Usage (page): 0x2 (0xff00) Bus type: 1 Device Found type: 046d c52b path: \\?\hid#vid_046d&pid_c52b&mi_02&col03#7&12bd7e0e&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 2 Usage (page): 0x4 (0xff00) Bus type: 1 Device Found type: 046d c52b path: \\?\hid#vid_046d&pid_c52b&mi_00#7&34f0fd76&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 0 Usage (page): 0x6 (0x1) Bus type: 1 Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_00#7&34f0fd76&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 0 Usage (page): 0x6 (0x1) Handle 2: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_00#7&34f0fd76&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 0 Usage (page): 0x6 (0x1) Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_01&col01#7&1119bfb4&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x2 (0x1) Handle 2: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_01&col01#7&1119bfb4&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x2 (0x1) Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_01&col02#7&1119bfb4&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x1 (0xc) Handle 2: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_01&col02#7&1119bfb4&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x1 (0xc) Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_01&col03#7&1119bfb4&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x80 (0x1) Handle 2: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_01&col03#7&1119bfb4&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x80 (0x1) Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_01&col04#7&1119bfb4&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x88 (0xffbc) Handle 2: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_01&col04#7&1119bfb4&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x88 (0xffbc) Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_02&col01#7&12bd7e0e&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 2 Usage (page): 0x1 (0xff00) Handle 2: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_02&col01#7&12bd7e0e&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 2 Usage (page): 0x1 (0xff00) Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_02&col02#7&12bd7e0e&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 2 Usage (page): 0x2 (0xff00) Handle 2: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_02&col02#7&12bd7e0e&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 2 Usage (page): 0x2 (0xff00) Handle 1: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_02&col03#7&12bd7e0e&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 2 Usage (page): 0x4 (0xff00) Handle 2: Device was disconnected: \\?\hid#vid_046d&pid_c52b&mi_02&col03#7&12bd7e0e&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 2 Usage (page): 0x4 (0xff00) Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col02#7&1119bfb4&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x1 (0xc) Handle 2: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col02#7&1119bfb4&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x1 (0xc) Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col03#7&1119bfb4&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x80 (0x1) Handle 2: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col03#7&1119bfb4&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x80 (0x1) Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col04#7&1119bfb4&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x88 (0xffbc) Handle 2: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col04#7&1119bfb4&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x88 (0xffbc) Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_02&col01#7&12bd7e0e&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 2 Usage (page): 0x1 (0xff00) Handle 2: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_02&col01#7&12bd7e0e&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 2 Usage (page): 0x1 (0xff00) Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_02&col02#7&12bd7e0e&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 2 Usage (page): 0x2 (0xff00) Handle 2: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_02&col02#7&12bd7e0e&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 2 Usage (page): 0x2 (0xff00) Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_02&col03#7&12bd7e0e&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 2 Usage (page): 0x4 (0xff00) Handle 2: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_02&col03#7&12bd7e0e&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 2 Usage (page): 0x4 (0xff00) Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_00#7&34f0fd76&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 0 Usage (page): 0x6 (0x1) Handle 2: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_00#7&34f0fd76&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 0 Usage (page): 0x6 (0x1) Handle 1: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col01#7&1119bfb4&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x2 (0x1) Handle 2: New device is connected: \\?\hid#vid_046d&pid_c52b&mi_01&col01#7&1119bfb4&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}. type: 046d c52b serial_number: Manufacturer: Logitech Product: USB Receiver Release: 1203 Interface: 1 Usage (page): 0x2 (0x1) ```
Youw commented 2023-04-19 09:02:21 -05:00 (Migrated from github.com)

Interestingly macos-automake passed.

Yeah, it is not only a compiler - we explicitly set "more warnings and warnings-as-errors" only for CMake builds for our CI.

> Interestingly macos-automake passed. Yeah, it is not only a compiler - we explicitly set "more warnings and warnings-as-errors" only for CMake builds for our CI.
DJm00n commented 2023-04-19 09:39:06 -05:00 (Migrated from github.com)

Run log under Windows. I run hidtest.exe. Then I unplug the Logitech USB Receiver and then plug it back in.
@DJm00n I am thinking that for the first run the devices should not be considered as newly plug-in. In fact for this Acer laptop, only the Microsoft Bluetooth Mouse and the Logitech USB Receiver are external devices.
...

I think there is a flag on hid_hotplug_register_callback, the basic test program has HID_API_HOTPLUG_ENUMERATE on it. Setting it to 0 seems to not enumerate already connected devices.

Yup.

/** Arm the callback and fire it for all matching currently attached devices. */
HID_API_HOTPLUG_ENUMERATE = (1 << 0)
> > Run log under Windows. I run hidtest.exe. Then I unplug the Logitech USB Receiver and then plug it back in. > > @DJm00n I am thinking that for the first run the devices should not be considered as newly plug-in. In fact for this Acer laptop, only the Microsoft Bluetooth Mouse and the Logitech USB Receiver are external devices. > > ... > > I think there is a flag on `hid_hotplug_register_callback`, the basic test program has `HID_API_HOTPLUG_ENUMERATE` on it. Setting it to 0 seems to not enumerate already connected devices. Yup. ```cpp /** Arm the callback and fire it for all matching currently attached devices. */ HID_API_HOTPLUG_ENUMERATE = (1 << 0) ```
mini-ninja-64 commented 2023-04-25 01:33:54 -05:00 (Migrated from github.com)

Happy to see progress on this 😍
Once merged to the feature branch i can open a MacOS implementation PR against it.

What's remaining before the merge to feature branch?

Happy to see progress on this 😍 Once merged to the feature branch i can open a MacOS implementation PR against it. What's remaining before the merge to feature branch?
DJm00n commented 2023-04-25 01:55:47 -05:00 (Migrated from github.com)

@mini-ninja-64 its missing some mutex protection of the callback list on register/unregister/notify

@mini-ninja-64 its missing some mutex protection of the callback list on register/unregister/notify
Youw (Migrated from github.com) reviewed 2023-04-30 16:14:54 -05:00
@ -428,3 +465,3 @@
return -1;
return token_value;
return interface_number;
Youw (Migrated from github.com) commented 2023-04-30 16:14:54 -05:00

interesting why MinGW doesn't inline this function (failed CI)
lets make it static - it wouldn't really affect performance, but at least one compiler will have less complains

static int hid_internal_match_device_id(unsigned short vendor_id, unsigned short product_id, unsigned short expected_vendor_id, unsigned short expected_product_id)
interesting why MinGW doesn't inline this function (failed CI) lets make it `static` - it wouldn't really affect performance, but at least one compiler will have less complains ```suggestion static int hid_internal_match_device_id(unsigned short vendor_id, unsigned short product_id, unsigned short expected_vendor_id, unsigned short expected_product_id) ```
Youw commented 2023-05-01 06:20:58 -05:00 (Migrated from github.com)

As promised - merged into dev branch, so the community may work on the implementation for other backends.

I've opened a separate ticket for the "mutex problem".

As promised - merged into dev branch, so the community may work on the implementation for other backends. I've opened a separate ticket for the "mutex problem".
Sign in to join this conversation.
No reviewers
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
gh-libusb/hidapi!299
No description provided.