#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/module.h>
#include <linux/usb/input.h>
#include <asm/unaligned.h>
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
#define USB_VENDOR_ID_KBGEAR …
static int kb_pressure_click = …;
module_param(kb_pressure_click, int, 0);
MODULE_PARM_DESC(…) …;
struct kbtab { … };
static void kbtab_irq(struct urb *urb)
{ … }
static const struct usb_device_id kbtab_ids[] = …;
MODULE_DEVICE_TABLE(usb, kbtab_ids);
static int kbtab_open(struct input_dev *dev)
{ … }
static void kbtab_close(struct input_dev *dev)
{ … }
static int kbtab_probe(struct usb_interface *intf, const struct usb_device_id *id)
{ … }
static void kbtab_disconnect(struct usb_interface *intf)
{ … }
static struct usb_driver kbtab_driver = …;
module_usb_driver(…) …;