Вот приложение "немедленное эхо", использующее JLine, которое будет печатать int
s, соответствующие зарегистрированным нажатиям клавиш, структурированным как Leiningen проект:
project.clj
(defproject con "1.0.0-SNAPSHOT"
:description "FIXME: write"
:main con.core
:dependencies [[org.clojure/clojure "1.1.0"]
[org.clojure/clojure-contrib "1.1.0"]
[jline "0.9.94"]])
src/con/core.clj
:
(ns con.core
(:import jline.Terminal)
(:gen-class))
(defn -main [& args]
(let [term (Terminal/getTerminal)]
(while true
(println (.readCharacter term System/in)))))
Соответствующая функциональность обеспечивается классом jline.Terminal
, который предоставляет статический метод getTerminal
, возвращающий экземпляр специфичного для платформы подкласса, который можно использовать для взаимодействия с терминалом. См. Javadoc для получения более подробной информации.
Посмотрим, как выглядит asdf
...
$ java -jar con-1.0.0-SNAPSHOT-standalone.jar
97
115
100
102
( C-c все еще убивает приложение, конечно.)