Подтвердить что ты не робот

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

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


Esc - 27


Alt + A - 27 65


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

4b9b3361

Ответ 1

Решено:

  • Использовать режим noecho или timeout
  • Проверьте код 27 (ALT или ESC)... если pass:
  • попробуйте прочитать другой код.
  • если другой код ERR, то.. у вас есть клавиша ESC другим способом, у вас есть ALT + другой код.

Ответ 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)