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 の状態が OS によってすべてのキーボードに送信されるためです。ただし、キーの状態ではなく、LED の状態のみが送信されます。

于 2016-06-15T11:49:49.700 に答える