跟USB鼠标类型一样,USB键盘也属于HID类型,代码在/dirver/hid/usbhid/usbkbd.c下。USB键盘除了提交中断URB外,还需要提交控制URB。不多话,我们看代码static int __init usb_kbd_init(void) { int result = usb_register(&usb_kbd_driver); if (result == 0) printk(KERN_INFO KBUILD_MODNAME ": "...
kbd->dev.number, kbd->name, dev->bus->busnum, dev->devnum, ifnum); return kbd; } static void usb_kbd_disconnect(struct usb_device *dev, void *ptr) { struct usb_kbd *kbd = ptr; usb_unlink_urb(&kbd->irq); kfree(kbd); } static struct usb_device_id usb_kbd_id_table [] =...
usb鼠标和键盘的通用HID驱动程序在内核源码的 drivers/hid/usbhid/ 目录下,如下所示: # ls drivers/hid/usbhid/built-in.ahid-core.chid-core.ohiddev.chiddev.ohid-pidff.chid-pidff.oKconfigMakefilemodules.orderusbhid.husbkbd.cusbmouse.c drivers/hid/usbhid/Makefile # SPDX-License-Identifier: G...
usb_driver的断开函数,设置接口私有数据为NULL、终止已提交的URB、注销输入设备,如下代码清单所示。 static void usb_kbd_disconnect(struct usb_interface *intf){ struct usb_kbd *kbd = usb_get_intfdata (intf); usb_set_intfdata(intf, NULL); /* 设置接口私有数据为NULL */ if (kbd) { usb_kill_...
HP 125 USB WD KBD (sada 12 ks) (266C9A6) Všechny technické údaje Hardwarová kompatibilita Kompatibilní s počítači vybavenými portem USB-A. Kontrolka LED Caps Lock; Num Lock Délka kabelu 180 cm Popis konektoru
1 static void usb_kbd_irq(struct urb *urb) 2 { 3 struct usb_kbd *kbd = urb->context; 4 int i; 5 6 switch (urb->status) { 7 case 0: /* success */ 8 break; 9 case -ECONNRESET: /* unlink */ 10 case -ENOENT: 11 case -ESHUTDOWN: 12 return; 13 /* -EPIPE: should cl...
void KbdRptParser::OnKeyDown(uint8_t key) { const Ps2Key& ps2_key = hid2ps2[key]; Ps2KeyPress(ps2_key);last_press_key = &ps2_key; key_repeat_ct = 0; key_repeat_delay_ct = 0; }void KbdRptParser::OnControlKeysChanged(uint8_t before, uint8_t after) {...
usb_deregister(&usb_kbd_driver); } module_init(usb_kbd_init); module_exit(usb_kbd_exit); 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. usb_driver最主要的就是probe()和disconnect()两个函数。
位于:drivers\hid\usbhid\usbkbd.c 需要特别说明的是USB键盘的扫描码不是PS2的那种格式,是一种极其...