ブラウザの Javascript を有効にして下さい。
This site requires your browser to be JavaScript enabled.

マウスの製作 ③改良編

CPIが低下する問題

Mouse Testerでの検証時で発見した、マウスを素早く動かすとCPIが低下する問題を改良します。

検証時に立てた仮説

マイコン側ではPMW3360から取得した16bitのマウスの移動量を8bitに丸めてレポートを作成しており、素早く移動したら移動量が-127~127を超えてしまってCPIが低くなることが直接の原因

を検証してみます。

修正方針

デバッグしたところ、やはりマウスを素早く動かしたときに丸め処理が発生していました。
レポートディスクリプタの移動量の8bitの変数を16bitに変更します。

レポートディスクリプタ

以下の通りHIDのレポートディスクリプタ定義のX, Yの移動量を16bitに変更します。


	 :
	0x09, 0x30,        //       USAGE (X)
	0x09, 0x31,        //       USAGE (Y)
	0x15, 0x81,        //       LOGICAL_MINIMUM (-127)
	0x25, 0x7f,        //       LOGICAL_MAXIMUM (127)
	0x75, 0x08,        //       REPORT_SIZE (8)
	0x95, 0x02,        //       REPORT_COUNT (2)
	 :

	 :
	0x09, 0x30,        //       USAGE (X)
	0x09, 0x31,        //       USAGE (Y)
	0x16, 0x01, 0x80,  //       LOGICAL_MINIMUM (-32767)
	0x26, 0xff, 0x7f,  //       LOGICAL_MAXIMUM (32767)
	0x75, 0x10,        //       REPORT_SIZE (16)
	0x95, 0x02,        //       REPORT_COUNT (2)
	 :

LOGICAL_MINIMUMの値は-32768(0x00, 0x80)でも問題ありません。
普通に使う範囲では±32767には到達しないので、左右対象,上下対象にしたいかどうかですね。

検証

Mouse Testerでマウスを素早く動かしてもCPIが低くならず、1300で一定になることを確認できました。