首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Arduino:需要帮助理解<keyboard.h>库

Arduino:需要帮助理解<keyboard.h>库
EN

Stack Overflow用户
提问于 2015-12-07 01:19:19
回答 1查看 2K关注 0票数 0

我有莱昂纳多/微设备,应该模仿键盘。我想修改一下图书馆。原因是我希望能够发送原始的扫描代码,因为库做了一些准备工作。我查看了源代码,也查了HID库,但很难理解以下几点:

  1. Keyboard_::begin()和Keyboard_::end()应该用来模拟开始停止播放 keboard,但是它们有空体;https://www.arduino.cc/en/Reference/KeyboardBegin
  2. KeyReport特别神秘:
  3. 关键报告到底发生了什么?我在USB_Send函数中失去了在HID.cpp中的位置。找不到它的来源
  4. 修饰符是什么,它们ar4在做什么?
  5. 发送的密钥数量是否限制在6个,或者,理论上可能是任意的?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-07 18:36:27

我会尽我所能回答你的问题。如果你还有问题,请告诉我:

  1. Keyboard_::begin()和Keyboard_::end()应该启动和停止键盘模拟,但它们有空体

我相信这些只是占位符,以防需要初始化或清理。其他库具有相同的功能(例如鼠标库)。我怀疑他们在那里是为了一致性,以防万一他们是需要的。

  1. KeyReport特别神秘。
代码语言:javascript
复制
typedef struct
{
    uint8_t modifiers;
    uint8_t reserved;
    uint8_t keys[6];
} KeyReport;

KeyReport是表示发送到主机的USB消息的数据结构。

  • 修饰符成员是一个8位无符号整数,包含各种标志(例如左移位、左Ctrl、左Alt等)。
  • 保留成员是一个8位无符号整数,没有使用,但必须在那里。
  • 键成员是一个由6个8位无符号整数组成的数组,表示当前按下的键。

  1. 关键报告到底发生了什么?我在USB_Send函数中失去了在HID.cpp中的位置。

它会被发送到主机。

  1. 修饰符是什么,它们在做什么?

有些键是“常规”键(例如A、B、1、2、#等)。其他键是修饰符(例如Shift、Ctrl、Alt)。修饰符键在KeyReport.modifiers中设置标志。例如,左移位键为0x02。

  1. 发送的密钥数量是否限制在1,或者,理论上可能是任意的?

可以同时按下的“常规”键数为6,但也可以按下修饰符键(Shift、Alt、Ctrl等)。

FYI:通过向USBAPI.h文件添加新的键定义,我能够添加额外的键(例如数字键盘键):

代码语言:javascript
复制
#define KEY_NUMPAD_DIVIDE   0xDC
#define KEY_NUMPAD_MULTIPLY 0xDD
#define KEY_NUMPAD_MINUS    0xDE
#define KEY_NUMPAD_PLUS     0xDF
#define KEY_NUMPAD_ENTER    0xE0
#define KEY_NUMPAD_1        0xE1
#define KEY_NUMPAD_2        0xE2
#define KEY_NUMPAD_3        0xE3
#define KEY_NUMPAD_4        0xE4
#define KEY_NUMPAD_5        0xE5
#define KEY_NUMPAD_6        0xE6
#define KEY_NUMPAD_7        0xE7
#define KEY_NUMPAD_8        0xE8
#define KEY_NUMPAD_9        0xE9
#define KEY_NUMPAD_0        0xEA
#define KEY_NUMPAD_DEL      0xEB
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34125011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档