Define a HID Report Descriptor snippet:
0x06, 0x00, 0xFF, // Usage Page (Vendor Defined)
0x09, 0x01, // Usage (Calibration)
0x15, 0x00, // Logical Minimum (0)
0x26, 0xFF, 0x00, // Logical Maximum (255)
0x75, 0x08, // Report Size (8 bits)
0x95, 0x08, // Report Count (8 bytes)
0x82, 0x02, 0x01, // Feature (Data,Var,Vol)
In your driver’s SetFeatureReport handler, parse the 8 bytes, validate, and store calibration. kmdf hid minidriver for touch i2c device calibration best
Best Practice: Do not require device reset during calibration update. Apply new parameters immediately to the next touch sample. Define a HID Report Descriptor snippet: 0x06, 0x00,
A touch controller (e.g., Goodix, Elan, Cypress) exposes registers: In your driver’s SetFeatureReport handler, parse the 8
Your KMDF driver must handle:
A HID Minidriver (also called a HID Transport Driver) sits below the class driver (HIDClass.sys). Its job is to communicate directly with the I²C controller, retrieve HID reports from the touch device, and forward them up the stack.
Touch Device (I2C) → KMDF HID Minidriver → HIDClass.sys → Touch Input Stack → User Mode
Define a HID Report Descriptor snippet:
0x06, 0x00, 0xFF, // Usage Page (Vendor Defined)
0x09, 0x01, // Usage (Calibration)
0x15, 0x00, // Logical Minimum (0)
0x26, 0xFF, 0x00, // Logical Maximum (255)
0x75, 0x08, // Report Size (8 bits)
0x95, 0x08, // Report Count (8 bytes)
0x82, 0x02, 0x01, // Feature (Data,Var,Vol)
In your driver’s SetFeatureReport handler, parse the 8 bytes, validate, and store calibration.
Best Practice: Do not require device reset during calibration update. Apply new parameters immediately to the next touch sample.
A touch controller (e.g., Goodix, Elan, Cypress) exposes registers:
Your KMDF driver must handle:
A HID Minidriver (also called a HID Transport Driver) sits below the class driver (HIDClass.sys). Its job is to communicate directly with the I²C controller, retrieve HID reports from the touch device, and forward them up the stack.
Touch Device (I2C) → KMDF HID Minidriver → HIDClass.sys → Touch Input Stack → User Mode