使用Python获取鼠标三angular洲! (在Linux中)

我知道Linux从/ dev / input / mouse中发出一个9位2的恭维数据。 我也知道你可以通过/ dev / hidraw0获取数据,其中hidraw是你的USB设备从HID发出的原始数据。 我知道发送的数据是运动的三angular洲(位移),而不是位置。 通过我还可以通过“cat / dev / input / mice”查看乱码数据。 我的问题是:

你能告诉我用Python语言怎么读取这些数据? 我真的喜欢用简单的整数来获取这些数据。 但事实certificate很难。 真正的问题是阅读该死的数据。 有没有办法读取位和做算术? (目前我不担心与root用户有关的问题,请假定脚本是以root身份运行的。)

(我的主要参考是http://www.computer-engineering.org/ps2mouse/ )

Solutions Collecting From Web of "使用Python获取鼠标三angular洲! (在Linux中)"

我在一个基本的设备上,没有访问X或…所以event.py不起作用。

所以这里是我更简单的解码代码部分来解释“不赞成”的“/ dev / input / mice”:

import struct file = open( "/dev/input/mice", "rb" ); def getMouseEvent(): buf = file.read(3); button = ord( buf[0] ); bLeft = button & 0x1; bMiddle = ( button & 0x4 ) > 0; bRight = ( button & 0x2 ) > 0; x,y = struct.unpack( "bb", buf[1:] ); print ("L:%d, M: %d, R: %d, x: %d, y: %d\n" % (bLeft,bMiddle,bRight, x, y) ); # return stuffs while( 1 ): getMouseEvent(); file.close(); 

来自输入系统的数据以结构形式出现,而不是简单的整数。 我相信,鼠标设备已被弃用。 首选的方法是事件设备接口,也可以获得鼠标(和其他)输入事件。 我写了一些这样的代码, Event.py模块可以使用它,或从那里开始。

是的,Python可以以二进制形式读取文件。 打开文件时只需使用'b'标志,例如open('dev/input/mice', 'rb')

Python还支持所有典型的按位运算操作:移位,反转,按位和,或异或,等等。

尽管如此,你可能会更好地使用库来处理这些数据,而不是自己做。