#pragma once #include "core/types.h" // HID over transports other than USB. The report parser and the keyboard and // pointer paths are kernel/drivers/usb/hid/usb_hid.c's; a transport hands // over the report descriptor once and every input report after it. // The device described by `desc`, or 0 if it is neither a keyboard nor a // pointer. `what` names it in the log. void *hid_attach(const uchar *desc, int n, const char *what); // One input report, report ID included when the device uses them. void hid_attached_input(void *h, const uchar *rep, int len); // For GMMOS, after a panic: whether a device is a keyboard, and one of its // reports rewritten into the 8-byte boot layout (modifiers, reserved, six // usages) with nothing else done -- no queue, no lock, no events. 0 when the // report was not a keyboard's. int hid_is_keyboard(void *h); int hid_boot_report(void *h, const uchar *rep, int len, uchar *boot); // I2C-HID: the touchpads (and some keyboards) of laptops. Started once ACPI // and kernel threads are up; see kernel/drivers/i2c/i2c_hid.c. void i2c_hid_start(void);