Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Erik Strand
lufa
Commits
196724c6
Commit
196724c6
authored
Feb 07, 2010
by
Dean Camera
Browse files
Added keyboard modifier masks (HID_KEYBOARD_MODIFER_*) to the HID class driver and Keyboard demos.
parent
7602566a
Changes
10
Hide whitespace changes
Inline
Side-by-side
Demos/Device/ClassDriver/Keyboard/Keyboard.c
View file @
196724c6
...
...
@@ -147,6 +147,8 @@ bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDIn
uint8_t
UsedKeyCodes
=
0
;
KeyboardReport
->
Modifier
=
HID_KEYBOARD_MODIFER_LEFTSHIFT
;
if
(
JoyStatus_LCL
&
JOY_UP
)
KeyboardReport
->
KeyCode
[
UsedKeyCodes
++
]
=
0x04
;
// A
else
if
(
JoyStatus_LCL
&
JOY_DOWN
)
...
...
Demos/Device/ClassDriver/KeyboardMouse/KeyboardMouse.c
View file @
196724c6
...
...
@@ -180,6 +180,8 @@ bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDIn
if
(
!
(
ButtonStatus_LCL
&
BUTTONS_BUTTON1
))
return
0
;
KeyboardReport
->
Modifier
=
HID_KEYBOARD_MODIFER_LEFTSHIFT
;
if
(
JoyStatus_LCL
&
JOY_UP
)
KeyboardReport
->
KeyCode
[
0
]
=
0x04
;
// A
else
if
(
JoyStatus_LCL
&
JOY_DOWN
)
...
...
Demos/Device/ClassDriver/MassStorageKeyboard/MassStorageKeyboard.c
View file @
196724c6
...
...
@@ -192,6 +192,8 @@ bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDIn
uint8_t
JoyStatus_LCL
=
Joystick_GetStatus
();
uint8_t
ButtonStatus_LCL
=
Buttons_GetStatus
();
KeyboardReport
->
Modifier
=
HID_KEYBOARD_MODIFER_LEFTSHIFT
;
if
(
JoyStatus_LCL
&
JOY_UP
)
KeyboardReport
->
KeyCode
[
0
]
=
0x04
;
// A
else
if
(
JoyStatus_LCL
&
JOY_DOWN
)
...
...
Demos/Device/LowLevel/Keyboard/Keyboard.c
View file @
196724c6
...
...
@@ -266,6 +266,9 @@ void CreateKeyboardReport(USB_KeyboardReport_Data_t* ReportData)
/* Clear the report contents */
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
)
ReportData
->
KeyCode
[
UsedKeyCodes
++
]
=
0x04
;
// A
else
if
(
JoyStatus_LCL
&
JOY_DOWN
)
...
...
Demos/Device/LowLevel/Keyboard/Keyboard.h
View file @
196724c6
...
...
@@ -54,37 +54,61 @@
/* Macros: */
/** Idle period indicating that reports should be sent only when the inputs have changed */
#define HID_IDLE_CHANGESONLY 0
#define HID_IDLE_CHANGESONLY
0
/** HID Class specific request to get the next HID report from the device. */
#define REQ_GetReport 0x01
#define REQ_GetReport
0x01
/** HID Class specific request to get the idle timeout period of the device. */
#define REQ_GetIdle 0x02
#define REQ_GetIdle
0x02
/** HID Class specific request to send the next HID report to the device. */
#define REQ_SetReport 0x09
#define REQ_SetReport
0x09
/** HID Class specific request to set the idle timeout period of the device. */
#define REQ_SetIdle 0x0A
#define REQ_SetIdle
0x0A
/** HID Class specific request to get the current HID protocol in use, either report or boot. */
#define REQ_GetProtocol 0x03
#define REQ_GetProtocol
0x03
/** 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. */
#define LEDMASK_USB_NOTREADY LEDS_LED1
#define LEDMASK_USB_NOTREADY
LEDS_LED1
/** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */
#define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3)
#define LEDMASK_USB_ENUMERATING
(LEDS_LED2 | LEDS_LED3)
/** LED mask for the library LED driver, to indicate that the USB interface is ready. */
#define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4)
#define LEDMASK_USB_READY
(LEDS_LED2 | LEDS_LED4)
/** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */
#define LEDMASK_USB_ERROR (LEDS_LED1 | LEDS_LED3)
#define LEDMASK_USB_ERROR
(LEDS_LED1 | LEDS_LED3)
/* Type Defines: */
/** Type define for the keyboard HID report structure, for creating and sending HID reports to the host PC.
...
...
Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.c
View file @
196724c6
...
...
@@ -221,6 +221,9 @@ void Keyboard_HID_Task(void)
/* Check if board button is not pressed, if so mouse mode enabled */
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
)
KeyboardReportData
.
KeyCode
[
0
]
=
0x04
;
// A
else
if
(
JoyStatus_LCL
&
JOY_DOWN
)
...
...
Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.h
View file @
196724c6
...
...
@@ -49,28 +49,52 @@
/* Macros: */
/** HID Class specific request to get the next HID report from the device. */
#define REQ_GetReport 0x01
#define REQ_GetReport
0x01
/** HID Class specific request to send the next HID report to the device. */
#define REQ_SetReport 0x09
#define REQ_SetReport
0x09
/** HID Class specific request to get the current HID protocol in use, either report or boot. */
#define REQ_GetProtocol 0x03
#define REQ_GetProtocol
0x03
/** 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. */
#define LEDMASK_USB_NOTREADY LEDS_LED1
#define LEDMASK_USB_NOTREADY
LEDS_LED1
/** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */
#define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3)
#define LEDMASK_USB_ENUMERATING
(LEDS_LED2 | LEDS_LED3)
/** LED mask for the library LED driver, to indicate that the USB interface is ready. */
#define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4)
#define LEDMASK_USB_READY
(LEDS_LED2 | LEDS_LED4)
/** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */
#define LEDMASK_USB_ERROR (LEDS_LED1 | LEDS_LED3)
#define LEDMASK_USB_ERROR
(LEDS_LED1 | LEDS_LED3)
/* Type Defines: */
/** Type define for the keyboard HID report structure, for creating and sending HID reports to the host PC.
...
...
Demos/Device/LowLevel/MassStorage/Lib/SCSI.h
View file @
196724c6
...
...
@@ -86,7 +86,7 @@
unsigned
char
_RESERVED1
:
7
;
unsigned
char
Removable
:
1
;
uint8_t
Version
;
uint8_t
Version
;
unsigned
char
ResponseDataFormat
:
4
;
unsigned
char
_RESERVED2
:
1
;
...
...
@@ -94,8 +94,8 @@
unsigned
char
TrmTsk
:
1
;
unsigned
char
AERC
:
1
;
uint8_t
AdditionalLength
;
uint8_t
_RESERVED3
[
2
];
uint8_t
AdditionalLength
;
uint8_t
_RESERVED3
[
2
];
unsigned
char
SoftReset
:
1
;
unsigned
char
CmdQue
:
1
;
...
...
@@ -106,9 +106,9 @@
unsigned
char
WideBus32Bit
:
1
;
unsigned
char
RelAddr
:
1
;
uint8_t
VendorID
[
8
];
uint8_t
ProductID
[
16
];
uint8_t
RevisionID
[
4
];
uint8_t
VendorID
[
8
];
uint8_t
ProductID
[
16
];
uint8_t
RevisionID
[
4
];
}
SCSI_Inquiry_Response_t
;
/** Type define for a SCSI sense structure to a SCSI REQUEST SENSE command. For details of the
...
...
@@ -126,13 +126,13 @@
unsigned
char
EOM
:
1
;
unsigned
char
FileMark
:
1
;
uint8_t
Information
[
4
];
uint8_t
AdditionalLength
;
uint8_t
CmdSpecificInformation
[
4
];
uint8_t
AdditionalSenseCode
;
uint8_t
AdditionalSenseQualifier
;
uint8_t
FieldReplaceableUnitCode
;
uint8_t
SenseKeySpecific
[
3
];
uint8_t
Information
[
4
];
uint8_t
AdditionalLength
;
uint8_t
CmdSpecificInformation
[
4
];
uint8_t
AdditionalSenseCode
;
uint8_t
AdditionalSenseQualifier
;
uint8_t
FieldReplaceableUnitCode
;
uint8_t
SenseKeySpecific
[
3
];
}
SCSI_Request_Sense_Response_t
;
/* Function Prototypes: */
...
...
LUFA/Drivers/USB/Class/Common/HID.h
View file @
196724c6
...
...
@@ -48,43 +48,67 @@
/* Macros: */
/** HID Class Specific Request to get the current HID report from the device. */
#define REQ_GetReport 0x01
#define REQ_GetReport
0x01
/** HID Class Specific Request to get the current device idle count. */
#define REQ_GetIdle 0x02
#define REQ_GetIdle
0x02
/** HID Class Specific Request to set the current HID report to the device. */
#define REQ_SetReport 0x09
#define REQ_SetReport
0x09
/** HID Class Specific Request to set the device's idle count. */
#define REQ_SetIdle 0x0A
#define REQ_SetIdle
0x0A
/** HID Class Specific Request to get the current HID report protocol mode. */
#define REQ_GetProtocol 0x03
#define REQ_GetProtocol
0x03
/** HID Class Specific Request to set the current HID report protocol mode. */
#define REQ_SetProtocol 0x0B
#define REQ_SetProtocol
0x0B
/** Descriptor header type value, to indicate a HID class HID descriptor. */
#define DTYPE_HID 0x21
#define DTYPE_HID
0x21
/** Descriptor header type value, to indicate a HID class HID report descriptor. */
#define DTYPE_Report 0x22
#define DTYPE_Report
0x22
/** Constant for the protocol value of a HID interface descriptor, indicating that the interface does not support
* any HID class boot protocol (see HID Class Specification).
*/
#define HID_NON_BOOT_PROTOCOL 0x00
#define HID_NON_BOOT_PROTOCOL
0x00
/** Constant for the protocol value of a HID interface descriptor, indicating that the interface supports the
* HID class Keyboard boot protocol (see HID Class Specification).
*/
#define HID_BOOT_KEYBOARD_PROTOCOL 0x01
#define HID_BOOT_KEYBOARD_PROTOCOL
0x01
/** Constant for the protocol value of a HID interface descriptor, indicating that the interface supports the
* HID class Mouse boot protocol (see HID Class Specification).
*/
#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: */
/** Enum for the different types of HID reports. */
...
...
@@ -122,7 +146,9 @@
/** Type define for a standard Boot Protocol Keyboard report */
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
KeyCode
[
6
];
/**< Key codes of the currently pressed keys */
}
USB_KeyboardReport_Data_t
;
...
...
LUFA/ManPages/ChangeLog.txt
View file @
196724c6
...
...
@@ -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 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)
* - Added keyboard modifier masks (HID_KEYBOARD_MODIFER_*) to the HID class driver and Keyboard demos
*
* <b>Changed:</b>
* - Slowed down software USART carried PDI programming in the AVRISP project to prevent transmission errors
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment