HID 项目的键码使用什么 C++ 类型?

What C++ type do keycodes from HID Project Use?

最近我发现自己在编写我最近使用 arduino pro micro 制作的 9 键宏键盘时感到非常沮丧。键盘在硬件方面是功能齐全的,但我是 C++ 的新手,无法让它完全按照我的意愿行事。本质上,我希望使用与键值 0 到 8 关联的数组将 9 个键绑定到 F13-F21 键。为此,我希望使用数组,但因为我不知道键值是什么类型来自 HID 项目的是,我无法让数组将任何有意义的数据传递给 Keyboard.press 函数。

static const uint8_t KEYBINDS[] = {KEY_F13, KEY_F14, KEY_F15, KEY_F16, KEY_F17, KEY_F18, KEY_F19, KEY_F20, KEY_F21};

下面是一个与我正在尝试做的类似的场景,我使用 Values 数组将数据传递给 Keyboard.press() 函数,只使用数字。

static const uint8_t Values[] = {1, 4, 3, 6, 8};

Keyboard.press(Values[2]);

但是,Keyboard.press() 函数需要这样的数据,

KEY_F13
KEY_TAB
KEY_SPACEBAR

我不知道这是什么类型的数据。它不适用于字符串、uint8_t 或 uint16_t 或我尝试过的任何其他内容。我不能不使用任何类型,而且 void 不适用于数组,所以我不知道还能尝试什么。源代码中没有指定类型,至少不是我能看到的,但我真的不知道怎么看。

一些信息; 使用 Keyboard.press(KEY_F13);完全按照我的意愿行事。我只是不知道如何通过数组将其传递给函数。从技术上讲,我可以使用带有一堆 Keyboard.press() 命令的可怕的 if 语句嵌套来实现它,但我更愿意以正确的方式解决这个问题。

如果需要任何其他信息来帮助回答这个问题,请告诉我。

HID 项目文档

https://github.com/NicoHood/HID/wiki

这些是来自 ImprovedKeylayouts.h 的枚举类型 KeyboardKeycode 的值。虽然枚举的命名值可以隐式转换为整数类型,但相反需要显式转换。

不确定您必须诊断出什么问题,编译器诊断应该指出不匹配。毕竟你也可以使用 C++11

来使用类型不可知的声明