1 #include "../usb_wrapper.h"
3 #define keyboarddebug 1
6 //extern int printk(const char *szFormat, ...);
10 unsigned int current_keyboard_key
;
14 unsigned char kbd_pkt
[8];
19 struct usb_device *usbdev;
21 struct usb_ctrlrequest dr;
22 unsigned char leds, newleds;
28 static void usb_kbd_irq(struct urb
*urb
, struct pt_regs
*regs
)
30 struct usb_kbd_info
*kbd
= urb
->context
;
33 if (urb
->status
) return;
35 memcpy(kbd
->kbd_pkt
, urb
->transfer_buffer
, 8);
37 current_keyboard_key
= kbd
->kbd_pkt
[2];
42 //ycoffset = ycoffset % 600;
43 //VIDEO_CURSOR_POSX=20;
44 //VIDEO_CURSOR_POSY=ycoffset;
45 printk(" -%02x %02x %02x %02x %02x %02x\n",kbd
->kbd_pkt
[0],kbd
->kbd_pkt
[1],kbd
->kbd_pkt
[2],kbd
->kbd_pkt
[3],kbd
->kbd_pkt
[4],kbd
->kbd_pkt
[5]);
48 usb_submit_urb(urb
,GFP_ATOMIC
);
52 static int usb_kbd_probe(struct usb_interface
*intf
, const struct usb_device_id
*id
)
55 struct usb_device
*udev
= interface_to_usbdev (intf
);
56 struct usb_endpoint_descriptor
*ep_irq_in
;
57 //struct usb_endpoint_descriptor *ep_irq_out;
58 struct usb_kbd_info
*usbk
;
63 usbk
=(struct usb_kbd_info
*)kmalloc(sizeof(struct usb_kbd_info
),0);
66 urb
=usb_alloc_urb(0,0);
71 ep_irq_in
= &intf
->altsetting
[0].endpoint
[0].desc
;
72 usb_fill_int_urb(urb
, udev
,
73 usb_rcvintpipe(udev
, ep_irq_in
->bEndpointAddress
),
74 usbk
->kbd_pkt
, 8, usb_kbd_irq
,
77 usb_submit_urb(urb
,GFP_ATOMIC
);
78 usb_set_intfdata(intf
,usbk
);
80 printk("USB Keyboard Connected\n");
87 static void usb_kbd_disconnect(struct usb_interface
*intf
)
89 struct usb_kbd_info
*usbk
= usb_get_intfdata (intf
);
90 usbprintk("Keyboard disconnected\n ");
91 usb_unlink_urb(usbk
->urb
);
92 usb_free_urb(usbk
->urb
);
96 static struct usb_device_id usb_kbd_id_table
[] = {
97 { USB_INTERFACE_INFO(3, 1, 1) },
98 { } /* Terminating entry */
102 static struct usb_driver usb_kbd_driver
= {
103 .owner
= THIS_MODULE
,
105 .probe
= usb_kbd_probe
,
106 .disconnect
= usb_kbd_disconnect
,
107 .id_table
= usb_kbd_id_table
,
110 void UsbKeyBoardInit(void)
112 //current_remote_key=0;
113 //sbprintk("Keyboard probe %p ",xremote_probe);
114 if (usb_register(&usb_kbd_driver
) < 0) {
116 printk("Unable to register Keyboard driver");
122 void UsbKeyBoardRemove(void) {
123 usb_deregister(&usb_kbd_driver
);