]> gitweb.factorcode.org Git - factor.git/commitdiff
Key-logger demo
authorDoug Coleman <doug.coleman@gmail.com>
Tue, 25 May 2010 02:19:32 +0000 (21:19 -0500)
committerDoug Coleman <doug.coleman@gmail.com>
Tue, 25 May 2010 03:59:24 +0000 (22:59 -0500)
extra/key-logger/authors.txt [new file with mode: 0644]
extra/key-logger/deploy.factor [new file with mode: 0644]
extra/key-logger/key-logger.factor [new file with mode: 0644]

diff --git a/extra/key-logger/authors.txt b/extra/key-logger/authors.txt
new file mode 100644 (file)
index 0000000..7c1b2f2
--- /dev/null
@@ -0,0 +1 @@
+Doug Coleman
diff --git a/extra/key-logger/deploy.factor b/extra/key-logger/deploy.factor
new file mode 100644 (file)
index 0000000..f265164
--- /dev/null
@@ -0,0 +1,15 @@
+USING: tools.deploy.config ;
+H{
+    { deploy-name "key-logger" }
+    { deploy-ui? f }
+    { deploy-c-types? f }
+    { deploy-console? f }
+    { deploy-unicode? f }
+    { "stop-after-last-window?" t }
+    { deploy-io 3 }
+    { deploy-reflection 1 }
+    { deploy-word-props? f }
+    { deploy-math? t }
+    { deploy-threads? t }
+    { deploy-word-defs? f }
+}
diff --git a/extra/key-logger/key-logger.factor b/extra/key-logger/key-logger.factor
new file mode 100644 (file)
index 0000000..471c86c
--- /dev/null
@@ -0,0 +1,35 @@
+! Copyright (C) 2010 Doug Coleman.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors alarms bit-arrays calendar game.input io
+io.binary io.encodings.binary io.files kernel literals math
+namespaces system threads ;
+IN: key-logger
+
+CONSTANT: frequency $[ 1/30 seconds ]
+
+CONSTANT: path "resource:key-log.txt"
+
+: update-key-caps-state ( -- )
+    read-keyboard keys>>
+    path binary [
+        [ gmt unix-1970 time- duration>nanoseconds >integer ]
+        [ bit-array>integer ] bi*
+        [ 8 >be write ] bi@ flush
+    ] with-file-appender ;
+
+SYMBOL: key-logger
+
+: start-key-logger ( -- )
+    key-logger get-global [
+        [
+            open-game-input
+            [ update-key-caps-state ] frequency every key-logger set-global
+        ] in-thread
+    ] unless ;
+
+: stop-key-logger ( -- )
+    key-logger get-global [ stop-alarm ] when*
+    f key-logger set-global
+    close-game-input ;
+
+MAIN: start-key-logger