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
}
}
问题:
所以我想知道我是否可以用任何键做到这一点,或者这完全不可能?如果没有,为什么不呢?如果是,我该怎么做?
答案 0 :(得分:0)
当您按下键盘#1上的大写锁定时,键盘#2将检测到此状态。
这是因为操作系统将当前的LED状态传输到所有键盘。但只传输LED状态而不是关键状态。