Выход из программы python с использованием evdev InputDevice приводит к ошибке - PullRequest
1 голос
/ 01 апреля 2020

Я экспериментирую с контроллером в качестве устройства ввода, используя evdev. Когда я выхожу из программы, я получаю сообщение об ошибке, в котором говорится, что для метода удаления (super) требуется хотя бы один аргумент. Я посмотрел, но мы не смогли найти решение, чтобы справиться с этим должным образом.

Программа:

# import evdev
from evdev import InputDevice, categorize, ecodes

# creates object 'gamepad' to store the data
# you can call it whatever you like
gamepad = InputDevice('/dev/input/event5')

# prints out device info at start
print(gamepad)

# evdev takes care of polling the controller in a loop
for event in gamepad.read_loop():
    # filters by event type
    if event.type == ecodes.EV_KEY and event.code == 308:
        break
    if event.type == ecodes.EV_ABS and event.code == 1:
        print(event.code, event.value)
    if event.type == ecodes.EV_ABS and event.code == 0:
        print(event.code, event.value)
    # print(categorize(event))
    if event.type == ecodes.EV_KEY:
        print(event.code, event.value)

Когда я использую указанный ключ c, я вырываю l oop, что приводит к этому сообщению об ошибке:

Exception TypeError: TypeError('super() takes at least 1 argument (0 given)',) in <bound method InputDevice.__del__ of InputDevice('/dev/input/event5')> ignored

То же самое происходит, когда я выхожу, используя ^C. Любые идеи, как правильно обработать выход?

...