Por exemplo, no meu xterm para obter:
000
: Ctrl+Space ou Ctrl+@
001
: Ctrl+A
002
: Ctrl+B
003
: Ctrl+C
004
: Ctrl+D
005
: Ctrl+E
006
: Ctrl+F
007
: Ctrl+G
008
: Ctrl+H
009
: Ctrl+I ou Tab
010
: Ctrl+J ou Ctrl+M ou Enter
011
: Ctrl+K
012
: Ctrl+L
013
: não consigo encontrar nenhum.
014
: Ctrl+N
015
: Ctrl+O
016
: Ctrl+P
017
: Ctrl+Q
018
: Ctrl+R
019
: Ctrl+S
020
: Ctrl+T
021
: Ctrl+U
022
: Ctrl+V
023
: Ctrl+W
024
: Ctrl+X
025
: Ctrl+Y
026
: Ctrl+Z
027
: Ctrl+[ ou Esc
028
: Ctrl+\
029
: Ctrl+]
030
: Ctrl+^
031
: Ctrl+_ ou Ctrl+/
Os caracteres de 032
até 127
, inclusive, podem ser impressos, mas há alguns que podem ser referidos de várias maneiras usando Ctrl, Shiftou Altou uma combinação deles.
Depois, há personagens de 128
algo que não conheço.
Roteiro de teste:
#!/usr/bin/env python3
import curses
import os
def main(stdscr):
curses.raw()
while True:
stdscr.addstr(0, 0, str(stdscr.getch()))
stdscr.refresh()
if __name__ == "__main__":
os.environ.setdefault('ESCDELAY', '0')
curses.wrapper(main)