说明
当给定一个可打印的 ASCII 字符作为参数时,函数 Keyboard.write()
、 Keyboard.press()
和 Keyboard.release()
模拟相应按键上的动作。这些函数还可以处理需要结合 Shift 键或国际键盘上的 AltGr 键的 ASCII 字符。例如:
Keyboard.write('a'); // press and release the 'A' key
Keyboard.write('A'); // press Shift and 'A', then release both
然而,典型的键盘有许多键与可打印的 ASCII 字符不匹配。为了模拟这些键,库提供了一组宏,可以作为参数传递给 Keyboard.write()
、 Keyboard.press()
和 Keyboard.release()
。例如,组合键 Shift+F2 可以通过以下方式生成:
Keyboard.press(KEY_LEFT_SHIFT); // press and hold Shift
Keyboard.press(KEY_F2); // press and hold F2
Keyboard.releaseAll(); // release both
请注意,为了同时按下多个键,必须使用
而不是 Keyboard.press()
,因为后者只是 “hits” 键(它按下并立即释放它们)。Keyboard.write()
下面列出了可用的宏:
键盘修饰符
这些键是为了修改另一个键的正常动作,当这两个键被组合按下时。
钥匙 | 十六进制值 | 十进制值 | 注意 |
---|---|---|---|
KEY_LEFT_CTRL |
0x80 |
128 |
|
KEY_LEFT_SHIFT |
0x81 |
129 |
|
KEY_LEFT_ALT |
0x82 |
130 |
Mac 上的选项 (⌥) |
KEY_LEFT_GUI |
0x83 |
131 |
操作系统徽标,Mac 上的命令 (⌘) |
KEY_RIGHT_CTRL |
0x84 |
132 |
|
KEY_RIGHT_SHIFT |
0x85 |
133 |
|
KEY_RIGHT_ALT |
0x86 |
134 |
Mac 上还有 AltGr、Option (⌥) |
KEY_RIGHT_GUI |
0x87 |
135 |
操作系统徽标,Mac 上的命令 (⌘) |
特殊键
这些都是与可打印 ASCII 字符不匹配且不是修饰符的键。
在字母数字簇内
钥匙 | 十六进制值 | 十进制值 |
---|---|---|
KEY_TAB |
0xB3 |
179 |
KEY_CAPS_LOCK |
0xC1 |
193 |
KEY_BACKSPACE |
0xB2 |
178 |
KEY_RETURN |
0xB0 |
176 |
KEY_MENU |
0xED |
237 |
导航集群
钥匙 | 十六进制值 | 十进制值 |
---|---|---|
KEY_INSERT |
0xD1 |
209 |
KEY_DELETE |
0xD4 |
212 |
KEY_HOME |
0xD2 |
210 |
KEY_END |
0xD5 |
213 |
KEY_PAGE_UP |
0xD3 |
211 |
KEY_PAGE_DOWN |
0xD6 |
214 |
KEY_UP_ARROW |
0xDA |
218 |
KEY_DOWN_ARROW |
0xD9 |
217 |
KEY_LEFT_ARROW |
0xD8 |
216 |
KEY_RIGHT_ARROW |
0xD7 |
215 |
数字键盘
钥匙 | 十六进制值 | 十进制值 |
---|---|---|
KEY_NUM_LOCK |
0xDB |
219 |
KEY_KP_SLASH |
0xDC |
220 |
KEY_KP_ASTERISK |
0xDD |
221 |
KEY_KP_MINUS |
0xDE |
222 |
KEY_KP_PLUS |
0xDF |
223 |
KEY_KP_ENTER |
0xE0 |
224 |
KEY_KP_1 |
0xE1 |
225 |
KEY_KP_2 |
0xE2 |
226 |
KEY_KP_3 |
0xE3 |
227 |
KEY_KP_4 |
0xE4 |
228 |
KEY_KP_5 |
0xE5 |
229 |
KEY_KP_6 |
0xE6 |
230 |
KEY_KP_7 |
0xE7 |
231 |
KEY_KP_8 |
0xE8 |
232 |
KEY_KP_9 |
0xE9 |
233 |
KEY_KP_0 |
0xEA |
234 |
KEY_KP_DOT |
0xEB |
235 |
退出键和函数键
该库可以模拟高达 F24 的函数键。
钥匙 | 十六进制值 | 十进制值 |
---|---|---|
KEY_ESC |
0xB1 |
177 |
KEY_F1 |
0xC2 |
194 |
KEY_F2 |
0xC3 |
195 |
KEY_F3 |
0xC4 |
196 |
KEY_F4 |
0xC5 |
197 |
KEY_F5 |
0xC6 |
198 |
KEY_F6 |
0xC7 |
199 |
KEY_F7 |
0xC8 |
200 |
KEY_F8 |
0xC9 |
201 |
KEY_F9 |
0xCA |
202 |
KEY_F10 |
0xCB |
203 |
KEY_F11 |
0xCC |
204 |
KEY_F12 |
0xCD |
205 |
KEY_F13 |
0xF0 |
240 |
KEY_F14 |
0xF1 |
241 |
KEY_F15 |
0xF2 |
242 |
KEY_F16 |
0xF3 |
243 |
KEY_F17 |
0xF4 |
244 |
KEY_F18 |
0xF5 |
245 |
KEY_F19 |
0xF6 |
246 |
KEY_F20 |
0xF7 |
247 |
KEY_F21 |
0xF8 |
248 |
KEY_F22 |
0xF9 |
249 |
KEY_F23 |
0xFA |
250 |
KEY_F24 |
0xFB |
251 |
函数控制键
这是位于导航集群上方的三个键。
钥匙 | 十六进制值 | 十进制值 | 注意 |
---|---|---|---|
KEY_PRINT_SCREEN |
0xCE |
206 |
打印屏幕或PrtSc /SysRq |
KEY_SCROLL_LOCK |
0xCF |
207 |
|
KEY_PAUSE |
0xD0 |
208 |
暂停休息 |
国际键盘布局
一些国家布局定义了额外的键。例如,瑞典和丹麦布局将 KEY_A_RING
定义为 0xB7
,这是 “P” 右侧的键,在这些布局上标记为 “Å”,在美国布局上标记为 “{”/“[”。为了使用这些定义,必须包含正确的 Keyboard_*.h 文件。例如:
#include <Keyboard.h>
#include <Keyboard_sv_SE.h> // extra key definitions from Swedish layout
void setup() {
Keyboard.begin(KeyboardLayout_sv_SE); // use the Swedish layout
Keyboard.write(KEY_A_RING);
}
void loop() {} // do-nothing loop
有关 layout-specific 键定义的列表,请参阅库源中的相应 Keyboard_*.h 文件。
相关用法
- Arduino long用法及代码示例
- Arduino Arduino_EMBRYO_2 - setLengthXY()用法及代码示例
- Arduino ~用法及代码示例
- Arduino ArduinoBLE - bleDevice.advertisedServiceUuidCount()用法及代码示例
- Arduino const用法及代码示例
- Arduino Ethernet - server.begin()用法及代码示例
- Arduino ArduinoBLE - BLEService()用法及代码示例
- Arduino digitalWrite()用法及代码示例
- Arduino ArduinoBLE - bleCharacteristic.subscribe()用法及代码示例
- Arduino Servo - attach()用法及代码示例
- Arduino write()用法及代码示例
- Arduino Arduino_LSM9DS1 - readGyroscope()用法及代码示例
- Arduino ArduinoSound - FFTAnalyzer.input()用法及代码示例
- Arduino MKRGSM - gprs.attachGPRS()用法及代码示例
- Arduino WiFiNINA - WiFi.config()用法及代码示例
- Arduino MKRGSM - sms.read()用法及代码示例
- Arduino MKRNB - getCurrentCarrier()用法及代码示例
- Arduino Scheduler - Scheduler.startLoop()用法及代码示例
- Arduino Arduino_LSM9DS1 - magneticFieldAvailable()用法及代码示例
- Arduino MKRWAN - available()用法及代码示例
- Arduino ArduinoBLE - BLE.poll()用法及代码示例
- Arduino ArduinoBLE - bleCharacteristic.hasDescriptor()用法及代码示例
- Arduino Ethernet - EthernetUDP.parsePacket()用法及代码示例
- Arduino WiFi101 - WiFi.subnetMask()用法及代码示例
- Arduino TFT - PImage.width()用法及代码示例
注:本文由纯净天空筛选整理自arduino.cc大神的英文原创作品 Keyboard Modifiers and Special Keys。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。