Select one of the symbols to view example projects that use it.
 
Outline
...
...
...
...
...
...
#define UX_HOST_CLASS_HID_KEYBOARD_H
#define UX_HOST_CLASS_HID_KEYBOARD_BUFFER_LENGTH
#define UX_HOST_CLASS_HID_KEYBOARD_USAGE_ARRAY_LENGTH
#define UX_HID_LED_KEY_CAPS_LOCK
#define UX_HID_LED_KEY_NUM_LOCK
#define UX_HID_LED_KEY_SCROLL_LOCK
#define UX_HID_MODIFIER_KEY_LEFT_CONTROL
#define UX_HID_MODIFIER_KEY_LEFT_SHIFT
#define UX_HID_MODIFIER_KEY_LEFT_ALT
#define UX_HID_MODIFIER_KEY_LEFT_GUI
#define UX_HID_MODIFIER_KEY_RIGHT_CONTROL
#define UX_HID_MODIFIER_KEY_RIGHT_SHIFT
#define UX_HID_MODIFIER_KEY_RIGHT_ALT
#define UX_HID_MODIFIER_KEY_RIGHT_GUI
#define UX_HID_KEYBOARD_STATE_NUM_LOCK
#define UX_HID_KEYBOARD_STATE_CAPS_LOCK
#define UX_HID_KEYBOARD_STATE_SCROLL_LOCK
#define UX_HID_KEYBOARD_STATE_MASK_LOCK
#define UX_HID_KEYBOARD_STATE_LEFT_SHIFT
#define UX_HID_KEYBOARD_STATE_RIGHT_SHIFT
#define UX_HID_KEYBOARD_STATE_SHIFT
#define UX_HID_KEYBOARD_STATE_LEFT_ALT
#define UX_HID_KEYBOARD_STATE_RIGHT_ALT
#define UX_HID_KEYBOARD_STATE_ALT
#define UX_HID_KEYBOARD_STATE_LEFT_CTRL
#define UX_HID_KEYBOARD_STATE_RIGHT_CTRL
#define UX_HID_KEYBOARD_STATE_CTRL
#define UX_HID_KEYBOARD_STATE_LEFT_GUI
#define UX_HID_KEYBOARD_STATE_RIGHT_GUI
#define UX_HID_KEYBOARD_STATE_GUI
#define UX_HID_KEYBOARD_STATE_KEY_UP
#define UX_HID_KEYBOARD_STATE_FUNCTION
#define UX_HID_KEYBOARD_NO_KEY
#define UX_HID_KEYBOARD_PHANTOM_STATE
#define UX_HID_KEYBOARD_KEY_LETTER_A
#define UX_HID_KEYBOARD_KEY_LETTER_Z
#define UX_HID_KEYBOARD_KEYS_KEYPAD_LOWER_RANGE
#define UX_HID_KEYBOARD_KEYS_KEYPAD_UPPER_RANGE
#define UX_HID_KEYBOARD_KEYS_UPPER_RANGE
#define UX_HID_KEYBOARD_IOCTL_SET_LAYOUT
#define UX_HID_KEYBOARD_IOCTL_DISABLE_KEYS_DECODE
#define UX_HID_KEYBOARD_IOCTL_ENABLE_KEYS_DECODE
UX_HOST_CLASS_HID_KEYBOARD_LAYOUT_STRUCT
UX_HOST_CLASS_HID_KEYBOARD_STRUCT
_ux_host_class_hid_keyboard_callback(UX_HOST_CLASS_HID_REPORT_CALLBACK *);
_ux_host_class_hid_keyboard_activate(UX_HOST_CLASS_HID_CLIENT_COMMAND *);
_ux_host_class_hid_keyboard_deactivate(UX_HOST_CLASS_HID_CLIENT_COMMAND *);
_ux_host_class_hid_keyboard_entry(UX_HOST_CLASS_HID_CLIENT_COMMAND *);
_ux_host_class_hid_keyboard_thread(ULONG);
_ux_host_class_hid_keyboard_key_get(UX_HOST_CLASS_HID_KEYBOARD *, ULONG *, ULONG *);
_ux_host_class_hid_keyboard_ioctl(UX_HOST_CLASS_HID_KEYBOARD *, ULONG, void *);
_ux_host_class_hid_keyboard_tasks_run(UX_HOST_CLASS_HID_CLIENT *);
#define ux_host_class_hid_keyboard_entry
#define ux_host_class_hid_keyboard_key_get
#define ux_host_class_hid_keyboard_ioctl
Files
loading...
SourceVuSTM32 Libraries and Samplesusbxcommon/usbx_host_classes/inc/ux_host_class_hid_keyboard.h
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
/**************************************************************************/ /* */ /* Copyright (c) Microsoft Corporation. All rights reserved. */ /* */ /* This software is licensed under the Microsoft Software License */ /* Terms for Microsoft Azure RTOS. Full text of the license can be */ /* found in the LICENSE file at https://aka.ms/AzureRTOS_EULA */ /* and in the root directory of this software. */ /* */... /**************************************************************************/ ... /**************************************************************************/ /**************************************************************************/ /** */ /** USBX Component */ /** */ /** HID Keyboard Client */ /** */... /**************************************************************************/ /**************************************************************************/ ... /**************************************************************************/ /* */ /* COMPONENT DEFINITION RELEASE */ /* */ /* ux_host_class_hid_keyboard.h PORTABLE C */ /* 6.1.10 */ /* AUTHOR */ /* */ /* Chaoqiong Xiao, Microsoft Corporation */ /* */ /* DESCRIPTION */ /* */ /* This file contains all the header and extern functions used by the */ /* USBX HID keyboard client. */ /* */ /* RELEASE HISTORY */ /* */ /* DATE NAME DESCRIPTION */ /* */ /* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */ /* 09-30-2020 Chaoqiong Xiao Modified comment(s), */ /* used UX prefix to refer to */ /* TX symbols instead of using */ /* them directly, */ /* resulting in version 6.1 */ /* 08-02-2021 Wen Wang Modified comment(s), */ /* added extern "C" keyword */ /* for compatibility with C++, */ /* resulting in version 6.1.8 */ /* 01-31-2022 Chaoqiong Xiao Modified comment(s), */ /* added standalone support, */ /* resulting in version 6.1.10 */ /* */... /**************************************************************************/ #ifndef UX_HOST_CLASS_HID_KEYBOARD_H #define UX_HOST_CLASS_HID_KEYBOARD_H /* Determine if a C++ compiler is being used. If so, ensure that standard C is used to process the API information. *//* ... */ #ifdef __cplusplus /* Yes, C++ compiler is present. Use standard C. */ extern "C" { #endif /* Define HID Keyboard Class constants. */ #define UX_HOST_CLASS_HID_KEYBOARD_BUFFER_LENGTH 128 #define UX_HOST_CLASS_HID_KEYBOARD_USAGE_ARRAY_LENGTH 64 /* Each item in usage array takes 4 bytes. Check memory bytes calculation overflow here. */ #if UX_OVERFLOW_CHECK_MULC_ULONG(UX_HOST_CLASS_HID_KEYBOARD_USAGE_ARRAY_LENGTH, 4) #error UX_HOST_CLASS_HID_KEYBOARD_USAGE_ARRAY_LENGTH too large for memory allocation #endif /* Define HID Keyboard Class LED keys. */ #define UX_HID_LED_KEY_CAPS_LOCK 0x39 #define UX_HID_LED_KEY_NUM_LOCK 0x53 #define UX_HID_LED_KEY_SCROLL_LOCK 0x47 /* Define HID Keyboard Class Modifier Keys. */ #define UX_HID_MODIFIER_KEY_LEFT_CONTROL 0xe0 #define UX_HID_MODIFIER_KEY_LEFT_SHIFT 0xe1 #define UX_HID_MODIFIER_KEY_LEFT_ALT 0xe2 #define UX_HID_MODIFIER_KEY_LEFT_GUI 0xe3 #define UX_HID_MODIFIER_KEY_RIGHT_CONTROL 0xe4 #define UX_HID_MODIFIER_KEY_RIGHT_SHIFT 0xe5 #define UX_HID_MODIFIER_KEY_RIGHT_ALT 0xe6 #define UX_HID_MODIFIER_KEY_RIGHT_GUI 0xe7 /* Define HID Keyboard States. */ #define UX_HID_KEYBOARD_STATE_NUM_LOCK 0x0001 #define UX_HID_KEYBOARD_STATE_CAPS_LOCK 0x0002 #define UX_HID_KEYBOARD_STATE_SCROLL_LOCK 0x0004 #define UX_HID_KEYBOARD_STATE_MASK_LOCK 0x0007 #define UX_HID_KEYBOARD_STATE_LEFT_SHIFT 0x0100 #define UX_HID_KEYBOARD_STATE_RIGHT_SHIFT 0x0200 #define UX_HID_KEYBOARD_STATE_SHIFT 0x0300 #define UX_HID_KEYBOARD_STATE_LEFT_ALT 0x0400 #define UX_HID_KEYBOARD_STATE_RIGHT_ALT 0x0800 #define UX_HID_KEYBOARD_STATE_ALT 0x0a00 #define UX_HID_KEYBOARD_STATE_LEFT_CTRL 0x1000 #define UX_HID_KEYBOARD_STATE_RIGHT_CTRL 0x2000 #define UX_HID_KEYBOARD_STATE_CTRL 0x3000 #define UX_HID_KEYBOARD_STATE_LEFT_GUI 0x4000 #define UX_HID_KEYBOARD_STATE_RIGHT_GUI 0x8000 #define UX_HID_KEYBOARD_STATE_GUI 0xa000 #define UX_HID_KEYBOARD_STATE_KEY_UP 0x10000 #define UX_HID_KEYBOARD_STATE_FUNCTION 0x20000 /* Define HID keyboard generic equivalences. */ #define UX_HID_KEYBOARD_NO_KEY 0 #define UX_HID_KEYBOARD_PHANTOM_STATE 0x01 #define UX_HID_KEYBOARD_KEY_LETTER_A 0x04 #define UX_HID_KEYBOARD_KEY_LETTER_Z 0x1D #define UX_HID_KEYBOARD_KEYS_KEYPAD_LOWER_RANGE 0x54 #define UX_HID_KEYBOARD_KEYS_KEYPAD_UPPER_RANGE 0x67 #define UX_HID_KEYBOARD_KEYS_UPPER_RANGE 115 /* Define HID keyboard ioctl Functions. */ #define UX_HID_KEYBOARD_IOCTL_SET_LAYOUT 0 #define UX_HID_KEYBOARD_IOCTL_DISABLE_KEYS_DECODE 1 #define UX_HID_KEYBOARD_IOCTL_ENABLE_KEYS_DECODE 2 /* Define HID keyboard layout array. */ #define UX_HID_KEYBOARD_REGULAR_ARRAY_US \ 0,0,0,0, \ 'a','b','c','d','e','f','g','h','i','j','k','l','m','n', \ 'o','p','q','r','s','t','u','v','w','x','y','z', \ '1','2','3','4','5','6','7','8','9','0', \ 0x0d,0x1b,0x08,0x07,0x20,'-','=','[',']', \ '\\','#',';',0x27,'`',',','.','/',0xf0, \ 0xbb,0xbc,0xbd,0xbe,0xbf,0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6, \ 0x00,0xf1,0x00,0xd2,0xc7,0xc9,0xd3,0xcf,0xd1,0xcd,0xcb,0xd0,0xc8,0xf2, \ '/','*','-','+', \ 0x0d,'1','2','3','4','5','6','7','8','9','0','.','\\',0x00,0x00,'=', \ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,... #define UX_HID_KEYBOARD_SHIFT_ARRAY_US \ 0,0,0,0, \ 'A','B','C','D','E','F','G','H','I','J','K','L','M','N', \ 'O','P','Q','R','S','T','U','V','W','X','Y','Z', \ '!','@','#','$','%','^','&','*','(',')', \ 0x0d,0x1b,0x08,0x07,0x20,'_','+','{','}', \ '|','~',':','"','~','<','>','?',0xf0, \ 0xbb,0xbc,0xbd,0xbe,0xbf,0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6, \ 0x00,0xf1,0x00,0xd2,0xc7,0xc9,0xd3,0xcf,0xd1,0xcd,0xcb,0xd0,0xc8,0xf2, \ '/','*','-','+', \ 0x0d,'1','2','3','4','5','6','7','8','9','0','.','\\',0x00,0x00,'=', \ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,... #define UX_HID_KEYBOARD_NUMLOCK_ON_ARRAY \ '/','*','-','+', \ 0x0d, \ '1','2','3','4','5','6','7','8','9','0', \ '.','\\',0x00,0x00,'=',... #define UX_HID_KEYBOARD_NUMLOCK_OFF_ARRAY \ '/','*','-','+', \ 0x0d, \ 0xcf,0xd0,0xd1,0xcb,'5',0xcd,0xc7,0xc8,0xc9,0xd2, \ 0xd3,'\\',0x00,0x00,'=',... 43 defines /* Define HID Keyboard layout (key mapping) structure. */ typedef struct UX_HOST_CLASS_HID_KEYBOARD_LAYOUT_STRUCT { UCHAR *ux_host_class_hid_keyboard_layout_regular_array; UCHAR *ux_host_class_hid_keyboard_layout_shift_array; UCHAR *ux_host_class_hid_keyboard_layout_numlock_on_array; UCHAR *ux_host_class_hid_keyboard_layout_numlock_off_array; ULONG ux_host_class_hid_keyboard_layout_keys_upper_range; ULONG ux_host_class_hid_keyboard_layout_letters_lower_range; ULONG ux_host_class_hid_keyboard_layout_letters_upper_range; ULONG ux_host_class_hid_keyboard_layout_keypad_lower_range; ULONG ux_host_class_hid_keyboard_layout_keypad_upper_range; ...} UX_HOST_CLASS_HID_KEYBOARD_LAYOUT; /* Define HID Keyboard Class structure. */ typedef struct UX_HOST_CLASS_HID_KEYBOARD_STRUCT { ULONG ux_host_class_hid_keyboard_state; UCHAR *ux_host_class_hid_keyboard_key_state; ULONG ux_host_class_hid_keyboard_key_count; UX_HOST_CLASS_HID *ux_host_class_hid_keyboard_hid; USHORT ux_host_class_hid_keyboard_id; #if !defined(UX_HOST_STANDALONE) VOID *ux_host_class_hid_keyboard_thread_stack; UX_THREAD ux_host_class_hid_keyboard_thread; UX_SEMAPHORE ux_host_class_hid_keyboard_semaphore;/* ... */ #else UINT ux_host_class_hid_keyboard_status; UCHAR ux_host_class_hid_keyboard_enum_state; UCHAR ux_host_class_hid_keyboard_next_state; UCHAR ux_host_class_hid_keyboard_out_state; UCHAR reserved;/* ... */ #endif ULONG ux_host_class_hid_keyboard_alternate_key_state; ULONG ux_host_class_hid_keyboard_led_mask; ULONG *ux_host_class_hid_keyboard_usage_array; ULONG *ux_host_class_hid_keyboard_usage_array_head; ULONG *ux_host_class_hid_keyboard_usage_array_tail; UX_HOST_CLASS_HID_KEYBOARD_LAYOUT *ux_host_class_hid_keyboard_layout; ULONG ux_host_class_hid_keyboard_keys_decode_disable; ...} UX_HOST_CLASS_HID_KEYBOARD; /* Define HID Keyboard Class function prototypes. */ VOID _ux_host_class_hid_keyboard_callback(UX_HOST_CLASS_HID_REPORT_CALLBACK *callback); UINT _ux_host_class_hid_keyboard_activate(UX_HOST_CLASS_HID_CLIENT_COMMAND *command); UINT _ux_host_class_hid_keyboard_deactivate(UX_HOST_CLASS_HID_CLIENT_COMMAND *command); UINT _ux_host_class_hid_keyboard_entry(UX_HOST_CLASS_HID_CLIENT_COMMAND *command); VOID _ux_host_class_hid_keyboard_thread(ULONG thread_entry); UINT _ux_host_class_hid_keyboard_key_get(UX_HOST_CLASS_HID_KEYBOARD *keyboard_instance, ULONG *keyboard_key, ULONG *keyboard_state); UINT _ux_host_class_hid_keyboard_ioctl(UX_HOST_CLASS_HID_KEYBOARD *keyboard_instance, ULONG ioctl_function, VOID *parameter); VOID _ux_host_class_hid_keyboard_tasks_run(UX_HOST_CLASS_HID_CLIENT *client); /* Define HID Keyboard Class API prototypes. */ #define ux_host_class_hid_keyboard_entry _ux_host_class_hid_keyboard_entry #define ux_host_class_hid_keyboard_key_get _ux_host_class_hid_keyboard_key_get #define ux_host_class_hid_keyboard_ioctl _ux_host_class_hid_keyboard_ioctl /* Determine if a C++ compiler is being used. If so, complete the standard C conditional started above. *//* ... */ #ifdef __cplusplus }extern "C" { ... } #endif /* ... */ #endif...
Details
Show:
from
Types: Columns:
This file uses the notable symbols shown below. Click anywhere in the file to view more details.