PS2 mouse在不同系統下傳輸資料格式?
根據Host系統不同,PS2 Mouse支援不同的功能模式,分別爲3Key Mode和5Key
Mode。Host下傳命令0XF3後接著下傳Sample Rate資料,Device可通過Sample Rate資料來判斷是3Key
Mode還是5Key Mode。
1. 5Key Mode 利用SONIX PS2 Lib平臺開發的産品在Win2000/XP/Vista下支援3D5Key,即爲5Key Mode,具體資料格式如下所示:

Byte1:
Bit[2:0]中右左按鍵位元,支援多按鍵同時按下,“1”爲對應按鍵按下,“0”爲按鍵釋放;
Bit[3]始終爲“1”,當爲“0”時上傳數據PS2口會abortion;
Bit[5:4]X、Y位移符號位元,這兩位元代表PS2 實際上傳X、Y資料的最高位元(符號位元);
Bit[7:6]X、Y溢出標志位元,一般不用考慮,默認爲“0”。
Byte2:
X方向位移,根據實際Sensor的方向做必要的取反操作,該操作影響Byte1[4];
Byte3:
Y方向位移,根據實際Sensor的方向做必要的取反操作,該操作影響Byte1[5];
Byte4:
Bit[3:0]滾輪上傳資料,範圍爲-8~+7,前翻爲0x0F,後翻爲0x01;
Bit[5:4]4Key、5Key按鍵位元,“1”表示對應按鍵按下,“0”對應按鍵釋放;
Bit[7:6]數據位元保留,默認爲“0”。
2. 3Key Mode 利用SONIX PS2 Lib平臺開發的産品在Win98下支援3D3Key,即爲3Key Mode,具體資料格式如下所示:

以上資料格式Byte1~Byte3同5Key Mode,Byte4有不同。
Byte4: 滾輪有效位仍爲低四位,範圍爲-8~+7,高四位元只作數據符號擴展位元。但是滾輪上翻時上傳資料爲0xFF,滾輪下翻時數據應爲0x01。
那麽具體User是如何判斷3Key還是5Key Mode呢?我們可以在U+P Lib中通過mouse_id來判斷是哪種模式,當mouse_id = 3(或ID_3KEY) 表示 3Key Mode;當mouse_id = 4(或ID_5KEY)表示 5Key Mode,User可以根據mouse_id來决定Byte4具體上傳什麽資料 。
1. 5Key Mode 利用SONIX PS2 Lib平臺開發的産品在Win2000/XP/Vista下支援3D5Key,即爲5Key Mode,具體資料格式如下所示:
Byte1:
Bit[2:0]中右左按鍵位元,支援多按鍵同時按下,“1”爲對應按鍵按下,“0”爲按鍵釋放;
Bit[3]始終爲“1”,當爲“0”時上傳數據PS2口會abortion;
Bit[5:4]X、Y位移符號位元,這兩位元代表PS2 實際上傳X、Y資料的最高位元(符號位元);
Bit[7:6]X、Y溢出標志位元,一般不用考慮,默認爲“0”。
Byte2:
X方向位移,根據實際Sensor的方向做必要的取反操作,該操作影響Byte1[4];
Byte3:
Y方向位移,根據實際Sensor的方向做必要的取反操作,該操作影響Byte1[5];
Byte4:
Bit[3:0]滾輪上傳資料,範圍爲-8~+7,前翻爲0x0F,後翻爲0x01;
Bit[5:4]4Key、5Key按鍵位元,“1”表示對應按鍵按下,“0”對應按鍵釋放;
Bit[7:6]數據位元保留,默認爲“0”。
2. 3Key Mode 利用SONIX PS2 Lib平臺開發的産品在Win98下支援3D3Key,即爲3Key Mode,具體資料格式如下所示:
以上資料格式Byte1~Byte3同5Key Mode,Byte4有不同。
Byte4: 滾輪有效位仍爲低四位,範圍爲-8~+7,高四位元只作數據符號擴展位元。但是滾輪上翻時上傳資料爲0xFF,滾輪下翻時數據應爲0x01。
那麽具體User是如何判斷3Key還是5Key Mode呢?我們可以在U+P Lib中通過mouse_id來判斷是哪種模式,當mouse_id = 3(或ID_3KEY) 表示 3Key Mode;當mouse_id = 4(或ID_5KEY)表示 5Key Mode,User可以根據mouse_id來决定Byte4具體上傳什麽資料 。