Arduino Trinket / Attiny85 USB:可以读取所有键的状态吗?

时间:2016-06-15 00:39:06

标签: c++ arduino keyboard usb attiny

USB键盘例如是系统内的共享设备。几个键盘是可能的,它们共享num,scroll和capslock状态。当您按下键盘#1上的大写锁定时,键盘#2将检测到此状态。

对于模拟USB键盘设备(使用Trinket库),您可以使用以下方法检查这些值:

typedef struct { bool caps,num,scroll; } TKeyboardLEDState;
..... 
TKeyboardLEDState usbGetKeyboardLedState()
{
  uint8_t iState = TrinketHidCombo.getLEDstate();
  TKeyboardLEDState tResult;

  tResult.caps = (iState & (1<< KB_LED_CAPS));
  tResult.num = (iState & (1<< KB_LED_NUM));
  tResult.scroll = (iState & (1<< KB_LED_SCROLL));

  return tResult;
}    
.......

void loop()
{
  TKeyboardLEDState recKeybLEDstate = usbGetKeyboardLedState();

  if( recKeybLEDstate.caps )
  {
    // do something
  }
}

问题:

所以我想知道我是否可以用任何键做到这一点,或者这完全不可能?如果没有,为什么不呢?如果是,我该怎么做?

1 个答案:

答案 0 :(得分:0)

  

当您按下键盘#1上的大写锁定时,键盘#2将检测到此状态。

这是因为操作系统将当前的LED状态传输到所有键盘。但只传输LED状态而不是关键状态。