mirror of
https://github.com/mfulz/qmk_firmware.git
synced 2025-06-27 17:15:18 +02:00
Added keyboard modifier masks (HID_KEYBOARD_MODIFER_*) to the HID class driver and Keyboard demos.
This commit is contained in:
parent
7602566a05
commit
196724c62d
@ -147,6 +147,8 @@ bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDIn
|
|||||||
|
|
||||||
uint8_t UsedKeyCodes = 0;
|
uint8_t UsedKeyCodes = 0;
|
||||||
|
|
||||||
|
KeyboardReport->Modifier = HID_KEYBOARD_MODIFER_LEFTSHIFT;
|
||||||
|
|
||||||
if (JoyStatus_LCL & JOY_UP)
|
if (JoyStatus_LCL & JOY_UP)
|
||||||
KeyboardReport->KeyCode[UsedKeyCodes++] = 0x04; // A
|
KeyboardReport->KeyCode[UsedKeyCodes++] = 0x04; // A
|
||||||
else if (JoyStatus_LCL & JOY_DOWN)
|
else if (JoyStatus_LCL & JOY_DOWN)
|
||||||
|
@ -180,6 +180,8 @@ bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDIn
|
|||||||
if (!(ButtonStatus_LCL & BUTTONS_BUTTON1))
|
if (!(ButtonStatus_LCL & BUTTONS_BUTTON1))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
KeyboardReport->Modifier = HID_KEYBOARD_MODIFER_LEFTSHIFT;
|
||||||
|
|
||||||
if (JoyStatus_LCL & JOY_UP)
|
if (JoyStatus_LCL & JOY_UP)
|
||||||
KeyboardReport->KeyCode[0] = 0x04; // A
|
KeyboardReport->KeyCode[0] = 0x04; // A
|
||||||
else if (JoyStatus_LCL & JOY_DOWN)
|
else if (JoyStatus_LCL & JOY_DOWN)
|
||||||
|
@ -192,6 +192,8 @@ bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDIn
|
|||||||
uint8_t JoyStatus_LCL = Joystick_GetStatus();
|
uint8_t JoyStatus_LCL = Joystick_GetStatus();
|
||||||
uint8_t ButtonStatus_LCL = Buttons_GetStatus();
|
uint8_t ButtonStatus_LCL = Buttons_GetStatus();
|
||||||
|
|
||||||
|
KeyboardReport->Modifier = HID_KEYBOARD_MODIFER_LEFTSHIFT;
|
||||||
|
|
||||||
if (JoyStatus_LCL & JOY_UP)
|
if (JoyStatus_LCL & JOY_UP)
|
||||||
KeyboardReport->KeyCode[0] = 0x04; // A
|
KeyboardReport->KeyCode[0] = 0x04; // A
|
||||||
else if (JoyStatus_LCL & JOY_DOWN)
|
else if (JoyStatus_LCL & JOY_DOWN)
|
||||||
|
@ -266,6 +266,9 @@ void CreateKeyboardReport(USB_KeyboardReport_Data_t* ReportData)
|
|||||||
/* Clear the report contents */
|
/* Clear the report contents */
|
||||||
memset(ReportData, 0, sizeof(USB_KeyboardReport_Data_t));
|
memset(ReportData, 0, sizeof(USB_KeyboardReport_Data_t));
|
||||||
|
|
||||||
|
/* Make sent key uppercase by indicating that the left shift key is pressed */
|
||||||
|
ReportData->Modifier = KEYBOARD_MODIFER_LEFTSHIFT;
|
||||||
|
|
||||||
if (JoyStatus_LCL & JOY_UP)
|
if (JoyStatus_LCL & JOY_UP)
|
||||||
ReportData->KeyCode[UsedKeyCodes++] = 0x04; // A
|
ReportData->KeyCode[UsedKeyCodes++] = 0x04; // A
|
||||||
else if (JoyStatus_LCL & JOY_DOWN)
|
else if (JoyStatus_LCL & JOY_DOWN)
|
||||||
|
@ -74,6 +74,30 @@
|
|||||||
/** HID Class specific request to set the current HID protocol in use, either report or boot. */
|
/** HID Class specific request to set the current HID protocol in use, either report or boot. */
|
||||||
#define REQ_SetProtocol 0x0B
|
#define REQ_SetProtocol 0x0B
|
||||||
|
|
||||||
|
/** Constant for a keyboard report modifier byte, indicating that the keyboard's left control key is currently pressed. */
|
||||||
|
#define KEYBOARD_MODIFER_LEFTCTRL (1 << 0)
|
||||||
|
|
||||||
|
/** Constant for a keyboard report modifier byte, indicating that the keyboard's left shift key is currently pressed. */
|
||||||
|
#define KEYBOARD_MODIFER_LEFTSHIFT (1 << 1)
|
||||||
|
|
||||||
|
/** Constant for a keyboard report modifier byte, indicating that the keyboard's left alt key is currently pressed. */
|
||||||
|
#define KEYBOARD_MODIFER_LEFTALT (1 << 2)
|
||||||
|
|
||||||
|
/** Constant for a keyboard report modifier byte, indicating that the keyboard's left GUI key is currently pressed. */
|
||||||
|
#define KEYBOARD_MODIFER_LEFTGUI (1 << 3)
|
||||||
|
|
||||||
|
/** Constant for a keyboard report modifier byte, indicating that the keyboard's right control key is currently pressed. */
|
||||||
|
#define KEYBOARD_MODIFER_RIGHTCTRL (1 << 4)
|
||||||
|
|
||||||
|
/** Constant for a keyboard report modifier byte, indicating that the keyboard's right shift key is currently pressed. */
|
||||||
|
#define KEYBOARD_MODIFER_RIGHTSHIFT (1 << 5)
|
||||||
|
|
||||||
|
/** Constant for a keyboard report modifier byte, indicating that the keyboard's right alt key is currently pressed. */
|
||||||
|
#define KEYBOARD_MODIFER_RIGHTALT (1 << 6)
|
||||||
|
|
||||||
|
/** Constant for a keyboard report modifier byte, indicating that the keyboard's right GUI key is currently pressed. */
|
||||||
|
#define KEYBOARD_MODIFER_RIGHTGUI (1 << 7)
|
||||||
|
|
||||||
/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
|
/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
|
||||||
#define LEDMASK_USB_NOTREADY LEDS_LED1
|
#define LEDMASK_USB_NOTREADY LEDS_LED1
|
||||||
|
|
||||||
|
@ -221,6 +221,9 @@ void Keyboard_HID_Task(void)
|
|||||||
/* Check if board button is not pressed, if so mouse mode enabled */
|
/* Check if board button is not pressed, if so mouse mode enabled */
|
||||||
if (!(Buttons_GetStatus() & BUTTONS_BUTTON1))
|
if (!(Buttons_GetStatus() & BUTTONS_BUTTON1))
|
||||||
{
|
{
|
||||||
|
/* Make sent key uppercase by indicating that the left shift key is pressed */
|
||||||
|
KeyboardReportData.Modifier = KEYBOARD_MODIFER_LEFTSHIFT;
|
||||||
|
|
||||||
if (JoyStatus_LCL & JOY_UP)
|
if (JoyStatus_LCL & JOY_UP)
|
||||||
KeyboardReportData.KeyCode[0] = 0x04; // A
|
KeyboardReportData.KeyCode[0] = 0x04; // A
|
||||||
else if (JoyStatus_LCL & JOY_DOWN)
|
else if (JoyStatus_LCL & JOY_DOWN)
|
||||||
|
@ -60,6 +60,30 @@
|
|||||||
/** HID Class specific request to set the current HID protocol in use, either report or boot. */
|
/** HID Class specific request to set the current HID protocol in use, either report or boot. */
|
||||||
#define REQ_SetProtocol 0x0B
|
#define REQ_SetProtocol 0x0B
|
||||||
|
|
||||||
|
/** Constant for a keyboard report modifier byte, indicating that the keyboard's left control key is currently pressed. */
|
||||||
|
#define KEYBOARD_MODIFER_LEFTCTRL (1 << 0)
|
||||||
|
|
||||||
|
/** Constant for a keyboard report modifier byte, indicating that the keyboard's left shift key is currently pressed. */
|
||||||
|
#define KEYBOARD_MODIFER_LEFTSHIFT (1 << 1)
|
||||||
|
|
||||||
|
/** Constant for a keyboard report modifier byte, indicating that the keyboard's left alt key is currently pressed. */
|
||||||
|
#define KEYBOARD_MODIFER_LEFTALT (1 << 2)
|
||||||
|
|
||||||
|
/** Constant for a keyboard report modifier byte, indicating that the keyboard's left GUI key is currently pressed. */
|
||||||
|
#define KEYBOARD_MODIFER_LEFTGUI (1 << 3)
|
||||||
|
|
||||||
|
/** Constant for a keyboard report modifier byte, indicating that the keyboard's right control key is currently pressed. */
|
||||||
|
#define KEYBOARD_MODIFER_RIGHTCTRL (1 << 4)
|
||||||
|
|
||||||
|
/** Constant for a keyboard report modifier byte, indicating that the keyboard's right shift key is currently pressed. */
|
||||||
|
#define KEYBOARD_MODIFER_RIGHTSHIFT (1 << 5)
|
||||||
|
|
||||||
|
/** Constant for a keyboard report modifier byte, indicating that the keyboard's right alt key is currently pressed. */
|
||||||
|
#define KEYBOARD_MODIFER_RIGHTALT (1 << 6)
|
||||||
|
|
||||||
|
/** Constant for a keyboard report modifier byte, indicating that the keyboard's right GUI key is currently pressed. */
|
||||||
|
#define KEYBOARD_MODIFER_RIGHTGUI (1 << 7)
|
||||||
|
|
||||||
/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
|
/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
|
||||||
#define LEDMASK_USB_NOTREADY LEDS_LED1
|
#define LEDMASK_USB_NOTREADY LEDS_LED1
|
||||||
|
|
||||||
|
@ -86,6 +86,30 @@
|
|||||||
*/
|
*/
|
||||||
#define HID_BOOT_MOUSE_PROTOCOL 0x02
|
#define HID_BOOT_MOUSE_PROTOCOL 0x02
|
||||||
|
|
||||||
|
/** Constant for a keyboard report modifier byte, indicating that the keyboard's left control key is currently pressed. */
|
||||||
|
#define HID_KEYBOARD_MODIFER_LEFTCTRL (1 << 0)
|
||||||
|
|
||||||
|
/** Constant for a keyboard report modifier byte, indicating that the keyboard's left shift key is currently pressed. */
|
||||||
|
#define HID_KEYBOARD_MODIFER_LEFTSHIFT (1 << 1)
|
||||||
|
|
||||||
|
/** Constant for a keyboard report modifier byte, indicating that the keyboard's left alt key is currently pressed. */
|
||||||
|
#define HID_KEYBOARD_MODIFER_LEFTALT (1 << 2)
|
||||||
|
|
||||||
|
/** Constant for a keyboard report modifier byte, indicating that the keyboard's left GUI key is currently pressed. */
|
||||||
|
#define HID_KEYBOARD_MODIFER_LEFTGUI (1 << 3)
|
||||||
|
|
||||||
|
/** Constant for a keyboard report modifier byte, indicating that the keyboard's right control key is currently pressed. */
|
||||||
|
#define HID_KEYBOARD_MODIFER_RIGHTCTRL (1 << 4)
|
||||||
|
|
||||||
|
/** Constant for a keyboard report modifier byte, indicating that the keyboard's right shift key is currently pressed. */
|
||||||
|
#define HID_KEYBOARD_MODIFER_RIGHTSHIFT (1 << 5)
|
||||||
|
|
||||||
|
/** Constant for a keyboard report modifier byte, indicating that the keyboard's right alt key is currently pressed. */
|
||||||
|
#define HID_KEYBOARD_MODIFER_RIGHTALT (1 << 6)
|
||||||
|
|
||||||
|
/** Constant for a keyboard report modifier byte, indicating that the keyboard's right GUI key is currently pressed. */
|
||||||
|
#define HID_KEYBOARD_MODIFER_RIGHTGUI (1 << 7)
|
||||||
|
|
||||||
/* Type Defines: */
|
/* Type Defines: */
|
||||||
/** Enum for the different types of HID reports. */
|
/** Enum for the different types of HID reports. */
|
||||||
enum HID_ReportItemTypes_t
|
enum HID_ReportItemTypes_t
|
||||||
@ -122,7 +146,9 @@
|
|||||||
/** Type define for a standard Boot Protocol Keyboard report */
|
/** Type define for a standard Boot Protocol Keyboard report */
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
uint8_t Modifier; /**< Keyboard modifier byte, indicating pressed modifier keys (such as Shift, Control, etc.) */
|
uint8_t Modifier; /**< Keyboard modifier byte, indicating pressed modifier keys (a combination of
|
||||||
|
* HID_KEYBOARD_MODIFER_* masks)
|
||||||
|
*/
|
||||||
uint8_t Reserved; /**< Reserved for OEM use, always set to 0 */
|
uint8_t Reserved; /**< Reserved for OEM use, always set to 0 */
|
||||||
uint8_t KeyCode[6]; /**< Key codes of the currently pressed keys */
|
uint8_t KeyCode[6]; /**< Key codes of the currently pressed keys */
|
||||||
} USB_KeyboardReport_Data_t;
|
} USB_KeyboardReport_Data_t;
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
* - New Webserver project, a RNDIS host USB webserver using the open source uIP TCP/IP network stack and FatFS library
|
* - New Webserver project, a RNDIS host USB webserver using the open source uIP TCP/IP network stack and FatFS library
|
||||||
* - New BOARD value option BOARD_NONE (equivelent to not specifying BOARD) which will remove all board hardware drivers which
|
* - New BOARD value option BOARD_NONE (equivelent to not specifying BOARD) which will remove all board hardware drivers which
|
||||||
* do not adversely affect the code operation (currently only the LEDs driver)
|
* do not adversely affect the code operation (currently only the LEDs driver)
|
||||||
|
* - Added keyboard modifier masks (HID_KEYBOARD_MODIFER_*) to the HID class driver and Keyboard demos
|
||||||
*
|
*
|
||||||
* <b>Changed:</b>
|
* <b>Changed:</b>
|
||||||
* - Slowed down software USART carried PDI programming in the AVRISP project to prevent transmission errors
|
* - Slowed down software USART carried PDI programming in the AVRISP project to prevent transmission errors
|
||||||
|
Loading…
x
Reference in New Issue
Block a user