如何读出从/ dev /输入/鼠标滚轮的信息?(How to read out scroll whe

2019-08-20 07:55发布

对于家庭机器人项目,我需要读出原始鼠标移动信息。 我部分使用python脚本从成功这个这个所谓的答案 。 它基本上读出的/ dev /输入/小鼠和十六进制输入转换成整数:

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) )

while True:
  getMouseEvent()
file.close()

这工作得很好,除了事实滚轮信息丢失。 有谁知道我怎样才能得到(最好使用Python)从/ dev /输入/鼠标滚轮的信息?

[编辑]好吧,虽然我没读出的/ dev /输入/老鼠,我想我找到了解决办法。 我刚刚发现的了evdev模块(须藤PIP安装了evdev),您可以读出输入事件。 我现在有下面的代码:

from evdev import InputDevice
from select import select
dev = InputDevice('/dev/input/event3') # This can be any other event number. On my Raspi it turned out to be event0
while True:
    r,w,x = select([dev], [], [])
    for event in dev.read():
        # The event.code for a scroll wheel event is 8, so I do the following
        if event.code == 8:
            print(event.value)

现在我要测试这对我raspi,看看它是如何工作。 感谢所有的灵感球员和女孩!

Answer 1:

如果只有在的/ dev /输入/小鼠每事件的3个字节,这意味着鼠标被配置为无轮PS / 2鼠标。 如果你将鼠标配置为IMPS / 2鼠标,应该在每一个事件的/ dev /输入/小鼠的第四个字节。 最后一个字节将包含车轮信息。



文章来源: How to read out scroll wheel info from /dev/input/mice?