[英]How to read out scroll wheel info from /dev/input/mice?
对于家庭机器人项目,我需要读出原始鼠标移动信息。 通过使用此SO-answer中的python脚本,我部分成功了。 它基本上读出/ dev / input / mice并将hex-input转换为整数:
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 / input / mice的滚轮信息?
[编辑]好的,虽然我没有设法读出/ dev / input / mice,但我认为我找到了解决方案。 我刚刚找到了evdev模块(sudo pip install 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上测试它,看看它是如何工作的。 感谢所有的灵感男人和女孩!
如果/ dev / input / mice中每个事件只有3个字节,则表示您的鼠标配置为无轮PS / 2鼠标。 如果将鼠标配置为IMPS / 2鼠标,则每个事件的/ dev / input / mice中应该有第四个字节。 最后一个字节将包含车轮信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.