Как считывать информацию о прокрутке колеса с / 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. Последний байт будет содержать информацию о колесе.

  • Зачем использовать методы модуля os для Python вместо выполнения команд оболочки напрямую?
  • Как удалить предварительный просмотр камеры до малины pi
  • Установка модулей python на Ubuntu
  • что делает --enable-optimizations делать при компиляции python?
  • Ошибка установки программы
  • Python os.fork OSError: Невозможно выделить память (но память не проблема)
  • Кросс-платформенный подпроцесс со скрытым окном
  • Библиотека Python для управления процессами Linux
  • Python - лучший язык программирования в мире.