USB HID keyboard

nRF5 SDK v12.2.0

nRF52840 only: Module with types, definitions, and API used by the HID keyboard class. More...

Modules

USB HID keyboard descriptors
nRF52840 only: Module with types, definitions, and API used by the HID keyboard class.
USB HID keyboard configuration
USB HID keyboard internals
nRF52840 only: Module with types, definitions, and API used by the HID keyboard class.

Data Structures

struct app_usbd_hid_kbd_t
HID keyboard class instance type. More...

Macros

#define APP_USBD_HID_KBD_GLOBAL_DEF (instance_name, interface_number, endpoint, user_ev_handler)
Global definition of app_usbd_hid_kbd_t class. More...

Enumerations

enum app_usbd_hid_kbd_codes_t {
APP_USBD_HID_KBD_A = 4,
APP_USBD_HID_KBD_B = 5,
APP_USBD_HID_KBD_C = 6,
APP_USBD_HID_KBD_D = 7,
APP_USBD_HID_KBD_E = 8,
APP_USBD_HID_KBD_F = 9,
APP_USBD_HID_KBD_G = 10,
APP_USBD_HID_KBD_H = 11,
APP_USBD_HID_KBD_I = 12,
APP_USBD_HID_KBD_J = 13,
APP_USBD_HID_KBD_K = 14,
APP_USBD_HID_KBD_L = 15,
APP_USBD_HID_KBD_M = 16,
APP_USBD_HID_KBD_N = 17,
APP_USBD_HID_KBD_O = 18,
APP_USBD_HID_KBD_P = 19,
APP_USBD_HID_KBD_Q = 20,
APP_USBD_HID_KBD_R = 21,
APP_USBD_HID_KBD_S = 22,
APP_USBD_HID_KBD_T = 23,
APP_USBD_HID_KBD_U = 24,
APP_USBD_HID_KBD_V = 25,
APP_USBD_HID_KBD_W = 26,
APP_USBD_HID_KBD_X = 27,
APP_USBD_HID_KBD_Y = 28,
APP_USBD_HID_KBD_Z = 29,
APP_USBD_HID_KBD_1 = 30,
APP_USBD_HID_KBD_2 = 31,
APP_USBD_HID_KBD_3 = 32,
APP_USBD_HID_KBD_4 = 33,
APP_USBD_HID_KBD_5 = 34,
APP_USBD_HID_KBD_6 = 35,
APP_USBD_HID_KBD_7 = 36,
APP_USBD_HID_KBD_8 = 37,
APP_USBD_HID_KBD_9 = 38,
APP_USBD_HID_KBD_0 = 39,
APP_USBD_HID_KBD_ENTER = 40,
APP_USBD_HID_KBD_ESCAPE = 41,
APP_USBD_HID_KBD_BACKSPACE = 42,
APP_USBD_HID_KBD_TAB = 43,
APP_USBD_HID_KBD_SPACEBAR = 44,
APP_USBD_HID_KBD_UNDERSCORE = 45,
APP_USBD_HID_KBD_PLUS = 46,
APP_USBD_HID_KBD_OPEN_BRACKET = 47,
APP_USBD_HID_KBD_CLOSE_BRACKET = 48,
APP_USBD_HID_KBD_BACKSLASH = 49,
APP_USBD_HID_KBD_ASH = 50,
APP_USBD_HID_KBD_COLON = 51,
APP_USBD_HID_KBD_QUOTE = 52,
APP_USBD_HID_KBD_TILDE = 53,
APP_USBD_HID_KBD_COMMA = 54,
APP_USBD_HID_KBD_DOT = 55,
APP_USBD_HID_KBD_SLASH = 56,
APP_USBD_HID_KBD_CAPS_LOCK = 57,
APP_USBD_HID_KBD_F1 = 58,
APP_USBD_HID_KBD_F2 = 59,
APP_USBD_HID_KBD_F3 = 60,
APP_USBD_HID_KBD_F4 = 61,
APP_USBD_HID_KBD_F5 = 62,
APP_USBD_HID_KBD_F6 = 63,
APP_USBD_HID_KBD_F7 = 64,
APP_USBD_HID_KBD_F8 = 65,
APP_USBD_HID_KBD_F9 = 66,
APP_USBD_HID_KBD_F10 = 67,
APP_USBD_HID_KBD_F11 = 68,
APP_USBD_HID_KBD_F12 = 69,
APP_USBD_HID_KBD_PRINTSCREEN = 70,
APP_USBD_HID_KBD_SCROLL_LOCK = 71,
APP_USBD_HID_KBD_PAUSE = 72,
APP_USBD_HID_KBD_INSERT = 73,
APP_USBD_HID_KBD_HOME = 74,
APP_USBD_HID_KBD_PAGEUP = 75,
APP_USBD_HID_KBD_DELETE = 76,
APP_USBD_HID_KBD_END = 77,
APP_USBD_HID_KBD_PAGEDOWN = 78,
APP_USBD_HID_KBD_RIGHT = 79,
APP_USBD_HID_KBD_LEFT = 80,
APP_USBD_HID_KBD_DOWN = 81,
APP_USBD_HID_KBD_UP = 82,
APP_USBD_HID_KBD_KEYPAD_NUM_LOCK = 83,
APP_USBD_HID_KBD_KEYPAD_DIVIDE = 84,
APP_USBD_HID_KBD_KEYPAD_AT = 85,
APP_USBD_HID_KBD_KEYPAD_MULTIPLY = 85,
APP_USBD_HID_KBD_KEYPAD_MINUS = 86,
APP_USBD_HID_KBD_KEYPAD_PLUS = 87,
APP_USBD_HID_KBD_KEYPAD_ENTER = 88,
APP_USBD_HID_KBD_KEYPAD_1 = 89,
APP_USBD_HID_KBD_KEYPAD_2 = 90,
APP_USBD_HID_KBD_KEYPAD_3 = 91,
APP_USBD_HID_KBD_KEYPAD_4 = 92,
APP_USBD_HID_KBD_KEYPAD_5 = 93,
APP_USBD_HID_KBD_KEYPAD_6 = 94,
APP_USBD_HID_KBD_KEYPAD_7 = 95,
APP_USBD_HID_KBD_KEYPAD_8 = 96,
APP_USBD_HID_KBD_KEYPAD_9 = 97,
APP_USBD_HID_KBD_KEYPAD_0 = 98
}
HID keyboard codes. More...
enum app_usbd_hid_kbd_modifier_t {
APP_USBD_HID_KBD_MODIFIER_NONE = 0x00,
APP_USBD_HID_KBD_MODIFIER_LEFT_CTRL = 0x01,
APP_USBD_HID_KBD_MODIFIER_LEFT_SHIFT = 0x02,
APP_USBD_HID_KBD_MODIFIER_LEFT_ALT = 0x04,
APP_USBD_HID_KBD_MODIFIER_LEFT_UI = 0x08,
APP_USBD_HID_KBD_MODIFIER_RIGHT_CTRL = 0x10,
APP_USBD_HID_KBD_MODIFIER_RIGHT_SHIFT = 0x20,
APP_USBD_HID_KBD_MODIFIER_RIGHT_ALT = 0x40,
APP_USBD_HID_KBD_MODIFIER_RIGHT_UI = 0x80
}
HID keyboard modifier. More...
enum app_usbd_hid_kbd_led_t {
APP_USBD_HID_KBD_LED_NUM_LOCK = 0x01,
APP_USBD_HID_KBD_LED_CAPS_LOCK = 0x02,
APP_USBD_HID_KBD_LED_SCROLL_LOCK = 0x04,
APP_USBD_HID_KBD_LED_COMPOSE = 0x08,
APP_USBD_HID_KBD_LED_KANA = 0x10
}
HID keyboard LEDs. More...

Functions

static app_usbd_class_inst_t
const *
app_usbd_hid_kbd_class_inst_get ( app_usbd_hid_kbd_t const *p_kbd)
Helper function to get class instance from HID keyboard internals. More...
static app_usbd_hid_kbd_t const * app_usbd_hid_kbd_class_get ( app_usbd_class_inst_t const *p_inst)
Helper function to get HID keyboard from base class instance. More...
ret_code_t app_usbd_hid_kbd_modifier_state_set ( app_usbd_hid_kbd_t const *p_kbd, app_usbd_hid_kbd_modifier_t modifier, bool state)
Set HID keyboard modifier state. More...
ret_code_t app_usbd_hid_kbd_key_control ( app_usbd_hid_kbd_t const *p_kbd, app_usbd_hid_kbd_codes_t key, bool press)
Press/release HID keyboard key. More...
bool app_usbd_hid_kbd_led_state_get ( app_usbd_hid_kbd_t const *p_kbd, app_usbd_hid_kbd_led_t led)
HID Keyboard LEDs state get. More...

Detailed Description

nRF52840 only: Module with types, definitions, and API used by the HID keyboard class.

Macro Definition Documentation

#define APP_USBD_HID_KBD_GLOBAL_DEF ( instance_name,
interface_number,
endpoint,
user_ev_handler
)
Value:
interface_number, \
endpoint, \
user_ev_handler)

Global definition of app_usbd_hid_kbd_t class.

Parameters
instance_name Name of global instance
interface_number Unique interface index
endpoint Input endpoint ( nrf_drv_usbd_ep_t )
user_ev_handler User event handler (optional)

Example class definition:

Enumeration Type Documentation

HID keyboard codes.

Enumerator
APP_USBD_HID_KBD_A

KBD_A code

APP_USBD_HID_KBD_B

KBD_B code

APP_USBD_HID_KBD_C

KBD_C code

APP_USBD_HID_KBD_D

KBD_D code

APP_USBD_HID_KBD_E

KBD_E code

APP_USBD_HID_KBD_F

KBD_F code

APP_USBD_HID_KBD_G

KBD_G code

APP_USBD_HID_KBD_H

KBD_H code

APP_USBD_HID_KBD_I

KBD_I code

APP_USBD_HID_KBD_J

KBD_J code

APP_USBD_HID_KBD_K

KBD_K code

APP_USBD_HID_KBD_L

KBD_L code

APP_USBD_HID_KBD_M

KBD_M code

APP_USBD_HID_KBD_N

KBD_N code

APP_USBD_HID_KBD_O

KBD_O code

APP_USBD_HID_KBD_P

KBD_P code

APP_USBD_HID_KBD_Q

KBD_Q code

APP_USBD_HID_KBD_R

KBD_R code

APP_USBD_HID_KBD_S

KBD_S code

APP_USBD_HID_KBD_T

KBD_T code

APP_USBD_HID_KBD_U

KBD_U code

APP_USBD_HID_KBD_V

KBD_V code

APP_USBD_HID_KBD_W

KBD_W code

APP_USBD_HID_KBD_X

KBD_X code

APP_USBD_HID_KBD_Y

KBD_Y code

APP_USBD_HID_KBD_Z

KBD_Z code

APP_USBD_HID_KBD_1

KBD_1 code

APP_USBD_HID_KBD_2

KBD_2 code

APP_USBD_HID_KBD_3

KBD_3 code

APP_USBD_HID_KBD_4

KBD_4 code

APP_USBD_HID_KBD_5

KBD_5 code

APP_USBD_HID_KBD_6

KBD_6 code

APP_USBD_HID_KBD_7

KBD_7 code

APP_USBD_HID_KBD_8

KBD_8 code

APP_USBD_HID_KBD_9

KBD_9 code

APP_USBD_HID_KBD_0

KBD_0 code

APP_USBD_HID_KBD_ENTER

KBD_ENTER code

APP_USBD_HID_KBD_ESCAPE

KBD_ESCAPE code

APP_USBD_HID_KBD_BACKSPACE

KBD_BACKSPACE code

APP_USBD_HID_KBD_TAB

KBD_TAB code

APP_USBD_HID_KBD_SPACEBAR

KBD_SPACEBAR code

APP_USBD_HID_KBD_UNDERSCORE

KBD_UNDERSCORE code

APP_USBD_HID_KBD_PLUS

KBD_PLUS code

APP_USBD_HID_KBD_OPEN_BRACKET

KBD_OPEN_BRACKET code

APP_USBD_HID_KBD_CLOSE_BRACKET

KBD_CLOSE_BRACKET code

APP_USBD_HID_KBD_BACKSLASH

KBD_BACKSLASH code

APP_USBD_HID_KBD_ASH

KBD_ASH code

APP_USBD_HID_KBD_COLON

KBD_COLON code

APP_USBD_HID_KBD_QUOTE

KBD_QUOTE code

APP_USBD_HID_KBD_TILDE

KBD_TILDE code

APP_USBD_HID_KBD_COMMA

KBD_COMMA code

APP_USBD_HID_KBD_DOT

KBD_DOT code

APP_USBD_HID_KBD_SLASH

KBD_SLASH code

APP_USBD_HID_KBD_CAPS_LOCK

KBD_CAPS_LOCK code

APP_USBD_HID_KBD_F1

KBD_F1 code

APP_USBD_HID_KBD_F2

KBD_F2 code

APP_USBD_HID_KBD_F3

KBD_F3 code

APP_USBD_HID_KBD_F4

KBD_F4 code

APP_USBD_HID_KBD_F5

KBD_F5 code

APP_USBD_HID_KBD_F6

KBD_F6 code

APP_USBD_HID_KBD_F7

KBD_F7 code

APP_USBD_HID_KBD_F8

KBD_F8 code

APP_USBD_HID_KBD_F9

KBD_F9 code

APP_USBD_HID_KBD_F10

KBD_F10 code

APP_USBD_HID_KBD_F11

KBD_F11 code

APP_USBD_HID_KBD_F12

KBD_F12 code

APP_USBD_HID_KBD_PRINTSCREEN

KBD_PRINTSCREEN code

APP_USBD_HID_KBD_SCROLL_LOCK

KBD_SCROLL_LOCK code

APP_USBD_HID_KBD_PAUSE

KBD_PAUSE code

APP_USBD_HID_KBD_INSERT

KBD_INSERT code

APP_USBD_HID_KBD_HOME

KBD_HOME code

APP_USBD_HID_KBD_PAGEUP

KBD_PAGEUP code

APP_USBD_HID_KBD_DELETE

KBD_DELETE code

APP_USBD_HID_KBD_END

KBD_END code

APP_USBD_HID_KBD_PAGEDOWN

KBD_PAGEDOWN code

APP_USBD_HID_KBD_RIGHT

KBD_RIGHT code

APP_USBD_HID_KBD_LEFT

KBD_LEFT code

APP_USBD_HID_KBD_DOWN

KBD_DOWN code

APP_USBD_HID_KBD_UP

KBD_UP code

APP_USBD_HID_KBD_KEYPAD_NUM_LOCK

KBD_KEYPAD_NUM_LOCK code

APP_USBD_HID_KBD_KEYPAD_DIVIDE

KBD_KEYPAD_DIVIDE code

APP_USBD_HID_KBD_KEYPAD_AT

KBD_KEYPAD_AT code

APP_USBD_HID_KBD_KEYPAD_MULTIPLY

KBD_KEYPAD_MULTIPLY code

APP_USBD_HID_KBD_KEYPAD_MINUS

KBD_KEYPAD_MINUS code

APP_USBD_HID_KBD_KEYPAD_PLUS

KBD_KEYPAD_PLUS code

APP_USBD_HID_KBD_KEYPAD_ENTER

KBD_KEYPAD_ENTER code

APP_USBD_HID_KBD_KEYPAD_1

KBD_KEYPAD_1 code

APP_USBD_HID_KBD_KEYPAD_2

KBD_KEYPAD_2 code

APP_USBD_HID_KBD_KEYPAD_3

KBD_KEYPAD_3 code

APP_USBD_HID_KBD_KEYPAD_4

KBD_KEYPAD_4 code

APP_USBD_HID_KBD_KEYPAD_5

KBD_KEYPAD_5 code

APP_USBD_HID_KBD_KEYPAD_6

KBD_KEYPAD_6 code

APP_USBD_HID_KBD_KEYPAD_7

KBD_KEYPAD_7 code

APP_USBD_HID_KBD_KEYPAD_8

KBD_KEYPAD_8 code

APP_USBD_HID_KBD_KEYPAD_9

KBD_KEYPAD_9 code

APP_USBD_HID_KBD_KEYPAD_0

KBD_KEYPAD_0 code

HID keyboard LEDs.

Enumerator
APP_USBD_HID_KBD_LED_NUM_LOCK

LED_NUM_LOCK id

APP_USBD_HID_KBD_LED_CAPS_LOCK

LED_CAPS_LOCK id

APP_USBD_HID_KBD_LED_SCROLL_LOCK

LED_SCROLL_LOCK id

APP_USBD_HID_KBD_LED_COMPOSE

LED_COMPOSE id

APP_USBD_HID_KBD_LED_KANA

LED_KANA id

HID keyboard modifier.

Enumerator
APP_USBD_HID_KBD_MODIFIER_NONE

MODIFIER_NONE bit

APP_USBD_HID_KBD_MODIFIER_LEFT_CTRL

MODIFIER_LEFT_CTRL bit

APP_USBD_HID_KBD_MODIFIER_LEFT_SHIFT

MODIFIER_LEFT_SHIFT bit

APP_USBD_HID_KBD_MODIFIER_LEFT_ALT

MODIFIER_LEFT_ALT bit

APP_USBD_HID_KBD_MODIFIER_LEFT_UI

MODIFIER_LEFT_UI bit

APP_USBD_HID_KBD_MODIFIER_RIGHT_CTRL

MODIFIER_RIGHT_CTRL bit

APP_USBD_HID_KBD_MODIFIER_RIGHT_SHIFT

MODIFIER_RIGHT_SHIFT bit

APP_USBD_HID_KBD_MODIFIER_RIGHT_ALT

MODIFIER_RIGHT_ALT bit

APP_USBD_HID_KBD_MODIFIER_RIGHT_UI

MODIFIER_RIGHT_UI bit

Function Documentation

static app_usbd_hid_kbd_t const* app_usbd_hid_kbd_class_get ( app_usbd_class_inst_t const * p_inst )
inline static

Helper function to get HID keyboard from base class instance.

Parameters
[in] p_inst Base class instance
Returns
HID keyboard class handle
static app_usbd_class_inst_t const* app_usbd_hid_kbd_class_inst_get ( app_usbd_hid_kbd_t const * p_kbd )
inline static

Helper function to get class instance from HID keyboard internals.

Parameters
[in] p_kbd Keyboard instance (declared by APP_USBD_HID_KBD_GLOBAL_DEF )
Returns
Base class instance
ret_code_t app_usbd_hid_kbd_key_control ( app_usbd_hid_kbd_t const * p_kbd ,
app_usbd_hid_kbd_codes_t key ,
bool press
)

Press/release HID keyboard key.

Parameters
[in] p_kbd Keyboard instance (declared by APP_USBD_HID_KBD_GLOBAL_DEF )
[in] key Keyboard key code
[in] press True -> key press, false -> release
Returns
Standard error code
bool app_usbd_hid_kbd_led_state_get ( app_usbd_hid_kbd_t const * p_kbd ,
app_usbd_hid_kbd_led_t led
)

HID Keyboard LEDs state get.

Parameters
[in] p_kbd Keyboard instance (declared by APP_USBD_HID_KBD_GLOBAL_DEF )
[in] led LED code
Returns
true if LED is set, false otherwise
ret_code_t app_usbd_hid_kbd_modifier_state_set ( app_usbd_hid_kbd_t const * p_kbd ,
app_usbd_hid_kbd_modifier_t modifier ,
bool state
)

Set HID keyboard modifier state.

Parameters
[in] p_kbd Keyboard instance (declared by APP_USBD_HID_KBD_GLOBAL_DEF )
[in] modifier Type of modifier
[in] state State, true active, false inactive
Returns
Standard error code