我在使用USB HID缓冲区时遇到了困难,并且想在按下按钮时发送滚动锁定键。
我尝试发送我认为是滚动锁定(0x47)的文件,而是发送了ctrl,左alt和右alt键。 我在这里使用了该表作为参考:https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf
这基于http://mitchtech.net/arduino-usb-hid-keyboard/
/* Arduino USB Keyboard HID demo
* Cut/Copy/Paste Keys
*/
#define SCRLCK 0x47
//#define KEY_LEFT_SHIFT 0x02
//#define KEY_RIGHT_CTRL 0x10
//#define KEY_RIGHT_SHIFT 0x20
uint8_t buf[8] = {
0 }; /* Keyboard report buffer */
#define PIN_PTT 2
//#define PIN_CUT 6
//#define PIN_PASTE 7
int state = 1;
int prevState;
void setup()
{
Serial.begin(9600);
pinMode(PIN_PTT, INPUT);
//pinMode(PIN_CUT, INPUT);
//pinMode(PIN_PASTE, INPUT);
// Enable internal pull-ups
digitalWrite(PIN_PTT, 1);
//digitalWrite(PIN_CUT, 1);
//digitalWrite(PIN_PASTE, 1);
delay(200);
}
void loop()
{
state = digitalRead(PIN_PTT);
if (prevState != state) {
buf[0] = SCRLCK; // Scroll Lock
// buf[2] = 27; // Letter X
// buf[2] = 123; // Cut key: Less portable
Serial.write(buf, 8); // Send keypress
prevState = state;
releaseKey();
}
}
void releaseKey()
{
buf[0] = 0;
Serial.write(buf, 8); // Release key
delay(100);
}
我希望发送滚动锁定,但是使用Passmark KeyboardTest时,我看到发送的是ctrl,左alt和右alt。
答案 0 :(得分:0)
您应该从偏移2开始发送第一个键控代码。
buf [2] = SCRLCK;
偏移量0用于关键修饰符标志,例如ctrl,alt等。