NCurses и ESC, ALT ключи - PullRequest
11 голосов
/ 12 мая 2011

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


Esc - 27


Доп. + A - 27 65


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

Ответы [ 3 ]

15 голосов
/ 27 апреля 2013

Вот пример для 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)
7 голосов
/ 28 июня 2012

Разрешено:

  1. Использовать режим noecho или timeout
  2. Проверьте код 27 ( ALT или ESC ) ... если пройдено:
  3. попробуйте прочитать другой код
  4. если другой код - ERR, тогда .. у вас есть ESC ключ, иначе у вас есть ALT + другой код
0 голосов
/ 12 марта 2019
...