4 installHandler keyboardSignal (Catch doCtrlC) Nothing >>
5 getTerminalAttributes stdInput >>= \ ta ->
6 case (controlChar ta Interrupt) of
11 putStr "Oops...no interrupt character?\nI can fix that...\n" >>
12 setTerminalAttributes stdInput (withCC ta (Interrupt, '\ETX')) Immediately >>
13 getTerminalAttributes stdInput >>= \ ta ->
14 case (controlChar ta Interrupt) of
15 Nothing -> putStr "...Then again, maybe I can't\n"
22 awaitSignal Nothing >>
23 putStr "How did I get here?\n"
26 putStr "Caught an interrupt.\n"
31 | otherwise = ['^', (toEnum (fromEnum x + fromEnum '@'))]