Как фиксировать нажатия клавиш?

Я хотел бы сделать простую консольную игру Erlang. Мне нужно управлять своей машиной в этой игре нажатием клавиши - клавиша вверх или клавиша W. Есть ли способ сделать это? Я читал, что в библиотеке wx есть такая возможность, но я ищу что-то простое, и, на мой взгляд, библиотека wx избыточна. Я хочу получить событие, а не символ из стандартного ввода.

РЕДАКТИРОВАТЬ:

Хорошо, я выбрал ncurses и cecho в качестве библиотеки Erlang для этого.


person bkowalikpl    schedule 13.12.2013    source источник


Ответы (2)


Я знаю только 2 способа сделать это: gs и wx.

gs немного проще, но в первой строке документации есть предупреждение о том, что gs не рекомендуется для нового приложения, вместо этого используйте wx :o)

wx не так сложен, но его документация очень бедна и просто ссылается на wxWidget. по крайней мере, есть демо (демо, судоку, xrc...), которые помогают начать что-то строить. И как только вам удастся заставить свои первые панели и сайзеры работать, очень просто получить реакцию на нажатия клавиш или события мыши. Моя главная трудность заключалась в том, чтобы отображать графические объекты быстро и достаточно плавно, даже если в конце это всего лишь несколько строк кода (несколько десятков).

наконец, консоль erlang предназначена для оценки выражения erlang, поэтому нет никаких шансов, что вы сможете зафиксировать простое событие и управлять отображением в этой среде (по крайней мере, с разумными усилиями).

person Pascal    schedule 14.12.2013

Вы можете попробовать изучить модули group и user_drv kernel, но они оба имеют недокументированный интерфейс и могут быть изменены в любой будущей версии Erlang/OPT. Вы также можете создать свой собственный драйвер или NIF для обработки termios настроек и реализовать свою собственную реализацию.

Кстати, я бы определенно остановился на wx.

person Hynek -Pichi- Vychodil    schedule 14.12.2013