9

如何从 Clojure 中的终端(不是 Swing)读取单个按键?

我尝试了一些东西,包括各种 版本的 JLine 库,但没有让它工作(见下面的例子)。

我很乐意接受一个工作的、仅适用于 Unix 的(Mac、Linux、...)示例。理想情况下,我想知道如何关闭标准输入和标准输出的缓冲。

这是接近的东西:

;; project.clj dependencies:
;; [[org.clojure/clojure "1.4.0"]
;;  [jline/jline "2.8"]])

(ns slosh.core
  (:import [jline.console ConsoleReader])
  (:gen-class))    

(defn -main []
  (println "start")
  (let [cr (ConsoleReader.)]
    (.readCharacter cr)
    (println "done")))

这将打印“开始”,但不响应除 control-C 之外的任何输入。

4

2 回答 2

6

我不确定你是如何运行它的,但如果你使用lein run,你会遇到问题。尝试使用lein trampoline run.

我会在 java/clojure 中链接单字符控制台输入, 但我似乎没有足够的 Internet 点来做到这一点。

于 2012-11-18T02:54:49.897 回答
2

也许也看看clojure-lanterna

于 2012-11-18T19:17:08.293 回答