How can I catch key combinations like ALT+K or CTRL+ALT+H in python curses
?
Asked
Active
Viewed 5,462 times
8

kdopen
- 8,032
- 7
- 44
- 52

pistacchio
- 56,889
- 107
- 278
- 420
1 Answers
12
A terminal converts the control key in combination with a letter key to a normal ASCII code. This can be read from the getch() function like any other key press.
CTRL-A: getch() returns 1
CTRL-B: getch() returns 2
...
CTRL-Z: getch() returns 26
Also, the keypad() function must be called to enable other special function keys (e.g. left arrow, F1, home, etc).
I don't believe there is a portable way to receive meta-keys (e.g. ALT-H) through a terminal. Some send an escape (0x1B) followed by the modified key while others set the high-bit and only send one byte.

Judge Maygarden
- 26,961
- 9
- 82
- 99