<div><span class="searchword0">You want to use:</span></div>
<div><span class="searchword0"></span> </div>
<div><span class="searchword0">&gt; main = do hSetBuffering</span> stdin NoBuffering; c &lt;- getChar<br></div>
<div>Your problem is that by default, POSIX environments use line buffering on stdin queuing up until it sees a carriage return before sending it to the process. Which is in this case, your code.</div>
<div> </div>
<div>-Edward Kmett</div>
<div><br><br> </div>
<div class="gmail_quote">On Tue, Mar 31, 2009 at 3:38 PM, Andrew Coppin <span dir="ltr">&lt;<a href="mailto:andrewcoppin@btinternet.com">andrewcoppin@btinternet.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">I ran the following program:<br><br>&gt;module Main where<br>&gt;<br>&gt;main = do<br>&gt;  putStrLn &quot;Key&quot;<br>
&gt;  c &lt;- getChar<br>&gt;  print c<br>&gt;  main<br><br>Unfortunately, it doesn&#39;t do what I was hoping. Specifically, it only returns any data when I hit [return]. It also seems to be giving me a command history somehow. Special keys (e.g., arrow keys, backspace, escape) don&#39;t get through to the application.<br>
<br>I&#39;m trying to write a program that uses individual keys as commands. What&#39;s the correct way to get this to work?<br><br>_______________________________________________<br>Haskell-Cafe mailing list<br><a href="mailto:Haskell-Cafe@haskell.org" target="_blank">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br></blockquote></div><br>