void USBH_HID_EventCallback(USBH_HandleTypeDef *phost) { if (USBH_HID_GetDeviceType(&hUSBHost) == HID_MOUSE) { HID_MOUSE_Info_TypeDef *m_pinfo_mouse; m_pinfo_mouse = USBH_HID_GetMouseInfo(phost); if (m_pinfo_mouse) { // USBH_DbgLog("btns:%u%u%u", m_pinfo_mouse->buttons[0],m_pinfo_mouse->buttons[1],m_pinfo_mouse->buttons[2]); hid_buttons[0] = m_pinfo_mouse->buttons[0]; hid_buttons[1] = m_pinfo_mouse->buttons[1]; hid_buttons[2] = m_pinfo_mouse->buttons[2]; hid_mouse_x += m_pinfo_mouse->x; hid_mouse_y += m_pinfo_mouse->y; } else { hid_buttons[0] = 0; hid_buttons[1] = 0; hid_buttons[2] = 0; } USBH_DbgLog("btns:%u%u%u", hid_buttons[0],hid_buttons[1],hid_buttons[2]); } else if (USBH_HID_GetDeviceType(&hUSBHost) == HID_KEYBOARD) { HID_KEYBD_Info_TypeDef *m_pinfo_keyb; m_pinfo_keyb = USBH_HID_GetKeybdInfo(phost); if (m_pinfo_keyb) { if (m_pinfo_keyb->lshift) { USBH_DbgLog("ls"); } if (m_pinfo_keyb->rshift) { USBH_DbgLog("rs"); } } } }
/** * @brief Main routine for Keyboard application * @param phost: Host handle * @retval None */ static void USBH_KeybdDemo(USBH_HandleTypeDef *phost) { HID_KEYBD_Info_TypeDef *k_pinfo; char c; k_pinfo = USBH_HID_GetKeybdInfo(phost); if(k_pinfo != NULL) { c = USBH_HID_GetASCIICode(k_pinfo); if(c != 0) { USR_KEYBRD_ProcessData(c); } } }
/** * @brief Main routine for Keyboard application * @param phost: Host handle * @retval None */ static void USBH_KeybdDemo(USBH_HandleTypeDef *phost) { HID_KEYBD_Info_TypeDef *k_pinfo; char c; if(hid_demo.keyboard_state != HID_KEYBOARD_START) { k_pinfo = USBH_HID_GetKeybdInfo(phost); if(k_pinfo != NULL) { c = USBH_HID_GetASCIICode(k_pinfo); if(c != 0) { USR_KEYBRD_ProcessData(c); } } } }
TM_USBH_HID_t TM_USBH_HID_GetKeyboard(TM_USB_t USB_Mode, TM_USBH_HID_Keyboard_t* KeyboardStruct) { HID_KEYBD_Info_TypeDef* k_pinfo; uint8_t i; /* Get keyboard informations */ k_pinfo = USBH_HID_GetKeybdInfo(TM_USBH_GetUSBPointer(USB_Mode)); /* Check for ASCII value */ if (k_pinfo != NULL) { /* Get ASCII value */ KeyboardStruct->C = USBH_HID_GetASCIICode(k_pinfo); /* Copy everything */ for (i = 0; i < 6; i++) { KeyboardStruct->Keys[i] = k_pinfo->keys[i]; } /* Control pins */ KeyboardStruct->Special.S.LAlt = k_pinfo->lalt ? 1 : 0; KeyboardStruct->Special.S.LShift = k_pinfo->lshift ? 1 : 0; KeyboardStruct->Special.S.LCtrl = k_pinfo->lctrl ? 1 : 0; KeyboardStruct->Special.S.LGUI = k_pinfo->lgui ? 1 : 0; KeyboardStruct->Special.S.RAlt = k_pinfo->ralt ? 1 : 0; KeyboardStruct->Special.S.RShift = k_pinfo->rshift ? 1 : 0; KeyboardStruct->Special.S.RCtrl = k_pinfo->rctrl ? 1 : 0; KeyboardStruct->Special.S.RGUI = k_pinfo->rgui ? 1 : 0; KeyboardStruct->Status = k_pinfo->state; /* Set flags if needed */ KeyboardStruct->Special.S.Alt = KeyboardStruct->Special.S.LAlt | KeyboardStruct->Special.S.RAlt; KeyboardStruct->Special.S.Shift = KeyboardStruct->Special.S.LShift | KeyboardStruct->Special.S.RShift; KeyboardStruct->Special.S.Ctrl = KeyboardStruct->Special.S.LCtrl | KeyboardStruct->Special.S.RCtrl; KeyboardStruct->Special.S.GUI = KeyboardStruct->Special.S.LGUI | KeyboardStruct->Special.S.RGUI; /* Keyboard connected and OK */ return TM_USBH_HID_Keyboard; } /* Return ERROR */ return TM_USBH_HID_None; }