Por exemplo, no meu xterm para obter:
000 : Ctrl + Espaço 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 separador
010 : Ctrl + J ou Ctrl + M < strong> ou Digite
011 : Ctrl + K
012 : Ctrl + L
013 : não é possível 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 + /
Caracteres de 032 a 127 , inclusive, são todos imprimíveis, mas há alguns que podem ser referenciados de várias maneiras usando Ctrl , Shift ou Alt ou uma combinação desses.
Depois, há caracteres de 128 para algo que não sei.
Script 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)