September Morn Update
This commit is contained in:
parent
4e2d22a71d
commit
aac6731f2c
6856 changed files with 141342 additions and 21127 deletions
|
|
@ -0,0 +1,26 @@
|
|||
import Control.Concurrent (threadDelay)
|
||||
import Control.Monad (when)
|
||||
import System.IO (hFlush, stdout)
|
||||
import System.Posix
|
||||
|
||||
-- If the file descriptor is associated with a terminal, then flush its input,
|
||||
-- otherwise do nothing.
|
||||
termFlush :: Fd -> IO ()
|
||||
termFlush fd = do
|
||||
isTerm <- queryTerminal fd
|
||||
when isTerm $ discardData fd InputQueue
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
putStrLn "Type some stuff...\n"
|
||||
threadDelay $ 3 * 1000000
|
||||
putStrLn "\n\nOk, stop typing!\n"
|
||||
threadDelay $ 2 * 1000000
|
||||
|
||||
termFlush stdInput
|
||||
|
||||
putStr "\n\nType a line of text, ending with a newline: "
|
||||
hFlush stdout
|
||||
line <- getLine
|
||||
putStrLn $ "You typed: " ++ line
|
||||
termFlush stdInput
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
use Term::termios;
|
||||
|
||||
constant $saved = Term::termios.new( :fd($*IN.native-descriptor) ).getattr;
|
||||
constant $termios = Term::termios.new( :fd($*IN.native-descriptor) ).getattr;
|
||||
|
||||
# set some modified input flags
|
||||
$termios.unset_iflags(<BRKINT ICRNL ISTRIP IXON>);
|
||||
$termios.unset_lflags(< ECHO ICANON IEXTEN>);
|
||||
$termios.setattr(:DRAIN);
|
||||
|
||||
# reset terminal to original settings on exit
|
||||
END { $saved.setattr(:NOW) }
|
||||
|
||||
|
||||
# Sleep for a few seconds to give you time to fill the input buffer,
|
||||
# type a bunch of random characters.
|
||||
sleep 2;
|
||||
|
||||
# ------- The actual task --------
|
||||
# Flush the input buffer
|
||||
|
||||
$termios.setattr(:FLUSH);
|
||||
|
||||
# --------------------------------
|
||||
|
||||
# Ctrl-C to exit
|
||||
loop {
|
||||
# Read up to 5 bytes from STDIN
|
||||
# F5 through F12 are 5 bytes each
|
||||
my $keypress = $*IN.read: 5;
|
||||
# print the ordinals of the keypress character
|
||||
print $keypress.decode.ords;
|
||||
print "|";
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue