2016-06-15 118 views
0

例如,USB鍵盤是系統內的共享設備。幾個鍵盤是可能的,它們共享num,scroll和capslock狀態。當您按下鍵盤#1上的大寫鎖定鍵時,鍵盤#2將檢測到此狀態。Arduino飾品/ Attiny85 USB:可以讀取所有鍵的狀態?

對於模擬USB鍵盤設備(使用飾品庫),您可以通過使用檢查這些值:

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 
    } 
} 

問:

所以我想如果我能做到這一點與ANY關鍵還是完全不可能?如果不是,爲什麼不呢?如果是的話,我該怎麼做?

回答

0

當您按下鍵盤#1上的大寫鎖定鍵時,鍵盤2會檢測到此狀態。

這是因爲當前的LED狀態由OS傳輸到所有鍵盤。但只有LED狀態被傳輸,而不是關鍵狀態。