Как считывать информацию о прокрутке колеса с / dev / input / mice?

Для проекта домашней робототехники мне нужно зачитать информацию о движении мыши. Я частично преуспел в этом, используя скрипт python из этого SO-ответа . Он в основном считывает / 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) ) while True: getMouseEvent() file.close() 

Это отлично работает, за исключением того факта, что отсутствует информация о колесе прокрутки. Кто-нибудь знает, как я могу получить (предпочтительно с python) информацию о колесе прокрутки от / dev / input / mice?

[EDIT] Хорошо, хотя мне не удалось прочитать / 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) 

Теперь я собираюсь проверить это на моем распи и посмотреть, как это работает. Спасибо за все вдохновенные парни и девушки!

One Solution collect form web for “Как считывать информацию о прокрутке колеса с / dev / input / mice?”

Если у вас есть только 3 байта на событие в / dev / input / mice, это означает, что ваша мышь сконфигурирована как мышь PS / 2 без колесика. Если вы сконфигурируете мышь в качестве мыши IMPS / 2, для каждого события должен быть четвертый байт в / dev / input / mice. Последний байт будет содержать информацию о колесе.

  • убить процесс с помощью python
  • MPRIS + Python (dbus): свойства чтения и записи
  • Как упаковать файлы python, которые я использую, чтобы я мог распространять их с моим приложением и иметь как можно меньше зависимостей
  • Потерял важный .py-файл (перезаписан в виде 0-байтного файла), но старая версия все еще загружена в IPYTHON в качестве модуля - может ли она быть восстановлена?
  • Python - whoops - установлен Python2.6, когда у меня есть 2.7 - по умолчанию теперь 2.6 - хочу 2.7 назад
  • Библиотека Python Exchange ActiveSync
  • Связывание обратных вызовов для минимизации и максимизации событий в окнах Toplevel
  • Аргументы Пихарма и sys.argv
  • Python - лучший язык программирования в мире.