#include #include #include #include #include #include #include static struct module this_module; static struct usb_driver driver; static struct usb_device_id device_table[]; static int device_probe(struct usb_interface *intf, const struct usb_device_id *id); static void device_disconnect(struct usb_interface *intf); static struct usb_driver driver = { .name = "USB keyboard", .id_table = device_table, .probe = device_probe, .disconnect = device_disconnect, }; static struct usb_device_id device_table[] = { { USB_DEVICE( 0x1997, 0x2433) }, { } }; static int device_probe(struct usb_interface *intf, const struct usb_device_id *id) { // called when device is connected return 0; } static void device_disconnect(struct usb_interface *intf) { // called when device is unplugged } static int __init mod_init(void) { // register our module with the usb system int check; char *mod_name = "USB Keyboard"; check = usb_register_driver(&driver, &this_module, mod_name); if(check < 0) { printk("device failed to register"); return -1; } else { printk("device is registered!"); } return 0; } static void __exit mod_exit(void) { // cleanup usb_deregister(&driver); } module_init(mod_init); module_exit(mod_exit);