是否可以使用Arduino uno構建HID設備(如鍵盤)?
目前,我在Arduino上有按鈕輸入,可在串行線上提供輸出。因此,如何將當前的固件轉換為可以像HID鍵盤一樣工作的東西?可以獲取我的串行數據並讓Windows將其讀取為HID輸入的第二層?
是否可以使用Arduino uno構建HID設備(如鍵盤)?
目前,我在Arduino上有按鈕輸入,可在串行線上提供輸出。因此,如何將當前的固件轉換為可以像HID鍵盤一樣工作的東西?可以獲取我的串行數據並讓Windows將其讀取為HID輸入的第二層?
是否可以使用Arduino uno構建HID設備(如鍵盤)?
是的!在此處
上有一個很棒的教程,介紹如何在Arduino上提供按鈕輸入,並在串行線上提供輸出。因此,如何將當前固件轉換為可以像HID鍵盤一樣工作的東西?
如本教程所示,您需要轉換固件代碼,而不是打印事件,而是實際觸發事件。您需要做的是添加到您的代碼中:
void triggerKey(uint8_t mod,uint8_t chr){uint8_t buf [8] = {mod,chr,0x00,0x00,0x00,0x00, 0x00,0x00}; //按下Serial.write(buf,8)鍵; //模擬按鍵延遲delay(10); buf [1] = 0x00; //釋放密鑰Serial.write(buf,8);}
您在這裡所做的是將主要的Arduino微控制器事件通過串行線路發送到處理USB的較小的微控制器通訊。該微控制器將獲取這些按鍵“緩衝區”,並通過USB HID鍵盤按鍵通過USB進行傳輸。
請注意,按鍵字符(此處代碼中的 chr
)實際上是一個按鍵代碼。被USB HID驅動程序解釋的sendover USB,然後使用您為鍵盤設置的當前佈局將其轉換為實字符。
mod
字符是以下字符之一鍵盤上的修飾鍵(shift,control,alt ...), 0x00
沒有修飾符。
- 我要寫一個新窗口設備驅動程序?
不,您不需要!通過DFU升級,Windows會將您的arduino視為USB鍵盤。
- 我是否可以創建一個軟件層來接收我的串行數據並使Windows將其讀取為HID輸入?
您不需要這樣做,由於許多原因,這實際上是一個非常糟糕的主意:
我使用的是Uno,但我會看一下您發布的內容,因為上次我們考慮過DFU更新,但我們有點怕磚砌東西
最後,在評論中,您對磚砌arduino感到擔憂。請相信我和文章的作者,您不能難以理解您的arduinodoing固件閃存:注意:沒有機會“使用此方法將設備砌成磚。始終可以使用DFU協議來更新Arduino引導加載程序固件!
萬一發生嚴重錯誤,並且在小AVR(atmega8u2)中出現引導加載程序損壞,您仍然可以對其進行刷新使用另一個arduino或 atmel編程器,使用USB插頭旁邊的6個引腳。
最後,要知道 only 建立AVR(也包括Arduino)的方法是使用保險絲並重置編程保險絲。即使這樣,您也可以使用 HVSP保存設備,儘管僅需購買新芯片通常就沒那麼麻煩了。
我創建了一個項目,該項目完全替代了Arduino Bootloader。您可以上傳草圖並將其用作HID。請參閱Github上的HID項目: https://github.com/NicoHood/HID