45 lines
1.2 KiB
C
45 lines
1.2 KiB
C
|
// SPDX-License-Identifier: GPL-2.0
|
||
|
|
||
|
#include <linux/hid.h>
|
||
|
#include <linux/kernel.h>
|
||
|
#include <linux/module.h>
|
||
|
#include <linux/usb.h>
|
||
|
|
||
|
/* On défini quels périphériques usb notre driver va pouvoir utiliser. */
|
||
|
static const struct usb_device_id mydriver_id_table[] = {
|
||
|
/* ici pour un périphérique en particulier (VendorID:ProductID) */
|
||
|
{USB_DEVICE(0x03eb, 0x2042)},
|
||
|
/* Pour définir une classe d'interface usb. n'existe que pour les claviers et
|
||
|
* les souris ?
|
||
|
* cf. include/linux/usb.h:1039 et include/linux/uapi/linux/hid.h:{35,41,42}
|
||
|
*/
|
||
|
{USB_INTERFACE_INFO
|
||
|
(USB_INTERFACE_CLASS_HID, USB_INTERFACE_SUBCLASS_BOOT,
|
||
|
USB_INTERFACE_PROTOCOL_KEYBOARD)},
|
||
|
/* indique la fin de la liste */
|
||
|
{}
|
||
|
};
|
||
|
|
||
|
/* exporte dans le userspace la table des périphériques supportés. Cela permet
|
||
|
* de lier le périphérique avec le driver.
|
||
|
*/
|
||
|
MODULE_DEVICE_TABLE(usb, mydriver_id_table);
|
||
|
|
||
|
static int __init my_init(void)
|
||
|
{
|
||
|
pr_info("Coucou le gens !!!!\n");
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
static void __exit my_exit(void)
|
||
|
{
|
||
|
pr_info("Tschuss !!!\n");
|
||
|
}
|
||
|
|
||
|
module_init(my_init);
|
||
|
module_exit(my_exit);
|
||
|
|
||
|
MODULE_LICENSE("GPL");
|
||
|
MODULE_AUTHOR("rick <rick@gnous.eu>");
|
||
|
MODULE_DESCRIPTION("Module chargé lorsqu'un un clavier est branché.");
|