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

2024-05-17 02:35:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道Linux在/dev/input/mice中提供了一个9位2的补充数据。我还知道,您可以通过/dev/hidraw0获取这些数据,其中HID raw是您的USB设备,提供来自HID的原始数据。我知道发送的数据是移动(位移)的增量,而不是位置。通过By,我还可以通过“cat/dev/input/mice”查看乱七八糟的数据。我的问题是:

你能用Python语言告诉我如何读取这些数据吗?我真的更喜欢用简单的整数表示的数据。但事实证明这很难。真正的问题是读取该死的数据。有没有办法读取位元并做位元运算?(目前我不担心根用户相关的问题。请假定脚本在根目录下运行。)

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


Tags: 数据dev语言input原始数据rawbylinux
3条回答

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

因此,下面是我要从“deprecated”'/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();

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

Python还支持所有典型的按位算术操作:移位、反转、按位and、or、xor和not等

不过,最好使用库来处理这些数据,而不是自己处理。

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

相关问题 更多 >