1. 程式人生 > >基於STM32處理器的USB HID模擬滑鼠鍵盤(2)

基於STM32處理器的USB HID模擬滑鼠鍵盤(2)

由於在報告描述符中使用了兩個Report ID,分別是0x01和0x02,前者是鍵盤的報告描述符的報告ID,後者是滑鼠的報告ID,HID的鍵盤和滑鼠傳送的資料格式參考文件:

根據文件編寫鍵盤和滑鼠的傳送函式如下:

	typedef enum
	{
		KEYBOARD	= 0x01,
		MOUSE		= 0x02,
	}Device;
	
	#define None_Key	0x00
	
	typedef enum
	{
		Left_Control	= 0x01,
		Left_Shift		= 0x02,
		Left_Alt		= 0x04,
		Left_GUI		= 0x08,
		Right_Control	= 0x10,
		Right_Shift		= 0x20,
		Right_Alt		= 0x40,
		Right_GUI		= 0x80,
	}FunctionKey;
	
	typedef enum
	{
		Left_Key		= 0x01,
		Right_Key		= 0x02,
		Mid_Kry			= 0x04,
	}MouseKey;

extern u8 EP1BUSY;
extern u8 HID_SendBuffer[9];

void HID_Send(Device device)
{
	HID_SendBuffer[0] = (u8)device;
	
    /*copy mouse position info in ENDP1 Tx Packet Memory Area*/
    UserToPMABufferCopy(HID_SendBuffer, GetEPTxAddr(ENDP1), 9);
    /* enable endpoint for transmission */
    SetEPTxValid(ENDP1);

	while(EP1BUSY);
	EP1BUSY = 1;

}

void SendKeyboardData(u8 ctrl_shift,u8 key)
{
	HID_SendBuffer[1] = ctrl_shift;
	HID_SendBuffer[3] = key;
	HID_Send(KEYBOARD);
}

void SendMouseData(u8 key,s8 x,s8 y)
{
	HID_SendBuffer[1] = key;
	HID_SendBuffer[2] = (u8)x;
	HID_SendBuffer[3] = (u8)y;
	HID_Send(MOUSE);
}



相關推薦

基於STM32處理器USB HID模擬滑鼠鍵盤2

由於在報告描述符中使用了兩個Report ID,分別是0x01和0x02,前者是鍵盤的報告描述符的報告ID,後者是滑鼠的報告ID,HID的鍵盤和滑鼠傳送的資料格式參考文件: 根據文件編寫鍵盤和滑鼠的

基於STM32之UART串列埠通訊協議傳送

一、前言 1、簡介   在上一篇UART詳解中,已經有了關於UART的詳細介紹了,也有關於如何使用STM32CubeMX來配置UART的操作了,而在該篇部落格,主要會講解一下如何實現UART串列埠的傳送功能。 2、UART簡介   嵌入式開發中,UART串列埠通訊協議是我們常用的通訊協議之一,全稱叫做

基於STM32之UART串列埠通訊協議接收

一、前言 1、簡介   回顧上一篇UART傳送當中,已經講解了如何實現UART的傳送操作了,接下來這一篇將會繼續講解如何實現UART的接收操作。 2、UART簡介   嵌入式開發中,UART串列埠通訊協議是我們常用的通訊協議之一,全稱叫做通用非同步收發傳輸器(Universal Asynchronou

提高組模擬賽總結2

這一 使用 從大到小 number 復雜度 題意 不能 空間 當前 T1: 題意:給定一個01背包,求將背包裝到不能再放任何剩余物品的方案數 做法:部分分 F[j][k]表示前i個物品分配j空間,最小沒有使用的物品為k的方案數 F[j][k] = Max(F[j-w[i]]

Django基於第一個項目導入模板2

分享 template bubuko 項目 服務器 http brush 新建文件夾 temp 1.在模塊blog下新建文件夾templates,在templates下新建index.html文件 //index.html代碼如下: <html> <

基於次表面散射(SSS)的玉石渲染2

本文效果圖: 基於次表面散射(SSS)原理介紹請參考上一遍,求模型厚度的時候,本文采用渲染模型正面和背面的深度圖,模型渲染程式碼如下: Shader "Custom/JadeRender" { Properties{ _Diffuse("Diffuse", Co

基於雙端堆實現的優先順序佇列2:內幕

   在《基於雙端堆實現的優先順序佇列(1):原理》一文中講述了雙端堆的相關原理,本文則詳細講述具體的內部實現,便於區分,內部函式名稱都以雙下劃線作為字首,在這裡,有幾個關鍵問題需要說明    1)怎麼求一個結點的對稱結點:如果完全二叉樹根結點從索引1開始但不儲存元素,那麼最小堆根結點則在索引2

基於Matconvnet深度學習框架的方言分類2

續寫 在前篇文章中,我簡單的介紹了應當如何使用 CNN 來識別和分類語音,並簡單的介紹了 matconvnet 的使用以及example的執行。在下面我會說明如何使用該框架訓練和測試自己的資料。 預處理資料 在上文中,我已經介紹過先將語音樣本生成二維聲譜圖,這樣可以完美的使用 C

基於SSM框架的教務查詢系統實踐2—— 系統設計

技術框架選擇 系統嚴格採取 Web 層、服務層、持久層三層體系結構,上層的程式可以呼叫下一層的程式,反之則不行,遵循依賴倒置原則(Dependency Inversion Principle ),以此達到層與層之間鬆耦合的目的。 使用的工具與技術

基於Metronic的Bootstrap開發框架經驗總結2--列表分頁處理和外掛JSTree的使用

在上篇《基於Metronic的Bootstrap開發框架經驗總結(1)-框架總覽及選單模組的處理》介紹了Bootstrap開發框架的一些基礎性概括,包括總體介面效果,以及佈局、選單等內容,本篇繼續這一主題,介紹頁面內容常用到的資料分頁處理,以及Bootstrap外掛JSTree的使用。在資料的介面顯示當中,表

STM32 keyboard USB HID鍵盤功能的實現

相關文章 下面編寫下USB鍵盤的程式,依然在CustomHID工程上修改。 依舊最先修改的是usb_desc.c檔案。我們從裝置描述符開始講述。 裝置描述符需要修改下bMaxPacketSize(最大包長度)域為0x08,因為被本次的工程最大通訊長度

基於STM32USB列舉過程學習筆記(一)

     之前使用ST官方的庫以及網路的資料,完成了使用USB HID類進行STM32和PC機的通訊。由於其他原因並沒有深入的分析,雖然實現了功能,但是關於USB裝置的列舉,以及具體的通訊方式都沒有清晰的概念,所以現在回頭重新學習USB相關知識。主要參考資料是《圈圈教你玩

selenium webdriver 模擬滑鼠鍵盤的操作

selenium通過命令進行驅動,其中一種風格就是action(動作)。actions命令一般用於操作應用程式的狀態,通過“點選”和“選擇”的方式進行工作。webdriver繼承了selenium中的actions類,這個actions類中,主要是模擬使用者的滑鼠mouse

基於STM32USB列舉過程學習筆記(四)

    前幾篇介紹中,USB主機完成了獲取裝置的描述符,現在進入第二步,設定裝置的地址階段。     該階段是一個無資料過程的控制傳輸。首先,在建立過程中USB主機往裝置的端點0發出一個設定地址的請求,新地址在建立過程的資料包中。該事務的結構包括:SETUP0令牌包+SET

基於STM32USB列舉過程學習筆記(二)

    接下來介紹USB裝置的列舉,列舉就是從裝置讀取各種描述符資訊,這樣主機就可以根據這些資訊來載入合適的驅動,從而知道是什麼樣的裝置,如何進行通訊。 列舉過程使用的是控制傳輸。控制傳輸可以保證資料的正確性。控制傳輸分三個過程:建立過程,可選資料過程及狀態過程。    

python 模擬滑鼠鍵盤輸入PyUserInput

PyUserInput is a group project so we've moved the project over to a group organization:https://github.com/PyUserInput/PyUserInput . Tha

pyautogui自動化---模擬滑鼠鍵盤常用操作

pyautogui能很好的控制鍵盤和滑鼠,可以用在我們的各種pc端產品的自動化測試上。但其實配合pywinauto一起使用是非常完美的,這個後面續寫。我們先來看看一些常用的鍵盤和滑鼠的操作命令。我就直接把截圖了,這樣看起來更清晰一些。後面文字再介紹pyautogui的鍵盤表

keybd_event和mouse_event完全徹底細緻的模擬滑鼠鍵盤所有動作

keybd_event  函式功能:該函式合成一次擊鍵事件。系統可使用這種合成的擊鍵事件來產生WM_KEYUP或WM_KEYDOWN訊息,鍵盤驅動程式的中斷處理程式呼叫keybd_event函式。在Windows NT中該函式己被使用Sendlhput來替代它。  函式原型;

Java模擬滑鼠鍵盤輸入事件 --- Robot 類

Robot,機器人。此類用於為測試自動化、自執行演示程式和其他需要控制滑鼠和鍵盤的應用程式生成本機系統輸入事件。Robot 的主要目的是便於 Java 平臺實現自動測試。 Robot 可以模擬滑鼠和鍵盤的輸入,相當於 Java 版的按鍵精靈。 Rob

java實現模擬滑鼠鍵盤操作

 用java寫指令碼,首先需要用到Robot類 ,也就是機器人類。先new一個Robot物件然後呼叫裡面的方法 ,keyPress方法是按下鍵盤上的某個鍵,比如下面程式碼裡面寫的keyPress(KeyEvevt.VK_Y); 括號裡面VK後面的字母就是要按下的鍵,然後按下了