Вопрос или проблема
Я использую плагин Python Inputs для создания комбинаций клавиш на моем ноутбуке с Windows. По какой-то причине работает только ввод с контроллера, а клавиатура – нет. Она распознается, когда я запускаю
for device in devices:
print(device)
но когда я запускаю
from __future__ import print_function
from inputs import get_key
def main():
"""Просто выводите информацию о событиях, когда нажимают клавиши."""
while 1:
events = get_key()
if events:
for event in events:
print(event.ev_type, event.code, event.state)
if __name__ == "__main__":
main()
я ничего не получаю, ни одна из кнопок не выводит код/состояние события, но версия для контроллера работает.
Я пробовал каждую строчку кода, найденную онлайн, которая использует “get_key” или какую-либо вариацию, которую я могу адаптировать для использования get_key. Я пытался как с встроенной клавиатурой, так и с USB-клавиатурой. Этот плагин просто слишком стар на данный момент? Есть ли другой метод, который я мог бы использовать? Большое спасибо.
Ответ или решение
Вопрос: Не работает детектор клавиатуры в плагине Inputs для Python
Вы столкнулись с проблемой, когда библиотека Inputs не считывает нажатия клавиш с клавиатуры, хотя контроллер успешно работает. Давайте подробно разберем возможные причины этой проблемы и предложим пути её решения.
Основные шаги при помощи библиотеки Inputs
-
Убедитесь, что библиотека установлена правильно:
Убедитесь, что у вас установлена последняя версия библиотеки Inputs. Для установки или обновления используйте команду:pip install inputs --upgrade
-
Проверка устройств:
Как вы уже упомянули, вы можете просмотреть обнаруженные устройства, выполнив следующий код:from inputs import get_key, devices for device in devices: print(device)
Убедитесь, что ваша клавиатура отображается в списке устройств. Если она присутствует, библиотека видит её, но это не гарантирует корректную передачу событий нажатий клавиш.
-
Использование get_key:
Если вы используетеget_key()
и не получаете никаких событий от клавиатуры, возможно, это связано с тем, что библиотека APIs не поддерживает определённые функции или ваше устройство не правильно конфигурировано для считывания событий клавиатуры.
Возможные решения
-
Поддержка ОС и версии Python:
Убедитесь, что вы используете совместимую версию Python и Windows. Библиотека может не поддерживать некоторые особенности Windows или имеет ограничения по совместимости с различными версиями Python. -
Привилегии:
Если ваше приложение не выполняется с достаточными правами, это может препятствовать сбору событий. Попробуйте запустить вашу программу от имени администратора. -
Замена библиотеки:
Если вышеуказанные шаги не решают вашу проблему, возможно, стоит рассмотреть смену технологии. Вам подойдут следующие альтернативные библиотеки:- Pygame: Это библиотека для разработки игр, но она также идеально подходит для отслеживания событий клавиатуры и контроллеров.
import pygame pygame.init() while True: for event in pygame.event.get(): if event.type == pygame.KEYDOWN: print("Key Pressed: ", event.key)
-
Keyboard: Эта библиотека позволяет отслеживать события клавиатуры более эффективно. Пример использования:
import keyboard def on_key_event(event): print(f"Key: {event.name}, State: {event.event_type}") keyboard.hook(on_key_event) keyboard.wait() # Держит программу активной
- Pygame: Это библиотека для разработки игр, но она также идеально подходит для отслеживания событий клавиатуры и контроллеров.
Заключение
Ваша проблема с детекцией клавиатуры в библиотеке Inputs может зависеть от нескольких факторов, включая поддержку устройства и конфигурацию окружения. Мы рекомендуем попробовать альтернативные библиотеки, если проблема не будет разрешена. Если у вас есть дополнительные вопросы, не стесняйтесь обращаться за помощью.
Спасибо за ваше внимание, и надеюсь, что данная информация будет вам полезна.