更改Arduino键盘语言



我似乎找不到改变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;以及"&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

最新更新