[Haskell-cafe] Re: Trapping getChar before echo

Tim Attwood timothyea at comcast.net
Mon Feb 1 20:47:00 EST 2010

> Last time I tried something like this [on Windows], it didn't seem to 
> work. I wanted to trap arrow keys and so forth, but they seem to be being 
> used for input history. (I.e., pressing the up-arrow produces 
> previously-entered lines of text, and none of this appears to be reaching 
> the Haskell program itself.) Has this changed since I tried it last year?

Doesn't work in windows, at least up till 6.10.1. There's a work-around 

{-# LANGUAGE ForeignFunctionInterface #-}

import Data.Char
import Control.Monad (liftM, forever)
import Foreign.C.Types

getHiddenChar = liftM (chr.fromEnum) c_getch
foreign import ccall unsafe "conio.h getch"
  c_getch :: IO CInt

main = do
   forever $ do
      c <- getHiddenChar
      putStrLn $ show (fromEnum c) 

More information about the Haskell-Cafe mailing list