(Arduino Uno重新刷新为USB HID)如何发送滚动锁定键?

时间:2019-04-29 11:55:04

标签: arduino arduino-uno hid

我在使用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。

1 个答案:

答案 0 :(得分:0)

您应该从偏移2开始发送第一个键控代码。

buf [2] = SCRLCK;

偏移量0用于关键​​修饰符标志,例如ctrl,alt等。