diff --git a/src/fd.cpp b/src/fd.cpp index 6cd8118..e2b9be1 100644 --- a/src/fd.cpp +++ b/src/fd.cpp @@ -155,7 +155,10 @@ static int get_key_material_raw(const char * whom, bool again, bool newkey, uint caught_interrupt = 0; act.sa_handler = [](auto sig) { caught_interrupt = sig; - fputs("^C\n", stderr); + + struct termios cur; + tcgetattr(0, &cur); + fprintf(stderr, "%s^%c\n", (cur.c_cc[VINTR] & 0x80) ? "M-" : "", ((cur.c_cc[VINTR] & 0x7F) == 0x7F) ? '?' : ('@' + (cur.c_cc[VINTR] & 0x7F))); }; sigaction(SIGINT, &act, &osigint);