nRF5 SDK v17.1.0
Modules | Data Structures | Macros | Enumerations | Functions
USB HID keyboard

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 internals
 nRF52840 only: Module with types, definitions, and API used by the HID keyboard class.
 
 USB HID keyboard configuration
 

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, subclass_boot)
 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...
 
ret_code_t hid_kbd_on_set_protocol (app_usbd_hid_kbd_t const *p_kbd, app_usbd_hid_user_event_t ev)
 Function handling SET_PROTOCOL command. More...
 
ret_code_t hid_kbd_clear_buffer (app_usbd_class_inst_t const *p_inst)
 Function that clears HID keyboard buffers and sends an empty report. 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,
  subclass_boot 
)
Value:
static const app_usbd_hid_subclass_desc_t * keyboard_descs[] = {&keyboard_desc}; \
APP_USBD_HID_KBD_GLOBAL_DEF_INTERNAL(instance_name, \
interface_number, \
endpoint, \
user_ev_handler, \
subclass_boot)

Global definition of app_usbd_hid_kbd_t class.

Parameters
instance_nameName of global instance.
interface_numberUnique interface index.
endpointInput endpoint (nrf_drv_usbd_ep_t).
user_ev_handlerUser event handler (optional parameter: NULL might be passed here).
subclass_bootSubclass boot (app_usbd_hid_subclass_t).

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)
inlinestatic

Helper function to get HID keyboard from base class instance.

Parameters
[in]p_instBase 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)
inlinestatic

Helper function to get class instance from HID keyboard internals.

Parameters
[in]p_kbdKeyboard 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_kbdKeyboard instance (declared by APP_USBD_HID_KBD_GLOBAL_DEF).
[in]keyKeyboard key code.
[in]pressTrue -> 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_kbdKeyboard instance (declared by APP_USBD_HID_KBD_GLOBAL_DEF).
[in]ledLED code.
Return values
trueLED is set.
falseLED is not set.
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_kbdKeyboard instance (declared by APP_USBD_HID_KBD_GLOBAL_DEF).
[in]modifierType of modifier.
[in]stateState, true active, false inactive.
Returns
Standard error code.
ret_code_t hid_kbd_clear_buffer ( app_usbd_class_inst_t const *  p_inst)

Function that clears HID keyboard buffers and sends an empty report.

Parameters
[in]p_instBase class instance.
Returns
Standard error code.
ret_code_t hid_kbd_on_set_protocol ( app_usbd_hid_kbd_t const *  p_kbd,
app_usbd_hid_user_event_t  ev 
)

Function handling SET_PROTOCOL command.

Parameters
[in]p_kbdKeyboard instance.
[in]evUser event.
Returns
Standard error code.

Documentation feedback | Developer Zone | Subscribe | Updated