60#define ALIGN(n,align) (((n)+((align)-1)) & ~((align)-1))
62#define usb_dma_alloc(n) (KMALLOC(ALIGN((n),CACHE_ALIGN),BUFF_ALIGN))
63#define usb_dma_free(p) (KFREE(p))
69#define HID_BOOT_PROTOCOL 0
70#define HID_REPORT_PROTOCOL 1
72#define HID_DEVTYPE_UNKNOWN 0
73#define HID_DEVTYPE_KBD 1
74#define HID_DEVTYPE_MOUSE 2
75#define HID_DEVTYPE_MAX 2
80#define UBR_KBD_NUMKEYS 6
83#define KBD_MOD_LCTRL 0x01
84#define KBD_MOD_LSHIFT 0x02
85#define KBD_MOD_LALT 0x04
86#define KBD_MOD_LWIN 0x08
88#define KBD_MOD_RCTRL 0x10
89#define KBD_MOD_RSHIFT 0x20
90#define KBD_MOD_RALT 0x40
91#define KBD_MOD_RWIN 0x80
97#define usbhid_set_protocol(dev,protocol,ifc) \
98 usb_simple_request(dev,0x21,0x0B,0,ifc)
106static int usbhid_detach(
usbdev_t *dev);
122 "Human-Interface Device",
127static char *usbhid_devtypes[3] = {
133extern int pcconsole_enqueue(
uint8_t ch);
141#define FLG_NUM 0x0001
142#define FLG_CAPS 0x0002
143#define FLG_SCROLL 0x0004
144#define FLG_SHIFT 0x0008
145#define FLG_CTRL 0x0100
146#define FLG_ALT 0x0200
147#define FLG_FKEY 0x0400
148#define FLG_NKPD 0x0800
149#define FLG_ASCII 0x1000
150#define FLG_NONE 0x2000
235 {
FLG_FKEY,
"\033[M",
"\033[Y",
"\033[k" },
236 {
FLG_FKEY,
"\033[N",
"\033[Z",
"\033[l" },
237 {
FLG_FKEY,
"\033[O",
"\033[a",
"\033[m" },
238 {
FLG_FKEY,
"\033[P",
"\033[b",
"\033[n" },
239 {
FLG_FKEY,
"\033[Q",
"\033[c",
"\033[o" },
240 {
FLG_FKEY,
"\033[R",
"\033[d",
"\033[p" },
241 {
FLG_FKEY,
"\033[S",
"\033[e",
"\033[q" },
242 {
FLG_FKEY,
"\033[T",
"\033[f",
"\033[r" },
243 {
FLG_FKEY,
"\033[U",
"\033[g",
"\033[s" },
244 {
FLG_FKEY,
"\033[V",
"\033[h",
"\033[t" },
245 {
FLG_FKEY,
"\033[W",
"\033[i",
"\033[u" },
246 {
FLG_FKEY,
"\033[X",
"\033[j",
"\033[v" },
287#define usbhid_scantablesize (sizeof(usbhid_scantable)/sizeof(keycode_t))
315 if (changed == 0)
return;
357 code = &usbhid_scantable[scan];
383 pcconsole_enqueue(*
str++);
423 usbhid_kbd_mod1(uhid);
437 usbhid_kbd_scan1(uhid,uhid->
uhid_imsg[n],0);
472static int usbhid_ireq_callback(
usbreq_t *ur)
494 usbhid_kbd_scan(uhid);
507 printf(
"Mouse: [%s %s %s] X:%d Y:%d Wheel:%d\n",
590 if (!epdscr || !ifdscr) {
646 usbhid_queue_intreq(dev,softc);
666static int usbhid_detach(
usbdev_t *dev)
#define console_log(fmt, x...)
#define KMALLOC(size, align)
char kc_normal[KC_RESPLEN]
char kc_shifted[KC_RESPLEN]
uint8_t bConfigurationValue
uint8_t bInterfaceProtocol
usb_config_descr_t * ud_cfgdescr
uint8_t uhid_lastmsg[UBR_KBD_MAX]
int(* ur_callback)(struct usbreq_s *req)
#define GETUSBFIELD(s, f)
#define USB_ENDPOINT_DESCRIPTOR_TYPE
#define USB_INTERFACE_DESCRIPTOR_TYPE
void * usb_find_cfg_descr(usbdev_t *dev, int dtype, int idx)
usbreq_t * usb_make_request(usbdev_t *dev, int epaddr, uint8_t *buf, int length, int flags)
void usb_free_request(usbreq_t *ur)
int usb_queue_request(usbreq_t *ur)
int usb_set_configuration(usbdev_t *dev, int config)
int usb_open_pipe(usbdev_t *dev, usb_endpoint_descr_t *epdesc)
usb_driver_t usbhid_driver
struct keycode_s keycode_t
#define HID_BOOT_PROTOCOL
#define usbhid_set_protocol(dev, protocol, ifc)
#define usbhid_scantablesize
#define HID_DEVTYPE_MOUSE
#define HID_DEVTYPE_UNKNOWN
struct usbhid_softc_s usbhid_softc_t