(Arduino Uno重写为USB HID)如何发送Scroll Lock键?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(Arduino Uno重写为USB HID)如何发送Scroll Lock键?相关的知识,希望对你有一定的参考价值。

我正在使用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);
}

我希望发送滚动锁定,但在使用密码测试时,我会看到ctrl,left alt和right alt会被发送。

答案

您应该从偏移量2开始发送第一个密钥代码:

buf [2] = SCRLCK;

偏移0用于键控修改标志,如ctrl,alt等。

以上是关于(Arduino Uno重写为USB HID)如何发送Scroll Lock键?的主要内容,如果未能解决你的问题,请参考以下文章

arduino uno和arduino mini 有啥不同?

arduino uno r3 上的这么多针脚都有啥用

arduino uno r3 上的这么多针脚都有啥用?

将串行从 Raspberry 传递到 Arduino USB HID

arduino leonardo r3 和 arduino uno r3 有啥区别

arduino uno 是不是可以防止烧毁计算机的 USB 端口?