Мне трудно использовать USB HID-буферы, и я хочу отправить клавишу блокировки прокрутки, когда нажимаю кнопку.
Я попытался отправить то, что я считал блокировкой прокрутки (0x47), и вместо этого он посылает клавиши ctrl, left alt и right 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);
}
Я ожидаю отправки блокировки прокрутки, но после использования пароля KeyboardTest я вижу, что вместо этого отправляются ctrl, left alt и right alt.