NCurses и ESC, клавиши ALT

У меня проблема с NCurses... мне нужно обрабатывать все ключи, как Esc, Alt+F etc. Проблема в том, что коды похожи... я.е:


Esc - 27


Alt+A - 27 65


в качестве примера есть двойной код Alt+[key] комбинации, что как to Esc ключ... Есть идеи, как с этим справиться?

2 ответов


вот пример для python:

key = self.screen.getch()
if key == ord('q'): # quit
    go = False
elif key == 27: # Esc or Alt
    # Don't wait for another key
    # If it was Alt then curses has already sent the other key
    # otherwise -1 is sent (Escape)
    self.screen.nodelay(True)
    n = self.screen.getch()
    if n == -1:
        # Escape was pressed
        go = False
    # Return to delay
    self.screen.nodelay(False)

решен:

  1. используйте noecho или режим тайм-аута
  2. проверить на 27 (ALT или ESC код)... если пройти:
  3. попробуйте прочитать следующий код
  4. если другой код ошибается, то.. у вас есть ESC ключ другим способом у вас есть ALT+еще один код