Skip to content

Instantly share code, notes, and snippets.

@ecmendenhall
Created May 9, 2013 02:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ecmendenhall/5545237 to your computer and use it in GitHub Desktop.
Save ecmendenhall/5545237 to your computer and use it in GitHub Desktop.
A keypress listener using Jline and Clojure futures.
(ns keylistener.core
(:require [clojure.java.io :as io])
(:import [jline.console ConsoleReader])
(:gen-class))
(def console (ConsoleReader.))
(defn keypress-loop []
(let [char (.readCharacter console)]
(if (not (nil? char))
char
(recur))))
(defn main-thread [n listener]
(println n)
(Thread/sleep 500)
(if (future-done? listener)
(do (println (str "You pressed char: " @listener))
(recur (inc n) (future (keypress-loop))))
(recur (inc n) listener)))
(defn -main [& args]
(let [listener (future (keypress-loop))]
(main-thread 0 listener)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment