Clojureでクリップボードを使うのは簡単にできます。
clipboard.clj
(ns use-clipboard.core
(:import [java.awt Toolkit]
[java.awt.datatransfer Clipboard DataFlavor StringSelection]))
(def ^Clipboard clip (.getSystemClipboard (Toolkit/getDefaultToolkit)))
(defn get-string []
(when (.isDataFlavorAvailable clip DataFlavor/stringFlavor)
(.getData clip DataFlavor/stringFlavor)))
(defn get-filelist []
(when (.isDataFlavorAvailable clip DataFlavor/javaFileListFlavor)
(.getData clip DataFlavor/javaFileListFlavor)))
(defn set-string [s]
(let [ss (StringSelection. (print-str s))]
(.setContents clip ss ss)))
上記get-string
ではjava.lang.String
が返り、get-filelist
ではjava.util.List<java.io.File>
が返ります。
Excelのセルをコピーしたものもget-string
で取れるので何かと便利です。
上記には実装してませんが、他にもImage(コピーしている画像)を取得したり、クリップボードの変化の監視ができたりするようです。