@warezzzok
Эникей :(

Как\чем отследить нажатие клавиш стрелок и тп?

Здравствуйте.
Мне нужно каким-то образом отслеживать нажатие стрелок и в зависимости от нажатой клавиши посылать в порт комманду.
Когда-то давно, делал подобное на VB через winAPI, сейчас использую Debian - такой вариант не катит.

1) Нашел способ через
tty.setcbreak(sys.stdin)
ord(sys.stdin.read(1))

Но после этих строк, консоль, в которой запускаеся программа просто сходит с ума и не приходит в себя даже после окончания работы программы. Скорее всего, я то-то не так делаю, но вменяемого описания этих функций я не нашел - просто скопировал из какого-то примера.
К тому же, sys.stdin.read(1) при нажатии стрелки выдает 3-байтовый код, я не понял, как сделать его обработку т.к код выдается в виде
XX
YY
ZZ

В 1 строку не получается выводить.
Повтыкал в 1,5 найденых в гугле примера, забил, начал искать другие варианты.

2) Нашел примеры с использованием pygame, понравилось, разобрался, оказалось все довольно просто, однако, не могу найти нормальную документацию по ней (может быть подскажете что почитать, можно и на англ, но лучше, если переведена).
Дело в том, что весь функционал pygame мне не нужен, надо только разбор работы с клавишами.

Может есть какие-то более простые инструменты?

P.S. А можно как-то скрыть окно программы во время работы, которое создается
pygame.display.set_mode( ((0, 0)), т.к мне графическая часть не нужна?
  • Вопрос задан
  • 4231 просмотр
Пригласить эксперта
Ответы на вопрос 2
i0ngunn3r
@i0ngunn3r
Какое приложение, консольное, с графикой?
С помощью curses (stdscr.getch()) пробовали?
Ответ написан
Комментировать
@warezzzok Автор вопроса
Эникей :(
Приложение для управления машинкой по вайфай - ловит нажатие кнокпки, шлет через сокет код комманды, на том конце серверная часть кидает в уарт байты контроллеру движков. В принципе, на pygame уже сделал, правда при инициализации открывается окошко, которое должно быть в фокусе. В сущности, можно оставить и так - сделаю какую-нить анимацию туда потом, если не лень будет.

curses (stdscr.getch()) не пробовал - не знал о ней. Попробую, спасибо Вам за совет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы