我似乎找不到改变Arduino USB键盘布局的方法。。我试过在IDE中更改它。仍然不起作用,我需要一个丹麦布局。这是我的代码:
#include <Keyboard.h>
void setup() {
Keyboard.begin();
}
void loop(){
delay (2000);
Keyboard.press(KEY_LEFT_GUI);
delay (400);
Keyboard.press('r');
Keyboard.releaseAll();
delay (400);
Keyboard.println("cmd");
Keyboard.press(KEY_RETURN);
delay (400);
Keyboard.println("start chrome https://www.youtube.com/watch?v=dQw4w9WgXcQ&ab_channel=RickAstleyVEVO");
delay (400);
Keyboard.press(KEY_RETURN);
delay (400);
Keyboard.releaseAll();
Keyboard.press(KEY_LEFT_GUI);
delay (400);
Keyboard.press('r');
delay (400);
Keyboard.println("cmd");
Keyboard.press(KEY_RETURN);
Keyboard.releaseAll();
delay (400);
Keyboard.println("start chrome https://fakeupdate.net/win10ue/");
delay (400);
Keyboard.press(KEY_RETURN);
delay (400);
Keyboard.releaseAll();
Keyboard.press(KEY_F11);
}
但我的输出insede cmd是"start chrome httpsÆ--www.youtube.com-watch_v´dQw4w9WgXcQ/ab?channel´RickAstleyVEVO"
由于您的电脑采用丹麦布局,您的Arduino需要发送"的字符:&"&"quot;以及"";在被映射到丹麦布局之后。
这可以通过更改您的Arduino代码来发送字符"来完成>quot;代替冒号-"而不是正斜杠_"而不是问号^"用于安培数。
解释
快速浏览一下键盘库的实现,就会发现它不发送ASCII。请参阅keyboard.cpphttps://github.com/arduino-libraries/Keyboard/blob/master/src/Keyboard.cpp.
相关代码片段为:
0x24|SHIFT, // &
0x38, // /
0x33|SHIFT, // :
0x38|SHIFT, // ?
这里的十六进制数字是USB HID使用ID。从本质上讲;扫描码";其被发送到USB驱动程序。此扫描代码通过键盘布局映射到字符。
例如Arduino键盘库采用":"并且通过USB连接发送具有移位修饰符的使用Id 0x33。在另一端,这个用法id被映射到使用键盘布局的字符。丹麦布局用移位修饰符将0x33映射为"0";Æ";。
如果Arduino键盘库看到">quot;则它发送带有移位修饰符的使用id 0x37。丹麦布局将此映射到":"性格
参考
- 一个(美国键盘布局(键到HID用法Id映射-https://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/translate.pdf(pdf(
- 文本中的等效映射-http://www.quadibloc.com/comp/scan.htm