找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3057|回復(fù): 0
收起左側(cè)

PS2鼠標解析

[復(fù)制鏈接]
ID:105323 發(fā)表于 2016-2-12 20:53 | 顯示全部樓層 |閱讀模式
  標準的PS/2鼠標支持下面的輸入X左右位移,Y上下位移,左鍵、中鍵和右鍵。鼠標以一個固定的頻率讀取這些輸入并更新不同的計數(shù)器然后標記出反映的移動和按鍵狀態(tài),而Microsoft的Intellimouse它既支持標準輸入也支持滾輪和兩個附加的按鍵。
  標準的PS/2鼠標發(fā)送位移和按鍵信息給主機采用如下的3字節(jié)數(shù)據(jù)包格式:
  鼠標有4個模式:Reset、Stream、Remote、Wrap,各個模式具體的介紹詳見《PS2技術(shù)參考》一文,通常我們使用Stream模式,即一旦鼠標檢測到位移或發(fā)現(xiàn)一個或多個鼠標鍵的狀態(tài)改變了,就發(fā)送位移數(shù)據(jù)包數(shù)據(jù)報告的最大速率被認為是采樣速率。參數(shù)的范圍從10采樣點/秒到200采樣點/秒。這個參數(shù)的缺省值是100采樣點/秒,主機可以用設(shè)置采樣速率0xF3命令來改變它Stream模式是操作的缺省模式。
  微軟的Intellimouse工作起來象標準的PS/2鼠標(也就是使用3字節(jié)位移數(shù)據(jù)包,和標準PS/2鼠標一樣回應(yīng)所有命令,報告設(shè)備ID0x00)。要進入滾輪模式,主機應(yīng)該發(fā)送如下的命令序列:  
Set sample rate 200
Set sample rate 100
Set sample rate 80
  主機然后應(yīng)該發(fā)布“獲得設(shè)備ID”命令(0xF2)并等待回應(yīng)。如果安裝的是是標準PS/2鼠標(非Intellimouse),它回應(yīng)設(shè)備ID0x00。在這種情況下,主機回辨認出實際這個設(shè)備沒有滾輪并繼續(xù)把它當(dāng)作是標準PS/2鼠標。但是,如果安裝的是微軟的Intellimouse,它返回的ID是0x03。這就告訴主機掛接的定點設(shè)備有滾輪并且主機認為鼠標使用4字節(jié)的位移數(shù)據(jù)包:
  Z位移是2的補碼表示滾輪的自上次數(shù)據(jù)報告以來的位移,有效值的范圍在-8到+7這意味著數(shù)值實際只有低四位;高四位僅用作符號擴展位。

命令集具體介紹詳見《PS2技術(shù)參考》一文:
#definePS2_RESET          0XFF //復(fù)位命令 回應(yīng)0XFA
#defineRESEND             0XFE //再次發(fā)送
#define SET_DEFAULT        0XF6 //使用默認設(shè)置 回應(yīng)0XFA
#define DIS_DATA_REPORT     0XF5 //禁用數(shù)據(jù)報告 回應(yīng)0XFA
#defineEN_DATA_REPORT      0XF4 //使能數(shù)據(jù)報告 回應(yīng)0XFA
#defineSET_SAMPLE_RATE     0XF3 //設(shè)置采樣速率 回應(yīng)0XFA
#defineGET_DEVICE_ID       0XF2 //得到設(shè)備ID   回應(yīng)0XFA+ID
#defineSET_REMOTE_MODE     0XF0 //設(shè)置到REMOTE模式 回應(yīng)OXFA
#defineSET_WRAP_MODE       0XEE //設(shè)置到WRAP模式 回應(yīng)0XFA
#defineRST_WRAP_MODE       0XEC //回到WRAP之前的模式 回應(yīng)0XFA
#defineREAD_DATA           0XEB //讀取數(shù)據(jù) 回應(yīng)0XFA+位移數(shù)據(jù)包
#defineSET_STREAM_MODE     0XEA //設(shè)置到STREAM模式 回應(yīng)0XFA
#defineSTATUS_REQUEST      0XE9 //請求得到狀態(tài) 回應(yīng)0XFA+3個字節(jié)
#defineSET_RESOLUTION      0XE8 //設(shè)置分辨率 回應(yīng)OXFA+讀取1個字節(jié)+再回應(yīng)0XFA
#defineSET_SCALING21       0XE7 //設(shè)置縮放比率為2:1 回應(yīng)0XFA
#defineSET_SCALING11       0XE6 //設(shè)置縮放比率為1:1 回應(yīng)0XFA

   

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表