使用Python获取鼠标增量!(在Linux中)

cu6pst1q  于 9个月前  发布在  Linux
关注(0)|答案(5)|浏览(95)

我知道Linux从/dev/input/mice中提供了一个9位的two's complement数据,我还知道你可以通过/dev/hidraw 0获得这些数据,其中hidraw是你的USB设备,从HID中提供原始数据。
我知道发送的数据是移动的增量(位移)而不是位置。顺便说一句,我还可以通过“猫/开发/输入/鼠标”查看胡言乱语的数据。
通过使用Python语言,我如何读取这些数据?我真的宁愿以简单的整数形式获得数据。但事实证明这很难。真正的问题是阅读该死的数据。有没有一种方法可以读取位并进行位算术?(目前我不担心与 root 用户相关的问题。请假设脚本以 root 运行。)
(My主要参考是http://www.computer-engineering.org/ps2mouse/

ve7v8dk2

ve7v8dk21#

我在一个基本的设备上,无法访问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();

字符串

rjjhvcjd

rjjhvcjd2#

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

icnyk63a

icnyk63a3#

是的,Python可以读取二进制格式的文件。只要在打开文件时使用'b'标志,例如open('dev/input/mice', 'rb')
Python还支持所有典型的按位算术运算:移位、求逆、按位与、或、异或、非等。
不过,使用库来处理这些数据可能会更好,而不是自己处理。

daolsyd0

daolsyd04#

您需要以root身份打开编辑器,以绕过尝试运行此脚本时可能遇到的 * 权限相关的错误消息 *。
/dev/input/mice设备仅对 root 可用。

ruarlubt

ruarlubt5#

您可以使用evdev包。根据文档,该包与/dev/input/一起操作,并具有许多功能,例如永久读取输入,读取一个输入,写入事件等。Usage

相关问题