たとえば、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
}
}
質問:
それで、私はこれを任意のキーで行うことができるのだろうか、それとも完全に不可能なのでしょうか? そうでない場合、なぜですか?はいの場合、どうすればこれを行うことができますか?