]> gitweb.factorcode.org Git - factor.git/blob - extra/key-logger/key-logger.factor
endian: replaces io.binary and io.binary.fast.
[factor.git] / extra / key-logger / key-logger.factor
1 ! Copyright (C) 2010 Doug Coleman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors timers bit-arrays calendar endian game.input io
4 io.encodings.binary io.files kernel literals math namespaces
5 system threads ;
6 IN: key-logger
7
8 CONSTANT: frequency $[ 1/30 seconds ]
9
10 CONSTANT: path "resource:key-log.txt"
11
12 : update-key-caps-state ( -- )
13     read-keyboard keys>>
14     path binary [
15         [ now unix-1970 time- duration>nanoseconds >integer ]
16         [ bit-array>integer ] bi*
17         [ 8 >be write ] bi@ flush
18     ] with-file-appender ;
19
20 SYMBOL: key-logger
21
22 : start-key-logger ( -- )
23     key-logger get-global [
24         [
25             open-game-input
26             [ update-key-caps-state ] frequency every key-logger set-global
27         ] in-thread
28     ] unless ;
29
30 : stop-key-logger ( -- )
31     key-logger get-global [ stop-timer ] when*
32     f key-logger set-global
33     close-game-input ;
34
35 MAIN: start-key-logger