0

例如,USB 键盘是系统内的共享设备。可以使用多个键盘,它们共享 num、scroll 和 capslock 状态。当您按下键盘 #1 上的 capslock 时,键盘 #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
  }
}

问题:

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

4

1 回答 1

0

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

那是因为当前 LED 状态由操作系统传输到所有键盘。但仅传输 LED 状态而不传输按键状态。

于 2016-06-15T11:49:49.700 回答